Skip to main content

Modal

Modal.tsx
import React, { useState } from 'react';
import './Modal.module.css';

type ModalProps = {
title: string;
onClose: () => void;
children: React.ReactNode;
};

const Modal = ({ title, onClose, children }: ModalProps) => {
const [isOpen, setIsOpen] = useState(true);

const handleClose = () => {
setIsOpen(false);
onClose();
};

return (
<>
{isOpen && (
<div className="modal-overlay">
<div className="modal">
<div className="modal-header">
<h2>{title}</h2>
<button className="close-button" onClick={handleClose}>
X
</button>
</div>
<div className="modal-content">{children}</div>
</div>
</div>
)}
</>
);
};

export default Modal;


Modal.module.css
.modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
}

.modal {
position: relative;
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3);
}

.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}

.close-button {
font-size: 20px;
font-weight: bold;
background-color: transparent;
border: none;
cursor: pointer;
}

.modal-content {
padding: 10px;
}