mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-12 06:08:37 +00:00
28 lines
763 B
JavaScript
28 lines
763 B
JavaScript
import { useState } from 'react';
|
|
import { settings } from './repl/themes.mjs';
|
|
import { useEffect } from 'react';
|
|
|
|
function useTheme() {
|
|
const [theme, setTheme] = useState(localStorage.getItem('strudel-theme'));
|
|
useEvent('strudel-theme', (e) => setTheme(e.detail));
|
|
const themeSettings = settings[theme || 'strudelTheme'];
|
|
return {
|
|
theme,
|
|
setTheme,
|
|
settings: themeSettings,
|
|
isDark: !themeSettings.light,
|
|
isLight: !!themeSettings.light,
|
|
};
|
|
}
|
|
// TODO: dedupe
|
|
function useEvent(name, onTrigger, useCapture = false) {
|
|
useEffect(() => {
|
|
document.addEventListener(name, onTrigger, useCapture);
|
|
return () => {
|
|
document.removeEventListener(name, onTrigger, useCapture);
|
|
};
|
|
}, [onTrigger]);
|
|
}
|
|
|
|
export default useTheme;
|