mirror of
https://github.com/hhftechnology/vps-monitor.git
synced 2026-04-28 11:40:11 +00:00
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import { MonitorIcon, MoonIcon, SunIcon } from "lucide-react";
|
|
|
|
import { Button } from "@/components/ui/button";
|
|
import {
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuItem,
|
|
DropdownMenuTrigger,
|
|
} from "@/components/ui/dropdown-menu";
|
|
import { useTheme } from "@/contexts/theme-context";
|
|
|
|
export function ThemeToggle() {
|
|
const { theme, setTheme, resolvedTheme } = useTheme();
|
|
|
|
return (
|
|
<DropdownMenu>
|
|
<DropdownMenuTrigger asChild>
|
|
<Button variant="ghost" size="icon-sm">
|
|
{resolvedTheme === "dark" ? (
|
|
<MoonIcon className="size-4" />
|
|
) : (
|
|
<SunIcon className="size-4" />
|
|
)}
|
|
<span className="sr-only">Toggle theme</span>
|
|
</Button>
|
|
</DropdownMenuTrigger>
|
|
<DropdownMenuContent align="end">
|
|
<DropdownMenuItem
|
|
onClick={() => setTheme("light")}
|
|
className={theme === "light" ? "bg-accent" : ""}
|
|
>
|
|
<SunIcon className="mr-2 size-4" />
|
|
Light
|
|
</DropdownMenuItem>
|
|
<DropdownMenuItem
|
|
onClick={() => setTheme("dark")}
|
|
className={theme === "dark" ? "bg-accent" : ""}
|
|
>
|
|
<MoonIcon className="mr-2 size-4" />
|
|
Dark
|
|
</DropdownMenuItem>
|
|
<DropdownMenuItem
|
|
onClick={() => setTheme("system")}
|
|
className={theme === "system" ? "bg-accent" : ""}
|
|
>
|
|
<MonitorIcon className="mr-2 size-4" />
|
|
System
|
|
</DropdownMenuItem>
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
);
|
|
}
|