diff options
| author | Maze <167211895+mazeincoding@users.noreply.github.com> | 2026-01-31 00:20:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-31 00:20:04 +0100 |
| commit | 7bf0984698e43b9aa2dd879f65951318ed410390 (patch) | |
| tree | ccf2cd590a47d550152afc07129cb55c71a9ec35 /apps/web/src/components/theme-toggle.tsx | |
| parent | 0173db99448d1c4c6415dcf15272e17551b48b04 (diff) | |
| download | opencut-7bf0984698e43b9aa2dd879f65951318ed410390.tar.gz | |
codebase overhaul (#697)
Diffstat (limited to 'apps/web/src/components/theme-toggle.tsx')
| -rw-r--r-- | apps/web/src/components/theme-toggle.tsx | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/apps/web/src/components/theme-toggle.tsx b/apps/web/src/components/theme-toggle.tsx index 8302a19c..394d75b2 100644 --- a/apps/web/src/components/theme-toggle.tsx +++ b/apps/web/src/components/theme-toggle.tsx @@ -1,25 +1,36 @@ "use client";
import { Button } from "./ui/button";
-import { Sun, Moon } from "lucide-react";
import { useTheme } from "next-themes";
+import { cn } from "@/utils/ui";
+import { Sun03Icon } from "@hugeicons/core-free-icons";
+import { HugeiconsIcon } from "@hugeicons/react";
interface ThemeToggleProps {
- className?: string;
+ className?: string;
+ iconClassName?: string;
+ onToggle?: (e: React.MouseEvent<HTMLButtonElement>) => void;
}
-export function ThemeToggle({ className }: ThemeToggleProps) {
- const { theme, setTheme } = useTheme();
+export function ThemeToggle({
+ className,
+ iconClassName,
+ onToggle,
+}: 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>
- );
+ return (
+ <Button
+ size="icon"
+ variant="text"
+ className={cn("h-7", className)}
+ onClick={(e) => {
+ setTheme(theme === "dark" ? "light" : "dark");
+ onToggle?.(e);
+ }}
+ >
+ <HugeiconsIcon icon={Sun03Icon} className={cn("!size-[1.1rem]", iconClassName)} />
+ <span className="sr-only">{theme === "dark" ? "Light" : "Dark"}</span>
+ </Button>
+ );
}
|
