import { useCallback, useState } from 'react'; /** * Hook for managing modal state with common patterns */ export function useModal(initialOpen = false) { const [isOpen, setIsOpen] = useState(initialOpen); const open = useCallback(() => setIsOpen(true), []); const close = useCallback(() => setIsOpen(false), []); const toggle = useCallback(() => setIsOpen((prev) => !prev), []); return { isOpen, open, close, toggle, setIsOpen, }; } /** * Hook for managing modal state with data payload */ export function useModalWithData(initialOpen = false) { const [isOpen, setIsOpen] = useState(initialOpen); const [data, setData] = useState(null); const open = useCallback((modalData?: T) => { setData(modalData || null); setIsOpen(true); }, []); const close = useCallback(() => { setIsOpen(false); setData(null); }, []); const toggle = useCallback(() => { setIsOpen((prev) => !prev); if (!isOpen) setData(null); }, [isOpen]); return { isOpen, data, open, close, toggle, setIsOpen, setData, }; }