Files
RpgRoller/RpgRoller/Components/Pages/Workspace.razor
2026-05-04 22:11:20 +02:00

60 lines
1.9 KiB
Plaintext

@using RpgRoller.Components.Pages.HomeControls
<div class="@AppCssClass">
<p class="sr-only" aria-live="polite">@State.LiveAnnouncement</p>
@if (State.HasHealthIssue)
{
<section class="health-banner" role="alert">
<div>
<strong>API currently unavailable.</strong>
<p>@State.HealthIssueMessage</p>
</div>
<button type="button" @onclick="Session.RetryAfterHealthIssueAsync">Retry</button>
</section>
}
<div class="workspace-shell">
@if (HasSessionInitialized)
{
<AppHeader
User="State.User"
ShowCampaign="@ShowCampaignInHeader"
CampaignName="@State.SelectedCampaignName"
ShowConnectionState="@ShowConnectionStateInHeader"
ConnectionStateLabel="@State.ConnectionStateLabel"
ConnectionStateCssClass="@State.ConnectionStateCssClass"
IsMenuOpen="State.IsScreenMenuOpen"
MenuButtonId="workspace-screen-menu-button"
MenuId="workspace-screen-menu"
MenuItems="HeaderMenuItems"
ToggleMenuRequested="ToggleScreenMenu"
LogoutRequested="Session.LogoutAsync"/>
}
else
{
<main class="management-screen">
<section class="card">
<p class="empty">Loading workspace...</p>
</section>
</main>
}
@if (ChildContent is not null)
{
@ChildContent(PageContext)
}
</div>
@if (State.Toasts.Count > 0)
{
<div class="toast-stack" aria-live="polite" aria-atomic="false">
@foreach (var toast in State.Toasts)
{
<div class="toast @(toast.IsError ? "error" : "success")" role="status">
<p>@toast.Message</p>
</div>
}
</div>
}
</div>