import { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react' import StyledButton, { StyledButtonProps } from './StyledButton' import React from 'react' import classNames from '~/lib/classNames' 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 = 'Cancel', cancelIcon, cancelLoading = false, confirmText = 'Confirm', confirmIcon, confirmVariant = 'action', confirmLoading = false, onCancel, onConfirm, icon, large = false, }) => { return ( { if (onClose) onClose() }} className="relative z-50" >
{icon &&
{icon}
}
{title}
{children}
{cancelText && onCancel && ( { if (onCancel) onCancel() }} icon={cancelIcon} loading={cancelLoading} > {cancelText} )} {confirmText && onConfirm && ( { if (onConfirm) onConfirm() }} icon={confirmIcon} loading={confirmLoading} > {confirmText} )}
) } export default StyledModal