feat(web): polish sidebar shell and authentication UI

This commit is contained in:
2026-04-05 16:57:52 +08:00
parent eeee62c4e8
commit e8dd85ee65
8 changed files with 466 additions and 101 deletions
+29
View File
@@ -0,0 +1,29 @@
const THEME_STORAGE_KEY = "todolist.web.theme";
export type ThemeMode = "light" | "dark";
function isThemeMode(value: string | null): value is ThemeMode {
return value === "light" || value === "dark";
}
export function loadThemeMode(): ThemeMode {
const savedTheme = window.localStorage.getItem(THEME_STORAGE_KEY);
if (isThemeMode(savedTheme)) {
return savedTheme;
}
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
return "dark";
}
return "light";
}
export function saveThemeMode(mode: ThemeMode): void {
window.localStorage.setItem(THEME_STORAGE_KEY, mode);
}
export function applyThemeMode(mode: ThemeMode): void {
document.documentElement.classList.toggle("dark", mode === "dark");
document.documentElement.style.colorScheme = mode;
}