summaryrefslogtreecommitdiff
path: root/apps/web/src/components/theme-toggle.tsx
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2025-08-31 00:01:38 +0200
committerMaze Winther <mazewinther@gmail.com>2025-08-31 00:01:38 +0200
commit2afd4ec6fbb63d03d21a8114c25abeff1cdd5a8b (patch)
tree18a597b66da815de64e644a443b1cb870767b1bb /apps/web/src/components/theme-toggle.tsx
parent886cf81bd0078f8d70f89fa5290052f5b23a9a12 (diff)
downloadopencut-2afd4ec6fbb63d03d21a8114c25abeff1cdd5a8b.tar.gz
feat: switching theme across entire site
Diffstat (limited to 'apps/web/src/components/theme-toggle.tsx')
-rw-r--r--apps/web/src/components/theme-toggle.tsx25
1 files changed, 25 insertions, 0 deletions
diff --git a/apps/web/src/components/theme-toggle.tsx b/apps/web/src/components/theme-toggle.tsx
new file mode 100644
index 00000000..8302a19c
--- /dev/null
+++ b/apps/web/src/components/theme-toggle.tsx
@@ -0,0 +1,25 @@
+"use client";
+
+import { Button } from "./ui/button";
+import { Sun, Moon } from "lucide-react";
+import { useTheme } from "next-themes";
+
+interface ThemeToggleProps {
+ className?: string;
+}
+
+export function ThemeToggle({ className }: ThemeToggleProps) {
+ const { theme, setTheme } = useTheme();
+
+ return (
+ <Button
+ size="icon"
+ variant="text"
+ className="h-7"
+ onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
+ >
+ <Sun className="!size-[1.1rem]" />
+ <span className="sr-only">{theme === "dark" ? "Light" : "Dark"}</span>
+ </Button>
+ );
+}