import { useLayoutEffect, useState, type RefObject } from 'react' /** The rendered width of a container, tracked through resizes. */ export function useWidth(ref: RefObject, fallback = 480): number { const [width, setWidth] = useState(fallback) useLayoutEffect(() => { const el = ref.current if (!el) return const update = () => setWidth(el.clientWidth || fallback) update() const ro = new ResizeObserver(update) ro.observe(el) return () => ro.disconnect() }, [ref, fallback]) return width }