diff options
| author | Sebastien Castiel <sebastien@castiel.me> | 2023-12-07 18:35:09 -0500 |
|---|---|---|
| committer | Sebastien Castiel <sebastien@castiel.me> | 2023-12-07 18:35:09 -0500 |
| commit | 4bc03002e17a0d128059c9d6d76c91ba7bac2e8f (patch) | |
| tree | 59687bb0e83a02f07121f8f34820fcbffb786ef6 /src/components/theme-toggle.tsx | |
| parent | 61201c28646ccb3be155b84b2a95cbc4502e51e4 (diff) | |
Dark mode
Diffstat (limited to 'src/components/theme-toggle.tsx')
| -rw-r--r-- | src/components/theme-toggle.tsx | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/components/theme-toggle.tsx b/src/components/theme-toggle.tsx new file mode 100644 index 0000000..bf45ffc --- /dev/null +++ b/src/components/theme-toggle.tsx @@ -0,0 +1,39 @@ +'use client' + +import { MoonIcon, SunIcon } from '@radix-ui/react-icons' +import { useTheme } from 'next-themes' + +import { Button } from '@/components/ui/button' +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from '@/components/ui/dropdown-menu' + +export function ThemeToggle() { + const { setTheme } = useTheme() + + return ( + <DropdownMenu> + <DropdownMenuTrigger asChild> + <Button variant="link" size="icon"> + <SunIcon className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" /> + <MoonIcon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" /> + <span className="sr-only">Toggle theme</span> + </Button> + </DropdownMenuTrigger> + <DropdownMenuContent align="end"> + <DropdownMenuItem onClick={() => setTheme('light')}> + Light + </DropdownMenuItem> + <DropdownMenuItem onClick={() => setTheme('dark')}> + Dark + </DropdownMenuItem> + <DropdownMenuItem onClick={() => setTheme('system')}> + System + </DropdownMenuItem> + </DropdownMenuContent> + </DropdownMenu> + ) +} |
