From 64f07fa73da0a9479ae5fbb30759d8bd9e421f43 Mon Sep 17 00:00:00 2001 From: Waled Khatiz Date: Sat, 31 Aug 2024 23:50:21 +1000 Subject: [PATCH] feat: System preferences icon --- src/components/mode-toggle.tsx | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/components/mode-toggle.tsx b/src/components/mode-toggle.tsx index 2d1018c..e9e45f0 100644 --- a/src/components/mode-toggle.tsx +++ b/src/components/mode-toggle.tsx @@ -1,7 +1,7 @@ "use client"; -import * as React from "react"; -import { MoonIcon, SunIcon } from "@radix-ui/react-icons"; +import {useEffect, useState} from "react"; +import { MoonIcon, SunIcon, GlobeIcon } from "@radix-ui/react-icons"; import { useTheme } from "next-themes"; import { Button } from "./ui/button"; import { @@ -12,14 +12,36 @@ import { } from "./ui/dropdown-menu"; export function ModeToggle() { + const [mounted, setMounted] = useState(false); const { theme, setTheme } = useTheme(); const toggleTheme = () => { - setTheme(theme === "light" ? "dark" : "light"); + switch (theme) { + case 'system': + setTheme("dark"); + break; + case 'dark': + setTheme("light"); + break; + case 'light': + setTheme('system'); + break; + } }; + + useEffect(() => { + setMounted(true); + }, []); + + if (!mounted) { + return null; + } + + console.log(theme); return ( );