diff options
Diffstat (limited to 'apps/web/src/components/theme-toggle.tsx')
| -rw-r--r-- | apps/web/src/components/theme-toggle.tsx | 75 |
1 files changed, 39 insertions, 36 deletions
diff --git a/apps/web/src/components/theme-toggle.tsx b/apps/web/src/components/theme-toggle.tsx index b6e8d274..6fd84fa3 100644 --- a/apps/web/src/components/theme-toggle.tsx +++ b/apps/web/src/components/theme-toggle.tsx @@ -1,36 +1,39 @@ -"use client";
-
-import { Button } from "./ui/button";
-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;
- iconClassName?: string;
- onToggle?: (e: React.MouseEvent<HTMLButtonElement>) => void;
-}
-
-export function ThemeToggle({
- className,
- iconClassName,
- onToggle,
-}: ThemeToggleProps) {
- const { theme, setTheme } = useTheme();
-
- return (
- <Button
- size="icon"
- variant="ghost"
- className={cn("size-8", 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>
- );
-}
+"use client"; + +import { Button } from "./ui/button"; +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; + iconClassName?: string; + onToggle?: (e: React.MouseEvent<HTMLButtonElement>) => void; +} + +export function ThemeToggle({ + className, + iconClassName, + onToggle, +}: ThemeToggleProps) { + const { theme, setTheme } = useTheme(); + + return ( + <Button + size="icon" + variant="ghost" + className={cn("size-8", 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> + ); +} |
