96bea1d478
Restyles the Blazor dashboard onto a portable token-based theme so it reads like an instrument panel: warm-paper background, hairline-ruled panels, IBM Plex type, monospace tabular numerics, and status carried by colour chips. Vendors theme.css + IBM Plex fonts, rewrites dashboard.css as a thin token-driven view layer, and swaps the Bootstrap navbar and status badges for the design-system app bar and chips. Also includes pending API-key management, Galaxy hierarchy projection, and constraint-enforcement work with their tests. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
49 lines
1.7 KiB
Plaintext
49 lines
1.7 KiB
Plaintext
@inherits LayoutComponentBase
|
|
@inject IOptions<GatewayOptions> GatewayOptions
|
|
|
|
<div class="dashboard-shell">
|
|
<header class="app-bar">
|
|
<a class="brand" href=""><span class="mark">▮</span> MXAccess Gateway</a>
|
|
<nav class="app-nav">
|
|
<NavLink href="" Match="NavLinkMatch.All">Overview</NavLink>
|
|
<NavLink href="sessions">Sessions</NavLink>
|
|
<NavLink href="workers">Workers</NavLink>
|
|
<NavLink href="events">Events</NavLink>
|
|
<NavLink href="galaxy">Galaxy</NavLink>
|
|
<NavLink href="apikeys">API Keys</NavLink>
|
|
<NavLink href="settings">Settings</NavLink>
|
|
</nav>
|
|
<span class="spacer"></span>
|
|
<AuthorizeView>
|
|
<Authorized Context="authState">
|
|
<div class="app-user">
|
|
<span class="meta">@authState.User.Identity?.Name</span>
|
|
<form method="post" action="@DashboardPath("/logout")">
|
|
<AntiforgeryToken />
|
|
<button class="btn btn-outline-secondary btn-sm" type="submit">Sign out</button>
|
|
</form>
|
|
</div>
|
|
</Authorized>
|
|
<NotAuthorized>
|
|
<a class="btn btn-outline-secondary btn-sm" href="@DashboardPath("/login")">Sign in</a>
|
|
</NotAuthorized>
|
|
</AuthorizeView>
|
|
</header>
|
|
<main class="page">
|
|
@Body
|
|
</main>
|
|
</div>
|
|
|
|
@code {
|
|
private string DashboardPath(string relativePath)
|
|
{
|
|
string pathBase = GatewayOptions.Value.Dashboard.PathBase.TrimEnd('/');
|
|
if (string.IsNullOrWhiteSpace(pathBase))
|
|
{
|
|
pathBase = "/dashboard";
|
|
}
|
|
|
|
return $"{pathBase}{relativePath}";
|
|
}
|
|
}
|