diff --git a/Directory.Packages.props b/Directory.Packages.props index be7a12fe..4036f69f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -119,7 +119,7 @@ - + diff --git a/src/ZB.MOM.WW.ScadaBridge.CentralUI/wwwroot/css/site.css b/src/ZB.MOM.WW.ScadaBridge.CentralUI/wwwroot/css/site.css index 7f1b1fef..0ff58715 100644 --- a/src/ZB.MOM.WW.ScadaBridge.CentralUI/wwwroot/css/site.css +++ b/src/ZB.MOM.WW.ScadaBridge.CentralUI/wwwroot/css/site.css @@ -120,19 +120,26 @@ --card: #25282d; --ink: #e6e8ec; --ink-soft: #9aa0aa; - --ink-faint: #6b727c; + --ink-faint: #a8b0bc; --rule: #33373e; --rule-strong: #3a3f46; /* Accent — lightened for contrast on dark */ - --accent: #4d7fe8; - --accent-deep: #7aa0ef; + --accent: #7aa0ef; + --accent-deep: #9dbaf6; + --accent-tint: #1e2640; + --accent-border: #566d9c; + --accent-focus: #a7c1ff; + --on-accent: #111827; - /* Status — foregrounds unchanged (inherently visible on dark) */ + /* Status — signal colors are retained; text uses the readable inks below. */ --ok: #40b856; --warn: #f0a030; --bad: #f05050; --idle: #7a8290; + --ok-ink: #8ada96; + --bad-ink: #ff9d9d; + --idle-ink: #c3cad5; /* Status — tinted backgrounds (dark surface tints) */ --ok-bg: #1a2e1e; @@ -149,17 +156,18 @@ --bad-border-soft: #44201e; /* Warning ink — brightened amber for dark contrast */ - --warn-ink: #d4891a; - --warn-ink-deep: #b8741a; + --warn-ink: #efbd63; + --warn-ink-deep: #efbd63; - /* Info tint */ + /* Semantic information stays blue, independent of product accent. */ + --info-ink: #b4c6ff; --info-bg: #1a2240; --info-border: #2a3660; /* Neutral surface washes */ --zebra-bg: #202328; --hover-bg: #2a2e38; - --active-bg: #1e2640; + --active-bg: var(--accent-tint); /* Bootstrap bridge tokens */ --bs-body-bg: var(--paper); @@ -171,6 +179,21 @@ --sb-backdrop: rgba(0, 0, 0, 0.6); } +/* Supported-dark Bootstrap adapter: secondary actions use host surface inks. */ +[data-bs-theme="dark"] .btn-outline-secondary { + --bs-btn-color: var(--ink-soft); + --bs-btn-border-color: var(--ink-soft); + --bs-btn-hover-color: var(--card); + --bs-btn-hover-bg: var(--ink-soft); + --bs-btn-hover-border-color: var(--ink-soft); + --bs-btn-active-color: var(--card); + --bs-btn-active-bg: var(--ink-soft); + --bs-btn-active-border-color: var(--ink-soft); + --bs-btn-disabled-color: var(--ink-soft); + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: var(--ink-soft); +} + /* ── Rail pending-updates indicator ────────────────────────────────────── Sits in .rail-foot just above .rail-user. One line when quiet, two when something is pending; tokens only so dark mode follows for free. */ diff --git a/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Pages/NotificationReportDetailModalTests.cs b/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Pages/NotificationReportDetailModalTests.cs index 50b6cf43..fabd071f 100644 --- a/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Pages/NotificationReportDetailModalTests.cs +++ b/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Pages/NotificationReportDetailModalTests.cs @@ -143,7 +143,7 @@ public class NotificationReportDetailModalTests : BunitContext /// Verifies that close button, dismisses modal. [Fact] - public void CloseButton_DismissesModal() + public async Task CloseButton_DismissesModal() { var cut = Render(); cut.WaitForState(() => cut.Markup.Contains("Pump fault at Plant-A")); @@ -154,8 +154,7 @@ public class NotificationReportDetailModalTests : BunitContext cut.WaitForState(() => cut.FindAll(".modal.show").Count > 0); - var closeButton = cut.Find(".modal.show .modal-footer button"); - closeButton.Click(); + await cut.InvokeAsync(() => cut.Find(".modal.show .modal-footer button").Click()); cut.WaitForAssertion(() => Assert.Empty(cut.FindAll(".modal.show"))); }