import { ReactNode, useCallback, useContext, useState } from 'react'; import { createPortal } from 'react-dom'; import { ActionDisplay } from '@/action-menu/actions/display/components/ActionDisplay'; import { ActionConfigContext } from '@/action-menu/contexts/ActionConfigContext'; import { useCloseActionMenu } from '@/action-menu/hooks/useCloseActionMenu'; import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal'; import { ButtonAccent } from 'twenty-ui/input'; export type ActionModalProps = { title: string; subtitle: ReactNode; onConfirmClick: () => void; confirmButtonText?: string; confirmButtonAccent?: ButtonAccent; isLoading?: boolean; }; export const ActionModal = ({ title, subtitle, onConfirmClick, confirmButtonText = 'Confirm', confirmButtonAccent = 'danger', isLoading = false, }: ActionModalProps) => { const [isOpen, setIsOpen] = useState(false); const handleOpen = useCallback(() => { setIsOpen(true); }, []); const { closeActionMenu } = useCloseActionMenu(); const handleConfirmClick = () => { closeActionMenu(); onConfirmClick(); setIsOpen(false); }; const actionConfig = useContext(ActionConfigContext); if (!actionConfig) { return null; } return ( <> {isOpen && createPortal( , document.body, )} ); };