diff --git a/services/frontend/src/components/Modal.tsx b/services/frontend/src/components/Modal.tsx new file mode 100644 index 0000000..b685220 --- /dev/null +++ b/services/frontend/src/components/Modal.tsx @@ -0,0 +1,120 @@ +import { FunctionComponent, ReactElement, ReactNode } from "react"; +import { XIcon } from "@heroicons/react/outline"; +import { styled } from "@mui/joy"; + +export interface IModalProps { + title: string; + onHide: () => void; + children: ReactNode; +} + +const Root = styled("div")` + overflow-y: auto; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 50; +`; + +const Container = styled("div")` + display: flex; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + justify-content: center; + align-items: center; + outline: 0; +`; + +const Backdrop = styled("div")` + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 40; + background-color: #000000; + opacity: 0.25; +`; + +const Content = styled("div")` + position: relative; + z-index: 50; + margin-top: 1.5rem; + margin-bottom: 1.5rem; + width: auto; + max-width: 64rem; +`; + +const Content2 = styled("div")` + display: flex; + position: relative; + background-color: #ffffff; + flex-direction: column; + width: 100%; + border-radius: 0.5rem; + border-width: 0; + outline: 0; + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), + 0 4px 6px -2px rgba(0, 0, 0, 0.05); +`; + +const Header = styled("div")` + display: flex; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + padding-left: 1rem; + padding-right: 1rem; + justify-content: space-between; + align-items: center; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + border-bottom-width: 1px; + border-style: solid; +`; + +const Title = styled("h3")` + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 600; +`; + +const CloseButton = styled("button")` + float: right; + padding: 0.25rem; + color: #000000; + outline: 0; +`; + +const Modal: FunctionComponent = ( + props: IModalProps +): ReactElement => { + const { title, onHide, children } = props; + + return ( + + + + + +
+ {title} + + + +
+ {children} +
+
+
+
+ ); +}; + +export default Modal;