mirror of
https://bitbucket.org/Mattrixwv/mattrixwvreactcomponents.git
synced 2025-12-06 21:53:57 -05:00
47 lines
903 B
TypeScript
47 lines
903 B
TypeScript
import { useTheme } from "$/providers/theme/ThemeProvider";
|
|
import { BsLightbulb, BsLightbulbFill } from "react-icons/bs";
|
|
|
|
|
|
export default function DarkModeSwitch(){
|
|
const { theme, setTheme } = useTheme();
|
|
|
|
|
|
const updateTheme = () => {
|
|
if(theme === "system"){
|
|
if(window.document.documentElement.classList.contains("dark")){
|
|
setTheme("light");
|
|
}
|
|
else{
|
|
setTheme("dark");
|
|
}
|
|
}
|
|
else{
|
|
setTheme(theme === "dark" ? "light" : "dark");
|
|
}
|
|
}
|
|
|
|
|
|
return (
|
|
<label
|
|
className="flex flex-row justify-center items-center cursor-pointer"
|
|
>
|
|
<input
|
|
type="checkbox"
|
|
className="peer hidden"
|
|
checked={theme === "dark"}
|
|
onChange={updateTheme}
|
|
/>
|
|
<div
|
|
className="block peer-checked:hidden cursor-pointer"
|
|
>
|
|
<BsLightbulbFill/>
|
|
</div>
|
|
<div
|
|
className="hidden peer-checked:block cursor-pointer"
|
|
>
|
|
<BsLightbulb/>
|
|
</div>
|
|
</label>
|
|
);
|
|
}
|