@using EnvelopeGenerator.Server.Client.Services @inherits LayoutComponentBase @implements IDisposable @inject ThemeService ThemeService
@Body
@code { [Inject] IHttpClientFactory HttpClientFactory { get; set; } = default!; private Action? _themeChangeHandler; protected override async Task OnInitializedAsync() { await FontLoader.LoadFonts(HttpClientFactory, ["opensans.ttf"]); _themeChangeHandler = () => InvokeAsync(StateHasChanged); ThemeService.OnChange += _themeChangeHandler; await base.OnInitializedAsync(); } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) await ThemeService.InitializeAsync(); } private async Task OnToggleDarkMode() => await ThemeService.ToggleDarkModeAsync(); private async Task OnThemeChanged(ChangeEventArgs e) { var value = e.Value?.ToString(); if (!string.IsNullOrEmpty(value)) await ThemeService.SetThemeAsync(value); } public void Dispose() => ThemeService.OnChange -= _themeChangeHandler; }