Files
J-Board-Lite/src/components/shared/theme-toggle.tsx
2026-04-30 20:49:03 +10:00

30 lines
1013 B
TypeScript

"use client";
import { Moon, Sun } from "lucide-react";
import { useTheme } from "next-themes";
import { cn } from "@/lib/utils";
import { THEME_MODE_STORAGE_KEY } from "./time-theme-controller";
export function ThemeToggle({ className }: { className?: string }) {
const { resolvedTheme, setTheme } = useTheme();
const isDark = resolvedTheme === "dark";
return (
<button
type="button"
className={cn(
"btn-base inline-flex size-8 items-center justify-center rounded-lg border border-border bg-card text-muted-foreground hover:bg-muted hover:text-foreground",
className,
)}
aria-label={isDark ? "手动切换到日间模式" : "手动切换到夜间模式"}
title={isDark ? "日间模式" : "夜间模式"}
onClick={() => {
window.localStorage.setItem(THEME_MODE_STORAGE_KEY, "manual");
setTheme(isDark ? "light" : "dark");
}}
>
{isDark ? <Sun className="size-4" /> : <Moon className="size-4" />}
</button>
);
}