Add finalized navigation menu (F3)

- Dashboard link (all authenticated users)
- Spieltage, Personen (club-specific, require selected club)
- Stammdaten with Kostenvorlagen (ClubEditor+)
- Administration section with Vereine/Benutzer (SuperAdmin)
- Profile link for authenticated users

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
beo3000 2025-12-25 16:43:12 +01:00
parent 579db4640b
commit 245940b40e
1 changed files with 53 additions and 10 deletions

View File

@ -1,23 +1,54 @@
@inherits FluxorComponent
@using Koogle.Web.Store.ClubState
@inherits FluxorComponent
@inject IState<AuthState> AuthState
@inject IState<ClubState> ClubState
@inject NavigationManager NavigationManager
<MudNavMenu>
@* Dashboard - visible to all authenticated users *@
<MudNavLink Href="/"
Match="NavLinkMatch.All"
Icon="@Icons.Material.Filled.Dashboard">
Dashboard
</MudNavLink>
@if (AuthState.Value.IsAuthenticated && HasSelectedClub)
{
@* Club-specific navigation - requires selected club *@
<MudNavLink Href="/days"
Match="NavLinkMatch.Prefix"
Icon="@Icons.Material.Filled.CalendarMonth">
Spieltage
</MudNavLink>
<MudNavLink Href="/persons"
Match="NavLinkMatch.Prefix"
Icon="@Icons.Material.Filled.Groups">
Personen
</MudNavLink>
@if (AuthState.Value.IsClubEditor || AuthState.Value.IsSuperAdmin)
{
<MudNavGroup Title="Stammdaten"
Icon="@Icons.Material.Filled.Settings"
Expanded="false">
<MudNavLink Href="/expenses"
Match="NavLinkMatch.Prefix"
Icon="@Icons.Material.Filled.Receipt">
Kostenvorlagen
</MudNavLink>
</MudNavGroup>
}
}
@if (AuthState.Value.IsClubEditor || AuthState.Value.IsSuperAdmin)
{
@* // Tage und Auswertungen des ausgewählten Vereins *@
<MudDivider Class="my-2" />
<MudNavGroup Title="Administration"
Icon="@Icons.Material.Filled.AdminPanelSettings"
Expanded="false">
@* // Stammdaten des ausgewählten Vereins *@
@* // mandantenübergreifende Verwaltung *@
@if (AuthState.Value.IsSuperAdmin)
{
<MudNavLink Href="/admin/clubs"
@ -31,11 +62,23 @@
Benutzer
</MudNavLink>
}
</MudNavGroup>
}
<MudDivider Class="my-2" />
@* Profile - visible to all authenticated users *@
@if (AuthState.Value.IsAuthenticated)
{
<MudNavLink Href="/profile"
Match="NavLinkMatch.Prefix"
Icon="@Icons.Material.Filled.Person">
Profil
</MudNavLink>
}
</MudNavMenu>
@code {
private bool HasSelectedClub => ClubState.Value.SelectedClub != null ||
AuthState.Value.CurrentUser?.ClubMemberships?.Any(c => c.IsDefault) == true;
}