+
+
+
+ {title}
+
+
+
+
+
+
+
+
+ {messageStr}
+
+
+
+ );
+};
+
+export default PopUpMessageBox;
diff --git a/new-log-viewer/src/components/PopUps/index.css b/new-log-viewer/src/components/PopUps/index.css
new file mode 100644
index 00000000..be9612fd
--- /dev/null
+++ b/new-log-viewer/src/components/PopUps/index.css
@@ -0,0 +1,47 @@
+.pop-up-messages-container-snackbar {
+ /* Disable pointer events on the transparent container to allow components underneath to be
+ accessed. */
+ pointer-events: none;
+
+ right: 14px !important;
+ bottom: var(--ylv-status-bar-height) !important;
+
+ padding: 0 !important;
+
+ background: transparent !important;
+ border: none !important;
+ box-shadow: none !important;
+}
+
+.pop-up-messages-container-stack {
+ scrollbar-width: none;
+ overflow-y: auto;
+ height: calc(100vh - var(--ylv-status-bar-height) - var(--ylv-menu-bar-height));
+}
+
+.pop-up-message-box-alert {
+ /* Restore pointer events on the pop-up messages. See above `pointer-events: none` in
+ `.pop-up-messages-container-snackbar`. */
+ pointer-events: initial;
+ padding-inline: 18px !important;
+}
+
+.pop-up-message-box-alert-layout {
+ width: 300px;
+}
+
+.pop-up-message-box-title-container {
+ display: flex;
+ align-items: center;
+}
+
+.pop-up-message-box-title-text {
+ flex-grow: 1;
+}
+
+.pop-up-message-box-close-button {
+ /* stylelint-disable-next-line custom-property-pattern */
+ --IconButton-size: 18px !important;
+
+ border-radius: 18px !important;
+}
diff --git a/new-log-viewer/src/components/PopUps/index.tsx b/new-log-viewer/src/components/PopUps/index.tsx
new file mode 100644
index 00000000..c146a20f
--- /dev/null
+++ b/new-log-viewer/src/components/PopUps/index.tsx
@@ -0,0 +1,42 @@
+import {useContext} from "react";
+
+import {
+ Snackbar,
+ Stack,
+} from "@mui/joy";
+
+import {NotificationContext} from "../../contexts/NotificationContextProvider";
+import PopUpMessageBox from "./PopUpMessageBox";
+
+import "./index.css";
+
+
+/**
+ * Displays pop-ups in a transparent container positioned on the right side of the viewport.
+ *
+ * @return
+ */
+const PopUps = () => {
+ const {popUpMessages} = useContext(NotificationContext);
+
+ return (
+