Unify play management and admin screens in workspace

This commit is contained in:
2026-02-26 18:30:29 +01:00
parent 52e3ae8b0f
commit 54aabc6d8c
6 changed files with 216 additions and 71 deletions

View File

@@ -76,8 +76,7 @@
</button>
</nav>
}
@if (IsManagementScreen)
else if (IsManagementScreen)
{
<CampaignManagementPanel
Campaigns="Campaigns"
@@ -96,6 +95,59 @@
EditCharacterRequested="OpenEditCharacterModal"
DeleteCharacterRequested="DeleteCharacterAsync"/>
}
else if (IsAdminScreen)
{
<main class="management-screen">
<section class="card">
<div class="section-head">
<h2>User Management</h2>
</div>
@if (IsAdminDataLoading)
{
<p class="empty">Loading users...</p>
}
else if (!IsCurrentUserAdmin)
{
<p class="empty">Admin role is required to manage users.</p>
}
else if (AdminUsers.Count == 0)
{
<p class="empty">No users found.</p>
}
else
{
<ul class="management-list">
@foreach (var user in AdminUsers)
{
<li>
<div>
<strong>@user.Username</strong>
<p class="muted">@user.DisplayName</p>
<p class="muted">Roles: @(user.Roles.Count == 0 ? "none" : string.Join(", ", user.Roles))</p>
</div>
<div class="skill-chip-actions">
<button type="button"
class="chip-button"
disabled="@(IsMutating || user.Id == User?.Id)"
@onclick="() => ToggleAdminRoleAsync(user)">
<span aria-hidden="true" class="emoji">🛡️</span>
<span class="sr-only">Toggle admin role for @user.Username</span>
</button>
<button type="button"
class="chip-button"
disabled="@(IsMutating || user.Id == User?.Id)"
@onclick="() => DeleteUserAsync(user)">
<span aria-hidden="true" class="emoji">🗑️</span>
<span class="sr-only">Delete user @user.Username</span>
</button>
</div>
</li>
}
</ul>
}
</section>
</main>
}
</div>
@if (Toasts.Count > 0)