'use client'; import { MouseEventHandler, RefObject, useState } from 'react'; import { Icon } from '@iconify/react'; import Modal from '@/components/Modal'; import Button, { ButtonProps } from '@/components/Button'; import { cn } from '@/lib/helper'; export interface ConfirmationModalProps { ref: RefObject; type?: 'info' | 'success' | 'error'; text?: string; closeOnBackdrop?: boolean; primaryButton?: ButtonProps & { text?: string; }; secondaryButton?: ButtonProps & { text?: string; }; className?: { modal?: string; modalBox?: string; }; children?: React.ReactNode; } const ConfirmationModal = ({ ref, type = 'info', text, closeOnBackdrop, primaryButton, secondaryButton, className, children, }: ConfirmationModalProps) => { const [isPrimaryButtonLoading, setIsPrimaryButtonLoading] = useState(false); const closeModalHandler = () => { ref.current?.close(); }; const primaryButtonClickHandler: MouseEventHandler< HTMLButtonElement > = async (event) => { setIsPrimaryButtonLoading(true); await primaryButton?.onClick?.(event); setIsPrimaryButtonLoading(false); }; return (
{type === 'info' && ( )} {type === 'success' && ( )} {type === 'error' && ( )}

{text ?? 'Apakah anda yakin ingin melakukan hal ini?'}

{children &&
{children}
}
{secondaryButton && secondaryButton.text && ( )} {primaryButton && primaryButton.text && ( )}
); }; export default ConfirmationModal;