import React, { ReactNode } from "react"; import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalFooter, ModalBody, Button, useColorModeValue, Flex, IconButton, ModalProps, ModalContentProps, ModalHeaderProps, ModalBodyProps, ModalFooterProps, } from "@chakra-ui/react"; import { RiCloseFill } from "react-icons/ri"; export interface DialogProps extends ModalProps { title: string | ReactNode; children: ReactNode; size?: string; isOpen: boolean; onClose: () => void; onSave?: () => void; closeButton?: boolean; closeLabel?: string; saveLabel?: string; modalHeaderProps?: ModalHeaderProps; modalContentProps?: ModalContentProps; modalBodyProps?: ModalBodyProps; modalFooterProps?: ModalFooterProps; modalFooter?: ReactNode; hasCloseIcon?: boolean; } export function Dialog({ title, children, size = "md", isOpen = false, onClose, onSave, closeButton = true, closeLabel = "Close", saveLabel = "Apply", modalFooter, hasCloseIcon = true, modalHeaderProps, modalContentProps, modalBodyProps, modalFooterProps, ...rest }: DialogProps) { const bg = useColorModeValue("white", "gray.800"); const borderColor = useColorModeValue("gray.100", "gray.700"); const color = useColorModeValue("gray.500", "gray.300"); return ( {title} {hasCloseIcon && ( } /> )} {children && ( {children} )} {modalFooter || ( {closeButton && ( )} {onSave && ( )} )} ); }