'use client' | |
import * as React from 'react' | |
import { useTheme } from 'next-themes' | |
import { Button } from '@/components/ui/button' | |
import { IconMoon, IconSun } from '@/components/ui/icons' | |
export function ThemeToggle() { | |
const { setTheme, theme } = useTheme() | |
const [_, startTransition] = React.useTransition() | |
return ( | |
<Button | |
variant="ghost" | |
size="icon" | |
onClick={() => { | |
startTransition(() => { | |
setTheme(theme === 'light' ? 'dark' : 'light') | |
}) | |
}} | |
> | |
{!theme ? null : theme === 'dark' ? ( | |
<IconMoon className="transition-all" /> | |
) : ( | |
<IconSun className="transition-all" /> | |
)} | |
<span className="sr-only">Toggle theme</span> | |
</Button> | |
) | |
} | |