Apply the theme from PageSettings in JS, before the first paint
wwwroot/js/theme.js now picks the theme. It sets data-theme (neo-light or neo-dark, or none when the OS decides) and the hue and chroma variables on <html>, using the same flag precedence as the old CascadingState branches. It also keeps <meta name="theme-color"> in sync. Because it runs in <head> from the settings saved in localStorage, a reload no longer flashes the default palette before Blazor boots. With system theming it also follows the OS when the colour scheme changes. CascadingState loses its ~200 lines of generated <style> and <Meta> tags. It now calls AppStatusService.ApplyTheme on load and whenever the settings change. The --fa-* icon colour variables are gone; nothing read them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
5b5fd62233
commit
8e03d12a3e
4 files changed
+64
-203
No files matched your search
@@ -1,4 +1,6 @@
|
||||
using Microsoft.JSInterop;
|
||||
using decePubClient.Models;
|
||||
|
||||
using Microsoft.JSInterop;
|
||||
|
||||
namespace decePubClient.Services;
|
||||
|
||||
@@ -44,6 +46,9 @@ public class AppStatusService
|
||||
JsSyncRuntime.InvokeVoid("reloadPage");
|
||||
}
|
||||
|
||||
// wwwroot/js/theme.js
|
||||
public void ApplyTheme(PageSettings pageSettings) => JsSyncRuntime.InvokeVoid("neoTheme.apply", pageSettings);
|
||||
|
||||
public bool IsMobileMedia() => JsSyncRuntime.Invoke<bool>("isMobileMedia");
|
||||
|
||||
public bool CanShare() => JsSyncRuntime.Invoke<bool>("canShareStuff");
|
||||
|
||||
Reference in new issue
Block a user