mirror of https://github.com/msgbyte/tailchat
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
738 B
TypeScript
27 lines
738 B
TypeScript
import React, { useContext } from 'react';
|
|
import { useStorage } from 'tailchat-shared';
|
|
|
|
const DarkModeContext = React.createContext<{
|
|
darkMode: boolean;
|
|
setDarkMode: (isDarkMode: boolean) => void;
|
|
}>({
|
|
darkMode: true,
|
|
setDarkMode: () => {},
|
|
});
|
|
DarkModeContext.displayName = 'DarkModeContext';
|
|
|
|
export const DarkModeContextProvider: React.FC = React.memo((props) => {
|
|
const [darkMode = true, { save: setDarkMode }] = useStorage('darkMode', true);
|
|
|
|
return (
|
|
<DarkModeContext.Provider value={{ darkMode, setDarkMode }}>
|
|
{props.children}
|
|
</DarkModeContext.Provider>
|
|
);
|
|
});
|
|
DarkModeContextProvider.displayName = 'DarkModeContextProvider';
|
|
|
|
export function useDarkMode() {
|
|
return useContext(DarkModeContext);
|
|
}
|