import { useEffect } from 'react' import { create } from 'zustand' import type { FC } from 'react' type OverlayStore = { active: boolean setActive: (v: boolean) => void } export const useOverlayStore = create (set => ({ active: false, setActive: v => set ({ active: v }) })) export default (() => { const active = useOverlayStore (s => s.active) useEffect (() => { if (active) { document.body.style.overflow = 'hidden' document.body.setAttribute ('aria-busy', 'true') } else { document.body.style.overflow = '' document.body.removeAttribute ('aria-busy') } }, [active]) if (!(active)) return null return (
Loading...
) }) satisfies FC