import MaterialModal from '@mui/material/Modal' import Paper from '@mui/material/Paper' import { makeStyles } from '@mui/styles' import classnames from 'classnames' import React from 'react' import { H1, H4 } from 'src/components/typography' import CloseIcon from 'src/styling/icons/action/close/zodiac.svg?react' import { IconButton } from 'src/components/buttons' const styles = { modal: { display: 'flex', justifyContent: 'center', flexDirection: 'column', alignItems: 'center' }, wrapper: ({ width, height }) => ({ width, height, display: 'flex', flexDirection: 'column', minHeight: height ?? 400, maxHeight: '90vh', overflowY: 'auto', borderRadius: 8, outline: 0 }), infoPanelWrapper: ({ width, infoPanelHeight }) => ({ width, height: infoPanelHeight, marginTop: 16, display: 'flex', flexDirection: 'column', minHeight: infoPanelHeight ?? 200, maxHeight: '90vh', overflowY: 'auto', borderRadius: 8, outline: 0 }), panelContent: { width: '100%', display: 'flex', flexDirection: 'column', flex: 1, padding: [[0, 24]] }, content: ({ small, xl }) => ({ width: '100%', display: 'flex', flexDirection: 'column', flex: 1, padding: xl ? [[0, 60 + 28]] : small ? [[0, 16]] : [[0, 32]] }), button: ({ small, xl }) => ({ padding: [[0, 0, 0, 0]], margin: xl ? [[0, 0, 'auto', 'auto']] : small ? [[12, 12, 'auto', 'auto']] : [[16, 16, 'auto', 'auto']] }), header: { display: 'flex' }, title: ({ small }) => ({ margin: small ? [[20, 0, 8, 16]] : [[28, 0, 8, 32]] }) } const useStyles = makeStyles(styles) const Modal = ({ width, height, infoPanelHeight, title, small, xl, infoPanel, handleClose, children, secondaryModal, className, closeOnEscape, closeOnBackdropClick, ...props }) => { const classes = useStyles({ width, height, small, infoPanelHeight, xl }) const TitleCase = small ? H4 : H1 const closeSize = xl ? 28 : small ? 16 : 20 const innerClose = (evt, reason) => { if (!closeOnBackdropClick && reason === 'backdropClick') return if (!closeOnEscape && reason === 'escapeKeyDown') return handleClose() } return ( <>
{title && {title}} handleClose()}>
{children}
{infoPanel && (
{infoPanel}
)}
) } export default Modal