Port 8da2fae6ccd50158171a7caa52a809da2e146c26 to glitch-soc Co-authored-by: diondiondion <mail@diondiondion.com> Signed-off-by: Claire <claire.github-309c@sitedethib.com>
24 lines
555 B
TypeScript
24 lines
555 B
TypeScript
import { useEffect, useState } from 'react';
|
|
|
|
import { isDarkMode } from '../utils/theme';
|
|
|
|
export function useTheme() {
|
|
const [darkMode, setDarkMode] = useState(() => isDarkMode());
|
|
|
|
useEffect(() => {
|
|
const mutationObserver = new MutationObserver(() => {
|
|
setDarkMode(isDarkMode());
|
|
});
|
|
mutationObserver.observe(document.documentElement, {
|
|
attributes: true,
|
|
attributeFilter: ['data-color-scheme'],
|
|
});
|
|
|
|
return () => {
|
|
mutationObserver.disconnect();
|
|
};
|
|
}, []);
|
|
|
|
return darkMode ? 'dark' : 'light';
|
|
}
|