import type { ComponentType } from 'react'; import { useCallback, useEffect, useId } from 'react'; import { modalStore } from './store'; interface ModalControlProps { isOpen?: boolean; onOpenChange?: (isOpen: boolean) => void; } export const useModal = () => { const scopeId = useId(); useEffect(() => { return () => { modalStore .getSnapshot() .filter((m) => m.scopeId === scopeId) .forEach((m) => m.resolve()); modalStore.removeByScope(scopeId); }; }, [scopeId]); const show = useCallback(
( Component: ComponentType
, props?: Omit
): Promise