/** Element measurement — dimensions plus bounding-rect position */ export interface Measurement { /** Element content-box width in pixels */ width: number; /** Element content-box height in pixels */ height: number; /** DOMRect top (viewport-relative) */ top: number; /** DOMRect left (viewport-relative) */ left: number; /** DOMRect right (viewport-relative) */ right: number; /** DOMRect bottom (viewport-relative) */ bottom: number; /** DOMRect x (viewport-relative) */ x: number; /** DOMRect y (viewport-relative) */ y: number; } /** Return tuple of useMeasure — `[ref, measurement]` */ export type UseMeasureReturn = readonly [ ref: (node: T | null) => void, measurement: Measurement ]; /** * Observes an element's dimensions with a `ResizeObserver` and returns the * latest measurement. SSR-safe: returns zeroed values until the observer runs * on the client. * * @template T - The observed element type (defaults to `HTMLElement`) * @returns {UseMeasureReturn} Tuple of `[callback ref, measurement]` * * @example * const [ref, { width }] = useMeasure(); * const columns = width > 1024 ? 3 : width > 640 ? 2 : 1; * return
{columns} columns
; */ export declare function useMeasure(): UseMeasureReturn;