feat(centralui): rebrand web UI to ScadaBridge + technical-light theme

Rename the user-facing product name from ScadaLink to ScadaBridge across
the six display strings (browser title, sidebar brand, login + not-authorized
headings, dashboard welcome/subtitle). Namespaces, assemblies, config keys,
and _content/ScadaLink.CentralUI asset routes are unchanged.

Apply the technical-light design system: vendor theme.css + IBM Plex fonts
into the CentralUI RCL, include theme.css globally (after Bootstrap so its
--bs-* token overrides win), and restyle the layout chrome to a light
sidebar — white surface, hairline rules, ink text, accent-blue active item,
the brand accent mark. Page markup stays Bootstrap and inherits the warm
paper background, Plex type, accent, and hairline borders via the tokens.

Tests: build 0 warnings; bUnit 542 passed; Playwright 64 passed.
This commit is contained in:
Joseph Doherty
2026-05-22 07:03:46 -04:00
parent b628b869fa
commit b07f43a308
14 changed files with 416 additions and 27 deletions

View File

@@ -21,7 +21,7 @@ public class LoginTests
await page.GotoAsync(PlaywrightFixture.BaseUrl);
Assert.Contains("/login", page.Url);
await Expect(page.Locator("h4")).ToHaveTextAsync("ScadaLink");
await Expect(page.Locator("h4")).ToHaveTextAsync("ScadaBridge");
await Expect(page.Locator("#username")).ToBeVisibleAsync();
await Expect(page.Locator("#password")).ToBeVisibleAsync();
await Expect(page.Locator("button[type='submit']")).ToHaveTextAsync("Sign In");

View File

@@ -17,8 +17,9 @@ public class NavigationTests
{
var page = await _fixture.NewAuthenticatedPageAsync();
// The nav sidebar should be visible with the brand
await Expect(page.Locator(".brand")).ToHaveTextAsync("ScadaLink");
// The nav sidebar should be visible with the brand. ToContainText, not
// ToHaveText: the brand also carries the accent mark glyph (▮).
await Expect(page.Locator(".brand")).ToContainTextAsync("ScadaBridge");
// The nav should contain "Dashboard" link (exact match to avoid "Health Dashboard")
await Expect(page.GetByRole(AriaRole.Link, new() { Name = "Dashboard", Exact = true })).ToBeVisibleAsync();
}

View File

@@ -73,11 +73,11 @@ public class ComponentRenderingTests : BunitContext
}
[Fact]
public void LoginPage_RendersScadaLinkTitle()
public void LoginPage_RendersScadaBridgeTitle()
{
var cut = Render<Login>();
var title = cut.Find("h4.card-title");
Assert.Equal("ScadaLink", title.TextContent);
Assert.Equal("ScadaBridge", title.TextContent);
}
}