Files
6d486f49 ffaab59585 ...
2026-09-09 17:19:03 -04:00

109 lines
3.5 KiB
Plaintext

@inject AuthService Auth
@inject NetworkStatusService NetworkStatus
@implements IDisposable
<div class="top-row ps-3 pe-3 navbar navbar-dark">
<div class="container-fluid d-flex align-items-center justify-content-between p-0">
<a class="navbar-brand" href="">
<i class="bi bi-hourglass-split me-2 text-warning"></i> Chrono CCG
</a>
<div class="d-flex align-items-center gap-2">
<NetworkStatusChip/>
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</div>
</div>
<div class="@NavMenuCssClass nav-scrollable" @onclick="ToggleNavMenu">
<nav class="nav flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="home">
<i class="bi bi-house-door-fill nav-icon"></i> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<i class="bi bi-collection-fill nav-icon"></i> Cards
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="agents">
<i class="bi bi-people-fill nav-icon"></i> Agents
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="decks">
<i class="bi bi-journal-text nav-icon"></i> Decks
</NavLink>
</div>
@if (Auth.IsLoggedIn)
{
<div class="nav-item px-3">
<NavLink class="nav-link" href="my-decks">
<i class="bi bi-collection-play-fill nav-icon"></i> My Decks
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="deck-builder">
<i class="bi bi-hammer nav-icon"></i> Deck Builder
</NavLink>
</div>
}
<div class="nav-item px-3">
<NavLink class="nav-link" href="syndicates">
<i class="bi bi-diagram-2-fill nav-icon"></i> Syndicates
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="docs">
<i class="bi bi-book-fill nav-icon"></i> Docs
</NavLink>
</div>
@if (NetworkStatus.IsOnline)
{
<div class="nav-item px-3">
<NavLink class="nav-link" href="login">
<i class="bi @(Auth.IsLoggedIn ? "bi-person-check-fill text-success" : "bi-person-fill text-warning") nav-icon"></i>
@(Auth.IsLoggedIn ? Auth.CurrentUsername : "Login")
</NavLink>
</div>
}
</nav>
</div>
@code {
private bool collapseNavMenu = true;
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
protected override void OnInitialized()
{
NetworkStatus.StatusChanged += OnStateChanged;
Auth.AuthStateChanged += OnStateChanged;
}
private void OnStateChanged(bool isOnline)
{
InvokeAsync(StateHasChanged);
}
private void OnStateChanged()
{
InvokeAsync(StateHasChanged);
}
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
public void Dispose()
{
NetworkStatus.StatusChanged -= OnStateChanged;
Auth.AuthStateChanged -= OnStateChanged;
}
}