@ducor/react
Version:
admin template ui interface
29 lines (28 loc) • 873 B
JavaScript
import { useContext } from "react";
import { ThemeContext } from "../provider/theme";
/**
* Custom hook to manage theme mode.
*
* @returns {useThemeModeReturn} An object containing theme mode information and functions to change the theme mode.
* @throws Will throw an error if the hook is used outside of a ThemeProvider.
*/
const useThemeMode = () => {
const context = useContext(ThemeContext);
if (!context) {
throw new Error("useTheme must be used within a ThemeProvider");
}
const THEME_MODES = [
"light",
"dark",
"system",
];
return {
internalThemeMode: context.themeMode,
THEME_MODES,
isDark: context.isDark,
currentMode: context.themeMode,
setThemeMode: context.setThemeMode,
toggleThemeMode: context.toggleThemeMode,
};
};
export default useThemeMode;