Skip to content

Commit ca1e6a4

Browse files
authored
Improved Theme Toggle Button Functionality (#36)
Fixes: #34
1 parent 49a25ae commit ca1e6a4

File tree

1 file changed

+23
-25
lines changed

1 file changed

+23
-25
lines changed

components/theme-toggle.tsx

+23-25
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,32 @@ import { Moon, Sun } from 'lucide-react'
55
import { useTheme } from "next-themes"
66

77
import { Button } from "@/components/ui/button"
8-
import {
9-
DropdownMenu,
10-
DropdownMenuContent,
11-
DropdownMenuItem,
12-
DropdownMenuTrigger,
13-
} from "@/components/ui/dropdown-menu"
148

159
export function ThemeToggle() {
16-
const { setTheme } = useTheme()
10+
const { theme, setTheme } = useTheme()
11+
12+
const toggleTheme = () => {
13+
setTheme(theme === "dark" ? "light" : "dark")
14+
}
1715

1816
return (
19-
<DropdownMenu>
20-
<DropdownMenuTrigger asChild>
21-
<Button variant="outline" size="icon">
22-
<Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
23-
<Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
24-
<span className="sr-only">Toggle theme</span>
25-
</Button>
26-
</DropdownMenuTrigger>
27-
<DropdownMenuContent align="end">
28-
<DropdownMenuItem onClick={() => setTheme("light")} className="cursor-pointer">
29-
Light
30-
</DropdownMenuItem>
31-
<DropdownMenuItem onClick={() => setTheme("dark")} className="cursor-pointer">
32-
Dark
33-
</DropdownMenuItem>
34-
</DropdownMenuContent>
35-
</DropdownMenu>
17+
<Button
18+
variant="outline"
19+
size="icon"
20+
onClick={toggleTheme}
21+
aria-label="Toggle theme"
22+
className="relative p-2 rounded-full transition-colors duration-300 hover:bg-gray-200 dark:hover:bg-gray-700"
23+
>
24+
25+
<Sun className={`h-5 w-5 text-black-500 transition-all duration-500 ease-in-out transform ${
26+
theme === "dark" ? "rotate-180 opacity-0 scale-0" : "rotate-0 opacity-100 scale-100"
27+
}`}
28+
/>
29+
30+
<Moon className={`absolute h-5 w-5 text-white-700 transition-all duration-500 ease-in-out transform ${
31+
theme === "light" ? "rotate-0 opacity-0 scale-0" : "rotate-120 opacity-100 scale-100"
32+
}`}
33+
/>
34+
</Button>
3635
)
3736
}
38-

0 commit comments

Comments
 (0)