import { useEffect, useState } from 'react' export function useModalTransition(isOpen: boolean, duration: number = 400) { const [shouldRender, setShouldRender] = useState(isOpen) const [isExiting, setIsExiting] = useState(false) useEffect(() => { if (isOpen) { setShouldRender(true) setIsExiting(false) return undefined } if (!shouldRender) { return undefined } setIsExiting(true) const timeoutId = window.setTimeout(() => { setShouldRender(false) setIsExiting(false) }, duration) return () => window.clearTimeout(timeoutId) }, [duration, isOpen, shouldRender]) return { shouldRender, isExiting } }