"use client"; import React, { ReactNode, useCallback, useMemo, useState } from "react"; export interface ModalControl { isOpen: boolean; openModal: () => void; closeModal: () => void; } export function useModal() { const [isOpen, setIsOpen] = useState(false); const openModal = useCallback(() => setIsOpen(true), []); const closeModal = useCallback(() => setIsOpen(false), []); return useMemo( () => ({ isOpen, openModal, closeModal, }), [closeModal, isOpen, openModal] ); } export default function Modal({ children, buttonText, buttonClass = "", modalWidth = "w-1/3", modalControl, }: { children: (props: { closeModal: () => void }) => ReactNode; buttonText: string; buttonClass?: string; modalWidth?: string; modalControl: ModalControl; }) { return ( <>