import { useState } from 'react'; import { useEventListener } from '../useEventListener/useEventListener.ts'; import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.ts'; export type WindowSize = { height: number; width: number; }; export function useWindowSize(): WindowSize { const [windowSize, setWindowSize] = useState({ height: 0, width: 0 }); const handleSize = () => { setWindowSize({ height: window.innerHeight, width: window.innerWidth }); }; useEventListener('resize', handleSize); // Set size at the first client-side load useIsomorphicLayoutEffect(() => { handleSize(); }, []); return windowSize; }