feat(ui): add workspace customization and simplify navigation
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect } from "react";
|
||||
import {
|
||||
COLOR_MODE_COOKIE,
|
||||
COLOR_MODE_COOKIE_MAX_AGE,
|
||||
type ColorMode,
|
||||
} from "@/lib/color-mode";
|
||||
|
||||
export function ColorModeSync({ colorMode }: { colorMode: ColorMode }) {
|
||||
useEffect(() => {
|
||||
applyColorMode(colorMode);
|
||||
}, [colorMode]);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
export function applyColorMode(colorMode: ColorMode): void {
|
||||
const root = document.documentElement;
|
||||
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
||||
|
||||
root.dataset.colorMode = colorMode;
|
||||
root.classList.toggle("dark", colorMode === "dark" || (colorMode === "system" && prefersDark));
|
||||
|
||||
const secure = window.location.protocol === "https:" ? "; Secure" : "";
|
||||
document.cookie = `${COLOR_MODE_COOKIE}=${colorMode}; Path=/; Max-Age=${COLOR_MODE_COOKIE_MAX_AGE}; SameSite=Lax${secure}`;
|
||||
}
|
||||
Reference in New Issue
Block a user