@using DeepDrftPublic.Client.Controls @using DeepDrftPublic.Client.Controls.AudioPlayerBar @using DeepDrftPublic.Client.Services @using DeepDrftPublic.Client.Common @using DeepDrftShared.Client.Common @using Microsoft.AspNetCore.Components @inherits LayoutComponentBase @implements IDisposable
@Body
An unhandled error has occurred. Reload 🗙
@code { private const string DarkModeKey = "darkMode"; private bool _isDarkMode = true; private PersistingComponentStateSubscription _persistingSubscription; [Inject] public required PersistentComponentState PersistentState { get; set; } [Inject] public required DarkModeSettings DarkModeSettings { get; set; } protected override void OnInitialized() { base.OnInitialized(); // Restore persisted dark mode state (from server prerender) if (PersistentState.TryTakeFromJson(DarkModeKey, out var restored)) { _isDarkMode = restored; DarkModeSettings.IsDarkMode = restored; } else { _isDarkMode = DarkModeSettings.IsDarkMode; } // Register to persist state when prerendering completes _persistingSubscription = PersistentState.RegisterOnPersisting(PersistDarkMode); // Palettes + typography live in DeepDrftShared.Client.Common.DeepDrftPalettes // so the CMS host can reuse them. We wrap into ThemeManagerTheme to keep // the MudBlazor.ThemeManager integration intact. _themeManager = new ThemeManagerTheme { Theme = DeepDrftPalettes.Default, }; } private ThemeManagerTheme _themeManager; public bool _themeManagerOpen = false; void OpenThemeManager(bool value) { _themeManagerOpen = value; } void UpdateTheme(ThemeManagerTheme value) { _themeManager = value; StateHasChanged(); } // Theme wrapper class for CSS targeting private string ThemeWrapperClass => _isDarkMode ? "deepdrft-theme-dark" : "deepdrft-theme-light"; private Task PersistDarkMode() { PersistentState.PersistAsJson(DarkModeKey, _isDarkMode); return Task.CompletedTask; } public void Dispose() { _persistingSubscription.Dispose(); } }