- Unified localStorage key to 'theme-preference' across all components
- Fixed header.tsx using wrong localStorage key ('theme' instead of 'theme-preference')
- Added localStorage hybrid persistence for instant theme changes
- Removed router.refresh() which was causing stale data revert
- Replaced Blue theme with Sepia
- Consolidated auth() calls to prevent race conditions
- Updated UserSettingsData types to include all themes
32 lines
909 B
TypeScript
32 lines
909 B
TypeScript
export function getThemeScript(theme: string = 'light') {
|
|
return `
|
|
(function() {
|
|
try {
|
|
var localTheme = localStorage.getItem('theme-preference');
|
|
var theme = localTheme || '${theme}';
|
|
var root = document.documentElement;
|
|
|
|
root.classList.remove('dark');
|
|
root.removeAttribute('data-theme');
|
|
|
|
if (theme === 'auto') {
|
|
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
root.classList.add('dark');
|
|
}
|
|
} else if (theme === 'dark') {
|
|
root.classList.add('dark');
|
|
} else if (theme === 'light') {
|
|
// do nothing
|
|
} else {
|
|
root.setAttribute('data-theme', theme);
|
|
if (theme === 'midnight') {
|
|
root.classList.add('dark');
|
|
}
|
|
}
|
|
} catch (e) {
|
|
console.error('Theme script error', e);
|
|
}
|
|
})();
|
|
`
|
|
}
|