import { type RefObject, useEffect, useRef } from 'react' export const useFocus = ( /** This prop is needed to ensure the element is visible */ isVisible: boolean, ): RefObject => { const ref = useRef(null) const inputTimeout = useRef>(undefined) useEffect(() => { if (isVisible && ref.current) { inputTimeout.current = setTimeout(() => { ref.current?.focus() }, 250) } return () => { inputTimeout.current = undefined } }, [isVisible]) return ref as RefObject }