| 12345678910111213141516171819202122232425262728293031323334353637 |
- "use client";
- import { Moon, Sun } from "lucide-react";
- import { useTheme } from "next-themes";
- import { useEffect, useState } from "react";
- export function ThemeToggle() {
- const { theme, setTheme } = useTheme();
- const [mounted, setMounted] = useState(false);
- useEffect(() => {
- // eslint-disable-next-line
- setMounted(true);
- }, []);
- if (!mounted) {
- return (
- <button className="p-2 rounded-full hover:bg-surface-container-high text-secondary hover:text-white transition-colors w-10 h-10 flex items-center justify-center">
- <span className="w-5 h-5 block"></span>
- </button>
- );
- }
- return (
- <button
- onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
- className="p-2 rounded-full hover:bg-surface-container-high text-secondary hover:text-white transition-colors flex items-center justify-center"
- aria-label="Toggle theme"
- >
- {theme === "dark" ? (
- <Sun className="w-5 h-5" />
- ) : (
- <Moon className="w-5 h-5" />
- )}
- </button>
- );
- }
|