import { useLayoutEffect, useState } from "react" /** * Hook to get window dimensions * @returns Window width and height */ export function useWindowSize() { const [windowSize, setWindowSize] = useState({ width: 0, height: 0, }) const [isClient, setIsClient] = useState(false) useLayoutEffect(() => { setIsClient(true) if (!isClient) return const handleResize = () => { setWindowSize({ width: window.innerWidth, height: window.innerHeight, }) } // Set initial size handleResize() // Add event listener window.addEventListener("resize", handleResize) // Remove event listener on cleanup return () => window.removeEventListener("resize", handleResize) }, [isClient]) return windowSize }