add theme button

This commit is contained in:
2026-04-15 12:58:16 +01:00
parent b84d6dd162
commit f8d5e45673
+17
View File
@@ -3,6 +3,8 @@
import Link from "next/link";
import { useCallback, useEffect, useId, useRef, useState } from "react";
import Image from "next/image";
import { useTheme } from "next-themes";
import { Moon, Sun } from "lucide-react";
const primaryNav = [
{ label: "Música", href: "#" },
@@ -69,6 +71,9 @@ export function TvoneSiteNav() {
const closeMenu = useCallback(() => setMenuOpen(false), []);
const toggleMenu = useCallback(() => setMenuOpen((o) => !o), []);
const { theme, setTheme } = useTheme();
const [mounted, setMounted] = useState(false);
useEffect(() => {
const el = sentinelRef.current;
@@ -82,12 +87,14 @@ export function TvoneSiteNav() {
sync();
window.addEventListener("scroll", sync, { passive: true });
window.addEventListener("resize", sync);
setMounted(true);
return () => {
window.removeEventListener("scroll", sync);
window.removeEventListener("resize", sync);
};
}, []);
useEffect(() => {
if (!menuOpen) return;
const onKey = (e: KeyboardEvent) => {
@@ -163,6 +170,16 @@ export function TvoneSiteNav() {
</ul>
<div className="ml-auto flex shrink-0 items-center gap-1 sm:gap-2">
{/* Theme Toggle */}
{mounted && (
<button
onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
className="flex h-10 w-10 items-center justify-center rounded-md hover:bg-white/10"
>
{theme === "dark" ? <Moon size={18} /> : <Sun size={18} />}
</button>
)}
<button
type="button"
className="flex h-10 w-10 items-center justify-center rounded-md hover:bg-white/10 sm:h-11 sm:w-11"