ThemeToggle.tsx 886 B

12345678910111213141516171819202122232425262728293031
  1. "use client";
  2. import { useEffect } from "react";
  3. import { useTheme } from "next-themes";
  4. import { MoonIcon, SunIcon } from "lucide-react";
  5. import { Button } from "@/components/ui/button";
  6. export function ThemeToggle() {
  7. const { setTheme, resolvedTheme } = useTheme();
  8. useEffect(() => {
  9. console.log("resolvedTheme:", resolvedTheme);
  10. }, [resolvedTheme]);
  11. return (
  12. <Button
  13. className="hover:bg-slate-100 rounded-full p-2 pr-2"
  14. onClick={() => setTheme(resolvedTheme === "light" ? "dark" : "light")}
  15. variant="ghost"
  16. >
  17. <div className="tooltip" data-tip={resolvedTheme === "light" ? "Dark mode" : "Light mode"}>
  18. {resolvedTheme === "light" ? (
  19. <MoonIcon className="text-blue-500 dark:text-blue-400" />
  20. ) : (
  21. <SunIcon className="text-blue-500 dark:text-blue-400" />
  22. )}
  23. </div>
  24. </Button>
  25. );
  26. }