//#region src/hooks/use-frame-delay/index.d.ts
interface UseFrameDelayOptions {
/** Number of animation frames to wait (default: 2) */
frames?: number;
/** Callback fired when delay completes */
onReady?: () => void;
}
interface UseFrameDelayResult {
/** Whether the delay has completed */
isReady: boolean;
}
/**
* Delays execution by a specified number of animation frames.
*
* Useful for deferring expensive renders to allow the browser to paint
* a loading state first.
*
* @param options - {@link UseFrameDelayOptions}
* @param options.frames - Number of animation frames to wait (default: 2).
* @param options.onReady - Callback fired when delay completes.
* @returns {@link UseFrameDelayResult} Object with isReady boolean.
*
* @example
* ```tsx
* // Pattern 1: Reactive
* function DeferredContent() {
* const { isReady } = useFrameDelay();
* if (!isReady) return ;
* return ;
* }
*
* // Pattern 2: Callback
* function WithCallback() {
* const [loaded, setLoaded] = useState(false);
* useFrameDelay({ onReady: () => setLoaded(true) });
* return loaded ? : ;
* }
* ```
*/
declare function useFrameDelay(options?: UseFrameDelayOptions): UseFrameDelayResult;
//#endregion
export { UseFrameDelayOptions, UseFrameDelayResult, useFrameDelay };
//# sourceMappingURL=index.d.ts.map