@inherits LocalizableComponentBase @code { string menuToggle = "hidden"; bool isPersonaMenuOpen; string PersonaBackground => CascadingState.Persona?.Header is { Length: > 0 } header && !header.Contains("/missing-") ? $"background-image:linear-gradient(to left, var(--color-base-100) 55%, transparent), url('{header}');" : null; // 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() { IsLoading = false; if (!CascadingState.Status.IsMobileMedia()) menuToggle = default; } async Task SwitchPersona(string personaId) { var result = await CascadingState.SwitchPersona(personaId); if (result.IsInvalid) Toast.AddResponseError(result); } 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); // } } }