ThemeToggleButton.jsx 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. "use client";
  2. import React from "react";
  3. import { Moon, Sun } from "lucide-react";
  4. import { useTheme } from "next-themes";
  5. import { Button } from "@/components/ui/button";
  6. import {
  7. Tooltip,
  8. TooltipContent,
  9. TooltipTrigger,
  10. } from "@/components/ui/tooltip";
  11. export default function ThemeToggleButton() {
  12. const { setTheme } = useTheme();
  13. function toggleTheme() {
  14. const isDark =
  15. typeof document !== "undefined" &&
  16. document.documentElement.classList.contains("dark");
  17. setTheme(isDark ? "light" : "dark");
  18. }
  19. return (
  20. <Tooltip>
  21. <TooltipTrigger asChild>
  22. <Button
  23. type="button"
  24. variant="ghost"
  25. size="icon-sm"
  26. onClick={toggleTheme}
  27. aria-label="Design umschalten"
  28. >
  29. <Moon className="h-4 w-4 dark:hidden" aria-hidden="true" />
  30. <Sun className="hidden h-4 w-4 dark:block" aria-hidden="true" />
  31. <span className="sr-only">Design umschalten</span>
  32. </Button>
  33. </TooltipTrigger>
  34. <TooltipContent side="bottom">Design umschalten</TooltipContent>
  35. </Tooltip>
  36. );
  37. }