BeatSense / frontend /src /components /layout /theme-toggle.tsx
devrup404's picture
BeatSense: unified FastAPI + Next.js deployment
f4102c2
Raw
History Blame Contribute Delete
775 Bytes
"use client";
import { Moon, Sun } from "lucide-react";
import { useTheme } from "next-themes";
import { useEffect, useState } from "react";
import { Button } from "@/components/ui/button";
export function ThemeToggle() {
const { theme, setTheme, resolvedTheme } = useTheme();
const [mounted, setMounted] = useState(false);
useEffect(() => setMounted(true), []);
const current = mounted ? (resolvedTheme ?? theme) : "dark";
const next = current === "dark" ? "light" : "dark";
return (
<Button
variant="outline"
size="icon"
onClick={() => setTheme(next)}
aria-label="Toggle theme"
>
{current === "dark" ? (
<Sun className="h-4 w-4" />
) : (
<Moon className="h-4 w-4" />
)}
</Button>
);
}