"use client"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { SessionProvider } from "next-auth/react"; import { Toaster } from "sonner"; import { useEffect, useState } from "react"; import { CommandPalette } from "@/components/CommandPalette"; import { PlayerDrawer } from "@/components/PlayerDrawer"; export function Providers({ children }: { children: React.ReactNode }) { const [queryClient] = useState( () => new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, }, }, }) ); const [theme, setTheme] = useState<"light" | "dark">("dark"); useEffect(() => { const sync = () => { setTheme(document.documentElement.classList.contains("dark") ? "dark" : "light"); }; sync(); const obs = new MutationObserver(sync); obs.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] }); return () => obs.disconnect(); }, []); return ( {children} ); }