@inherits LocalizableComponentBase @code { string menuToggle = "hidden"; // The toggle and the slider work on the variant that is showing; with system theming that is the OS's choice. bool IsDark => CascadingState.Status.IsDarkTheme(); short ThemeIndexColour => IsDark ? CascadingState.PublicCacheData.PageSettings.DarkThemeIndexColour : CascadingState.PublicCacheData.PageSettings.LightThemeIndexColour; protected override void OnInitialized() { if (!CascadingState.Status.IsMobileMedia()) menuToggle = default; } private void ToggleNavMenu() { menuToggle = menuToggle is { Length: > 0 } ? default : "hidden"; } protected async Task ResetToOriginalColour() { var isDark = IsDark; await CascadingState.UpdatePageSettings(settings => settings.SetHue(isDark, isDark ? PageSettings.DefaultDarkThemeIndexColour : PageSettings.DefaultLightThemeIndexColour)); // if (AuthData?.User != null) // { // AuthData.User.UserSettings.ThemeIndexColour = ThemeIndexColour; // await Storage.SetItemAsync(nameof(AuthData), AuthData); // } } // Picking a hue also leaves the grey themes, which otherwise ignore it. protected async Task UpdateThemeColour(short indexColour) { var isDark = IsDark; await CascadingState.UpdatePageSettings(settings => settings.SetHue(isDark, indexColour)); // if (AuthData?.User != null) // { // AuthData.User.UserSettings.ThemeIndexColour = ThemeIndexColour; // await Storage.SetItemAsync(nameof(AuthData), AuthData); // } } // Choosing light or dark here leaves system theming; Settings can turn it back on. protected async Task UpdateThemeDarkMode(bool isDarkMode) { await CascadingState.UpdatePageSettings(settings => settings.SetDarkMode(isDarkMode)); // if (AuthData?.User != null) // { // AuthData.User.UserSettings.ThemeIsDarkMode = ThemeIsDarkMode; // await Storage.SetItemAsync(nameof(AuthData), AuthData); // } } }