mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-28 06:40:57 +00:00
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { useEffect, useState } from "react";
|
|
|
|
// Same storage key/values as main.tsx and FreightDashboardLayout so the
|
|
// vendored IAM UI toggle and the host dashboard toggle stay in sync.
|
|
const THEME_STORAGE_KEY = "edr-theme";
|
|
|
|
export const useDarkMode = () => {
|
|
const [isDarkMode, setIsDarkMode] = useState(() => {
|
|
// Initialize from localStorage or system preference
|
|
const savedTheme = localStorage.getItem(THEME_STORAGE_KEY);
|
|
if (savedTheme === "dark" || savedTheme === "light") {
|
|
return savedTheme === "dark";
|
|
}
|
|
return window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
});
|
|
|
|
useEffect(() => {
|
|
// Apply dark mode class on mount and when isDarkMode changes
|
|
if (isDarkMode) {
|
|
document.documentElement.classList.add("dark");
|
|
localStorage.setItem(THEME_STORAGE_KEY, "dark");
|
|
} else {
|
|
document.documentElement.classList.remove("dark");
|
|
localStorage.setItem(THEME_STORAGE_KEY, "light");
|
|
}
|
|
}, [isDarkMode]);
|
|
|
|
const toggleDarkMode = () => {
|
|
setIsDarkMode((prev) => !prev);
|
|
};
|
|
|
|
return { isDarkMode, toggleDarkMode };
|
|
};
|