import { RefObject, useEffect, useState } from "react" interface Dimensions { width: number height: number } export function useDimensions( ref: RefObject ): Dimensions { const [dimensions, setDimensions] = useState({ width: 0, height: 0, }) useEffect(() => { const updateDimensions = () => { if (ref.current) { const { width, height } = ref.current.getBoundingClientRect() setDimensions({ width, height }) } } updateDimensions() window.addEventListener("resize", updateDimensions) return () => window.removeEventListener("resize", updateDimensions) }, [ref]) return dimensions }