react-light-dark-mode
Version:
A react Library to build light and dark mode UI
49 lines (41 loc) • 1.29 kB
JavaScript
import React, { createContext, useState } from "react";
const DarkLightModeContext = createContext();
function DarkLightModeProvider(props) {
const [lightMode, setLightMode] = useState(
localStorage.getItem("lightMode") &&
localStorage.getItem("lightMode") === "true"
? true
: false
);
let lightThemeApplied = "";
const lightTheme = "_lightMode_";
const darkTheme = "_darkMode_";
const body = document.body;
if (localStorage.getItem("lightMode")) {
lightThemeApplied = localStorage.getItem("lightMode");
}
if (lightThemeApplied === "true") {
body.classList.add(lightTheme);
} else {
body.classList.add(darkTheme);
}
const toggleLightDarkMode = (dark) => {
setLightMode(!lightMode);
localStorage.setItem("lightMode", !lightMode);
if (lightThemeApplied === "true") {
body.classList.replace(lightTheme, darkTheme);
lightThemeApplied = darkTheme;
} else {
body.classList.replace(darkTheme, lightTheme);
lightThemeApplied = lightTheme;
}
};
return (
<div>
<DarkLightModeContext.Provider value={{ lightMode, toggleLightDarkMode }}>
{props.children}
</DarkLightModeContext.Provider>
</div>
);
}
export { DarkLightModeContext, DarkLightModeProvider };