Spaces:
Running
Running
"use client" | |
import * as React from "react" | |
import { CircleDashed, Flame, Sun } from "lucide-react" | |
import { useTheme } from "next-themes" | |
import { Button } from "./ui/button" | |
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "./ui/dropdown-menu" | |
import { cn } from "@/lib/utils" | |
export function ThemeToggle({ className, ...props }: React.ComponentProps<typeof Button>) { | |
const { setTheme } = useTheme() | |
return ( | |
<DropdownMenu> | |
<DropdownMenuTrigger asChild={true}> | |
<Button | |
variant="ghost" | |
size="icon" | |
className={cn(`rounded-md h-8 w-8`, className)} | |
{...props} | |
> | |
<Flame className="h-4 w-4 rotate-0 scale-100 transition-all light:scale-0 light:-rotate-90 black:scale-0 black:-rotate-90 hover:text-sidebar-accent" /> | |
<Sun className="absolute h-4 w-4 rotate-90 scale-0 transition-all light:rotate-0 light:scale-100 black:scale-0 black:rotate-0 hover:text-sidebar-accent" /> | |
<CircleDashed className="absolute h-4 w-4 rotate-90 scale-0 transition-all black:rotate-0 black:scale-100 light:scale-0 light:rotate-0 hover:text-sidebar-accent" /> | |
<span className="sr-only">Toggle theme</span> | |
</Button> | |
</DropdownMenuTrigger> | |
<DropdownMenuContent align="end"> | |
<DropdownMenuItem onSelect={() => setTheme("dark")}> | |
<Flame className="mr-2 h-4 w-4" /> | |
<span>Dark</span> | |
</DropdownMenuItem> | |
<DropdownMenuItem onSelect={() => setTheme("light")}> | |
<Sun className="mr-2 h-4 w-4" /> | |
<span>Light</span> | |
</DropdownMenuItem> | |
<DropdownMenuItem onSelect={() => setTheme("black")}> | |
<CircleDashed className="mr-2 h-4 w-4" /> | |
<span>Black</span> | |
</DropdownMenuItem> | |
{/* sunset theme */} | |
<DropdownMenuItem onSelect={() => setTheme("sunset")}> | |
<Sun className="mr-2 h-4 w-4" /> | |
<span>Sunset</span> | |
</DropdownMenuItem> | |
</DropdownMenuContent> | |
</DropdownMenu> | |
) | |
} |