feat: add account settings page with theme choice

This commit is contained in:
Jannis committed 2026-10-10 18:45:26 +02:00
1 parent cb70a2f0a6
commit c04fa1df44
3 files changed
+37

No files matched your search

@@ -16,6 +16,9 @@
<MudText Typo="Typo.caption">@string.Join(", ", RolesOf(auth.User))</MudText>
</div>
<MudDivider />
<MudMenuItem Icon="@Icons.Material.Filled.Settings" OnClick="@(() => Navigation.NavigateTo("konto/einstellungen"))">
Meine Einstellungen
</MudMenuItem>
<MudMenuItem Icon="@Icons.Material.Filled.Password" OnClick="@(() => Navigation.NavigateTo("konto/passwort"))">
Passwort ändern
</MudMenuItem>
@@ -0,0 +1,26 @@
@page "/konto/einstellungen"
@inject ThemeState Theme
<PageTitle>Meine Einstellungen – Familienplaner</PageTitle>
<MudText Typo="Typo.h4" HtmlTag="h1" Class="mb-4">Meine Einstellungen</MudText>
<MudPaper Outlined="true" Class="pa-4 fp-account-settings" Style="max-width: 640px">
<MudText Typo="Typo.h6" HtmlTag="h2" Class="mb-2">Darstellung</MudText>
<MudRadioGroup T="ThemePreference" Value="Theme.Preference" ValueChanged="OnThemeChangedAsync" Class="fp-theme-choice">
<MudRadio T="ThemePreference" Value="ThemePreference.System" Color="Color.Primary">Wie das Gerät</MudRadio>
<MudRadio T="ThemePreference" Value="ThemePreference.Light" Color="Color.Primary">Hell</MudRadio>
<MudRadio T="ThemePreference" Value="ThemePreference.Dark" Color="Color.Primary">Dunkel</MudRadio>
</MudRadioGroup>
<MudDivider Class="my-4" />
<MudText Typo="Typo.h6" HtmlTag="h2" Class="mb-2">Benachrichtigungen</MudText>
<MudText Typo="Typo.body2" Class="mb-2">Erinnerungen auf diesem Gerät ein- oder ausschalten.</MudText>
<MudButton Href="konto/benachrichtigungen" Variant="Variant.Outlined" Color="Color.Primary" Class="fp-settings-notifications"
StartIcon="@Icons.Material.Filled.Notifications">Benachrichtigungen einstellen</MudButton>
</MudPaper>
@code {
private Task OnThemeChangedAsync(ThemePreference preference) => Theme.SetPreferenceAsync(preference);
}
@@ -45,4 +45,12 @@ public sealed class ThemeState(IJSRuntime js)
await js.InvokeVoidAsync("familyPlanner.theme.save", Preference.ToString());
Changed?.Invoke();
}
/// <summary>Setzt die Wahl ausdrücklich (System/Hell/Dunkel) und speichert sie lokal.</summary>
public async Task SetPreferenceAsync(ThemePreference preference)
{
Preference = preference;
await js.InvokeVoidAsync("familyPlanner.theme.save", Preference.ToString());
Changed?.Invoke();
}
}