import { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react' import StyledButton, { StyledButtonProps } from './StyledButton' import React from 'react' import classNames from '~/lib/classNames' import { useTranslation } from 'react-i18next' export type StyledModalProps = { onClose?: () => void title: string cancelText?: string cancelIcon?: StyledButtonProps['icon'] cancelLoading?: boolean confirmText?: string confirmIcon?: StyledButtonProps['icon'] confirmVariant?: StyledButtonProps['variant'] confirmLoading?: boolean open: boolean onCancel?: () => void onConfirm?: () => void children: React.ReactNode icon?: React.ReactNode large?: boolean } const StyledModal: React.FC = ({ children, title, open, onClose, cancelText, cancelIcon, cancelLoading = false, confirmText, confirmIcon, confirmVariant = 'action', confirmLoading = false, onCancel, onConfirm, icon, large = false, }) => { const { t } = useTranslation() const resolvedCancelText = cancelText ?? t('common.cancel') const resolvedConfirmText = confirmText ?? t('common.confirm') return ( { if (onClose) onClose() }} className="relative z-50" >
{icon &&
{icon}
}
{title}
{children}
{resolvedCancelText && onCancel && ( { if (onCancel) onCancel() }} icon={cancelIcon} loading={cancelLoading} > {resolvedCancelText} )} {resolvedConfirmText && onConfirm && ( { if (onConfirm) onConfirm() }} icon={confirmIcon} loading={confirmLoading} > {resolvedConfirmText} )}
) } export default StyledModal