Onboarding

This commit is contained in:
MarcWieland
2026-06-09 00:22:30 +02:00
parent ddb2b4af9f
commit 94c10aebdd
8 changed files with 316 additions and 10 deletions
@@ -5,6 +5,9 @@
@inject IHolidayService HolidayService
@inject ISnackbar Snackbar
@inject AuthenticationStateProvider AuthStateProvider
@inject IJSRuntime JSRuntime
@inject NavigationManager Nav
<PageTitle>Einstellungen Timetracker</PageTitle>
@@ -187,6 +190,33 @@ else
</MudCard>
</MudItem>
@* ── Hilfe & Einführung ── *@
<MudItem xs="12" md="6">
<MudCard Elevation="3" Class="rounded-xl h-100">
<MudCardHeader>
<CardHeaderContent>
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
<MudIcon Icon="@Icons.Material.Filled.HelpOutline" Color="Color.Primary" />
<MudText Typo="Typo.h6" Style="font-weight:600">Hilfe & Einführung</MudText>
</MudStack>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent>
<MudStack Spacing="4">
<MudText Typo="Typo.body2" Color="Color.Secondary">
Wenn du die interaktive Einführung (Onboarding Tour) noch einmal sehen möchtest, kannst du sie hier zurücksetzen und neu starten.
</MudText>
<MudButton Variant="Variant.Outlined" Color="Color.Primary"
StartIcon="@Icons.Material.Filled.PlayCircleOutline"
OnClick="RepeatOnboarding"
Style="max-width:250px;">
Onboarding wiederholen
</MudButton>
</MudStack>
</MudCardContent>
</MudCard>
</MudItem>
</MudGrid>
@* ── Speichern-Button ── *@
@@ -578,6 +608,20 @@ else
Snackbar.Add("Feiertag entfernt", Severity.Info);
}
private async Task RepeatOnboarding()
{
try
{
await JSRuntime.InvokeVoidAsync("localStorage.setItem", "showOnboarding", "true");
Snackbar.Add("Onboarding zurückgesetzt. Leite weiter zur Startseite...", Severity.Info);
Nav.NavigateTo("/");
}
catch (Exception ex)
{
Snackbar.Add($"Fehler beim Zurücksetzen des Onboardings: {ex.Message}", Severity.Error);
}
}
private static string FormatHours(double hours)
{
var ts = TimeSpan.FromHours(hours);