feat: govern effective appearance defaults
This commit is contained in:
+9
-4
@@ -36,7 +36,7 @@ const DEFAULT_UI_PREFERENCES: UserUiPreferences = {
|
||||
reduce_motion: false,
|
||||
sticky_section_sidebars: true,
|
||||
theme: "system",
|
||||
palette: "default"
|
||||
palette: null
|
||||
};
|
||||
|
||||
export default function App() {
|
||||
@@ -390,7 +390,7 @@ export default function App() {
|
||||
root.classList.toggle("ui-hide-help-hints", !preferences.show_inline_help_hints);
|
||||
root.classList.toggle("ui-reduce-motion", preferences.reduce_motion);
|
||||
root.classList.toggle("ui-no-sticky-section-sidebars", !preferences.sticky_section_sidebars);
|
||||
root.dataset.palette = normalizeUiPalette(preferences.palette);
|
||||
root.dataset.palette = normalizeUiPalette(auth?.user.appearance?.palette ?? preferences.palette);
|
||||
|
||||
const systemDarkQuery = window.matchMedia?.("(prefers-color-scheme: dark)") ?? null;
|
||||
const applyTheme = () => {
|
||||
@@ -416,7 +416,8 @@ export default function App() {
|
||||
auth?.user.ui_preferences?.reduce_motion,
|
||||
auth?.user.ui_preferences?.sticky_section_sidebars,
|
||||
auth?.user.ui_preferences?.theme,
|
||||
auth?.user.ui_preferences?.palette
|
||||
auth?.user.ui_preferences?.palette,
|
||||
auth?.user.appearance?.palette
|
||||
]);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -720,7 +721,7 @@ function normalizeUiPreferences(value: Partial<UserUiPreferences> | null | undef
|
||||
reduce_motion: Boolean(value?.reduce_motion ?? DEFAULT_UI_PREFERENCES.reduce_motion),
|
||||
sticky_section_sidebars: Boolean(value?.sticky_section_sidebars ?? DEFAULT_UI_PREFERENCES.sticky_section_sidebars),
|
||||
theme,
|
||||
palette: normalizeUiPalette(value?.palette)
|
||||
palette: normalizeOptionalUiPalette(value?.palette)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -730,6 +731,10 @@ function normalizeUiPalette(value: UserUiPalette | string | null | undefined): U
|
||||
: "default";
|
||||
}
|
||||
|
||||
function normalizeOptionalUiPalette(value: UserUiPalette | string | null | undefined): UserUiPalette | null {
|
||||
return value == null ? null : normalizeUiPalette(value);
|
||||
}
|
||||
|
||||
function mergeWebModules(localModules: PlatformWebModule[], remoteModules: PlatformWebModule[]): PlatformWebModule[] {
|
||||
if (remoteModules.length === 0) return localModules;
|
||||
const seen = new Set(localModules.map((module) => module.id));
|
||||
|
||||
Reference in New Issue
Block a user