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
+28 -4
View File
@@ -5,6 +5,7 @@
@inject IHolidayService HolidayService
@inject ISnackbar Snackbar
@inject AuthenticationStateProvider AuthStateProvider
@inject IJSRuntime JSRuntime
<PageTitle>KW @_kw Wochenübersicht Timetracker</PageTitle>
@@ -20,7 +21,7 @@ else
<MudStack Spacing="3">
@* ── Wochen-Header ── *@
<MudPaper Elevation="4" Class="pa-5 rounded-xl"
<MudPaper Elevation="4" Class="pa-5 rounded-xl onboarding-week-header"
Style="background: #1E293B; color: white;">
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween">
<MudIconButton Icon="@Icons.Material.Filled.ChevronLeft"
@@ -93,7 +94,7 @@ else
else
{
@* ── Arbeitstag: vollständige Karte ── *@
<MudCard @key="@day.Date" Elevation="@(isToday ? 6 : 2)" Class="rounded-xl"
<MudCard @key="@day.Date" Elevation="@(isToday ? 6 : 2)" Class="rounded-xl onboarding-day-card"
Style="@($"border-left: 4px solid {borderColor};")">
<MudCardHeader Style="@(isToday ? "background: linear-gradient(90deg, rgba(14,165,233,0.07) 0%, transparent 100%);" : "")">
<CardHeaderContent>
@@ -269,7 +270,7 @@ else
}
@* ── Wochensumme ── *@
<MudPaper Elevation="4" Class="pa-5 rounded-xl"
<MudPaper Elevation="4" Class="pa-5 rounded-xl onboarding-week-summary"
Style="background: #0F172A; color:white;">
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2" Class="mb-4">
<MudIcon Icon="@Icons.Material.Filled.Summarize" Style="color:rgba(255,255,255,0.8)" />
@@ -306,7 +307,7 @@ else
</MudPaper>
@* ── Gleitzeitkonto ── *@
<MudPaper Elevation="3" Class="pa-5 rounded-xl"
<MudPaper Elevation="3" Class="pa-5 rounded-xl onboarding-overtime-balance"
Style="@($"border-left: 6px solid {(_totalOvertime >= TimeSpan.Zero ? "#4CAF50" : "#FF9800")};")">
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Wrap="Wrap.Wrap" Spacing="3">
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
@@ -328,6 +329,11 @@ else
</MudPaper>
</MudStack>
@if (_showOnboarding)
{
<OnboardingTour OnFinished="HandleOnboardingFinished" />
}
}
@code {
@@ -347,6 +353,7 @@ else
private TimeSpan _totalOvertime;
private Dictionary<DateOnly, string> _holidays = [];
private int _holidayYear = -1;
private bool _showOnboarding;
private bool IsCurrentWeek => _monday == GetMonday(DateOnly.FromDateTime(DateTime.Today));
@@ -364,9 +371,26 @@ else
await Task.WhenAll(loadWeekTask, overtimeTask);
_totalOvertime = await overtimeTask;
try
{
var showOnb = await JSRuntime.InvokeAsync<string>("localStorage.getItem", "showOnboarding");
_showOnboarding = showOnb == "true";
}
catch
{
// Ignored during prerendering/SSR
}
_loading = false;
}
private async Task HandleOnboardingFinished()
{
_showOnboarding = false;
await JSRuntime.InvokeVoidAsync("localStorage.setItem", "showOnboarding", "false");
}
private async Task LoadWeek()
{
Task<List<PublicHoliday>> holidaysTask;