aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/theme-toggle.tsx
diff options
context:
space:
mode:
authorSebastien Castiel <sebastien@castiel.me>2023-12-07 18:35:09 -0500
committerSebastien Castiel <sebastien@castiel.me>2023-12-07 18:35:09 -0500
commit4bc03002e17a0d128059c9d6d76c91ba7bac2e8f (patch)
tree59687bb0e83a02f07121f8f34820fcbffb786ef6 /src/components/theme-toggle.tsx
parent61201c28646ccb3be155b84b2a95cbc4502e51e4 (diff)
Dark mode
Diffstat (limited to 'src/components/theme-toggle.tsx')
-rw-r--r--src/components/theme-toggle.tsx39
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>
+ )
+}