diff --git a/Client/src/Components/Avatar/index.jsx b/Client/src/Components/Avatar/index.jsx
index 98cc01072..ebb669cf6 100644
--- a/Client/src/Components/Avatar/index.jsx
+++ b/Client/src/Components/Avatar/index.jsx
@@ -35,7 +35,7 @@ const Avatar = ({ src, small, sx }) => {
src ? src : user?.avatarImage ? image : "/static/images/avatar/2.jpg"
}
sx={{
- fontSize: small ? "12px" : "20px",
+ fontSize: small ? "13px" : "20px",
display: "inline-flex",
"&::before": {
content: `""`,
diff --git a/Client/src/Components/Charts/Servers/serverStatus.css b/Client/src/Components/Charts/Servers/serverStatus.css
index b3cad9429..dd15e3e9b 100644
--- a/Client/src/Components/Charts/Servers/serverStatus.css
+++ b/Client/src/Components/Charts/Servers/serverStatus.css
@@ -1,5 +1,5 @@
:root {
- --spacing-general-0: 10px 25px;
+ --spacing-general-0: 12px 18px;
--spacing-general-1: 20px;
--color-border-0: #eaecf0;
--border-radius-0: 4px;
@@ -12,17 +12,19 @@
}
.server-status-tile {
- min-width: 250px;
+ min-width: 100px;
width: calc(100% - 310px);
padding: var(--spacing-general-0);
border: 1px solid var(--color-border-0);
border-radius: var(--border-radius-0);
+ background-color: var(--env-var-color-8);
}
.server-status-tile-title {
font-size: var(--font-size-0);
font-weight: bold;
margin-bottom: calc(var(--spacing-general-1) / 2);
+ color: var(--env-var-color-1);
}
.server-status-tile-value {
diff --git a/Client/src/Components/Dashboard/DashboardMenu/index.css b/Client/src/Components/Dashboard/DashboardMenu/index.css
deleted file mode 100644
index 3c58afdb7..000000000
--- a/Client/src/Components/Dashboard/DashboardMenu/index.css
+++ /dev/null
@@ -1,20 +0,0 @@
-.dashboard-menu-container {
- display: flex;
- flex-direction: column;
- padding: 20px;
-}
-
-.icon-container {
- display: flex;
- align-items: center;
- margin-bottom: 12px;
-}
-
-.text-container {
- display: flex;
- align-items: center;
-}
-
-.dashboard-menu-text {
- margin-left: 8px;
-}
diff --git a/Client/src/Components/Dashboard/DashboardMenu/index.jsx b/Client/src/Components/Dashboard/DashboardMenu/index.jsx
deleted file mode 100644
index 68b4dec99..000000000
--- a/Client/src/Components/Dashboard/DashboardMenu/index.jsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import "./index.css";
-import DashboardMenuButton from "../DashboardMenuButton";
-
-import Monitors from "../../../assets/Images/Icon-monitor-gray.png";
-import Incidents from "../../../assets/Images/Icon-warning-gray.png";
-import SensorsIcon from "../../../assets/Images/Icon-signal-gray.png";
-import AllInclusiveIcon from "../../../assets/Images/Icon-link-gray.png";
-import MaintenanceIcon from "../../../assets/Images/Icon-maintenance-gray.png";
-import SettingsIcon from "../../../assets/Images/Icon-setting-gray.png";
-import React, { useState, useEffect } from "react";
-import { useNavigate, useLocation } from "react-router-dom";
-import pathMap from "../../../Utils/PathMap";
-
-/**
- * @component
- * DashboardMenu component displays a menu with icons and corresponding text.
- * Each menu item consists of an icon and a text label.
- *
- * @returns {JSX.Element} The JSX element representing the DashboardMenu component.
- */
-
-function DashboardMenu() {
- const [activeButton, setActiveButton] = useState(null);
- const navigate = useNavigate();
- const location = useLocation();
-
- useEffect(() => {
- setActiveButton(location.pathname);
- }, [location]);
-
- const handleClick = (title, path) => {
- setActiveButton(title);
- navigate(path);
- };
-
- return (
-
- {DashboardMenuButton(
- Monitors,
- "Monitors",
- "/monitors",
- activeButton === "/monitors",
- () => handleClick(pathMap["/monitors"], "/monitors")
- )}
- {DashboardMenuButton(
- Incidents,
- "Incidents",
- "/incidents",
- activeButton === "/incidents",
- () => handleClick(pathMap["/incidents"], "/incidents")
- )}
- {DashboardMenuButton(
- SensorsIcon,
- "Status Pages",
- "/status",
- activeButton === "/status",
- () => handleClick(pathMap["/status"], "/status")
- )}
- {DashboardMenuButton(
- AllInclusiveIcon,
- "Integrations",
- "/integrations",
- activeButton === "/integrations",
- () => handleClick(pathMap["/integrations"], "/integrations")
- )}
- {DashboardMenuButton(
- MaintenanceIcon,
- "Maintenance",
- "/maintenance",
- activeButton === "/maintenance",
- () => handleClick(pathMap["/maintenance"], "/maintenance")
- )}
- {DashboardMenuButton(
- SettingsIcon,
- "Settings",
- "/settings",
- activeButton === "/settings",
- () => handleClick(pathMap["/settings"], "/settings")
- )}
-
- );
-}
-
-export default DashboardMenu;
diff --git a/Client/src/Components/Dashboard/DashboardMenuButton/index.css b/Client/src/Components/Dashboard/DashboardMenuButton/index.css
deleted file mode 100644
index 0966effc3..000000000
--- a/Client/src/Components/Dashboard/DashboardMenuButton/index.css
+++ /dev/null
@@ -1,23 +0,0 @@
-.icon-container {
- padding: 8px 15px;
-}
-
-.icon-container:hover {
- background-color: var(--env-var-color-13);
- border-radius: var(--env-var-radius-1);
- cursor: pointer;
-}
-
-.icon-container.active {
- background-color: var(--env-var-color-13);
- border-radius: var(--env-var-radius-1);
-}
-
-.icon {
- width: var(--env-var-img-width-1);
-}
-
-.dashboard-menu-text {
- font-size: var(--env-var-font-size-medium);
- color: var(--env-var-color-12);
-}
diff --git a/Client/src/Components/Dashboard/DashboardMenuButton/index.jsx b/Client/src/Components/Dashboard/DashboardMenuButton/index.jsx
deleted file mode 100644
index 34a463ff9..000000000
--- a/Client/src/Components/Dashboard/DashboardMenuButton/index.jsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import "./index.css";
-import React, { useState } from "react";
-import { useNavigate } from "react-router-dom";
-
-/**
- * Renders a menu button with an icon and title.
- *
- * @component
- * @param {React.ElementType} icon - The icon component to be rendered.
- * @param {string} title - The title of the menu button.
- * @returns {React.ReactElement} The rendered menu button component.
- */
-
-const DashboardMenuButton = (icon, title, to, isActive, onClick) => {
- const handleClick = () => {
- onClick();
- };
-
- return (
-
-

-
- {title}
-
-
- );
-};
-
-export default DashboardMenuButton;
diff --git a/Client/src/Components/Dashboard/DashboardSidebar/index.css b/Client/src/Components/Dashboard/DashboardSidebar/index.css
deleted file mode 100644
index 38b327535..000000000
--- a/Client/src/Components/Dashboard/DashboardSidebar/index.css
+++ /dev/null
@@ -1,30 +0,0 @@
-.dashboard-sidebar {
- height: calc(100vh - var(--env-var-nav-bar-height));
- width: 250px;
- border: 1px solid var(--color-border-0);
- border-top: none;
- border-bottom: none;
- top: 64px;
- position: sticky;
- z-index: 100;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
-}
-
-.support-container {
- display: flex;
- align-items: center;
- padding: 28px 35px;
- margin-bottom: 30px;
-}
-
-.support-text {
- font-size: var(--env-var-font-size-medium);
- color: var(--env-var-color-12);
-}
-
-.support-icon {
- width: var(--env-var-img-width-1);
- margin-right: 8px;
-}
diff --git a/Client/src/Components/Dashboard/DashboardSidebar/index.jsx b/Client/src/Components/Dashboard/DashboardSidebar/index.jsx
deleted file mode 100644
index 815fe861d..000000000
--- a/Client/src/Components/Dashboard/DashboardSidebar/index.jsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import DashboardMenu from "../DashboardMenu";
-import SvgIcon from "@mui/material/SvgIcon";
-import "./index.css";
-import SupportIcon from "../../../assets/Images/Icon-support-gray.png";
-
-/**
- * @component
- * DashboardSidebar component serves as a sidebar containing the DashboardMenu and a Support icon at the bottom.
- *
- * @returns {JSX.Element} The JSX element representing the DashboardSidebar component.
- */
-
-function DashboardSidebar() {
- return (
-
-
-
-
-
-

-
Support
-
-
- );
-}
-
-export default DashboardSidebar;
diff --git a/Client/src/Components/Integrations/index.css b/Client/src/Components/Integrations/index.css
deleted file mode 100644
index e69de29bb..000000000
diff --git a/Client/src/Components/Integrations/index.jsx b/Client/src/Components/Integrations/index.jsx
deleted file mode 100644
index 4709adef6..000000000
--- a/Client/src/Components/Integrations/index.jsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import { Box, Typography, useTheme } from '@mui/material';
-import Button from '../Button';
-import PropTypes from 'prop-types';
-
-/**
- * Integrations component
- * @param {Object} props - Props for the IntegrationsComponent.
- * @param {string} props.url - The URL for the integration image.
- * @param {string} props.header - The header for the integration.
- * @param {string} props.info - Information about the integration.
- * @param {Function} props.onClick - The onClick handler for the integration button.
- * @returns {JSX.Element} The JSX representation of the IntegrationsComponent.
- */
-const IntegrationsComponent = ({ url, header, info, onClick }) => {
- const theme = useTheme();
-
- return (
-
-
-
-
-
- {header}
-
-
- {info}
-
-
-
-
-
- );
-};
-
-// PropTypes for IntegrationsComponent
-IntegrationsComponent.propTypes = {
- url: PropTypes.string.isRequired,
- header: PropTypes.string.isRequired,
- info: PropTypes.string.isRequired,
- onClick: PropTypes.func.isRequired
-};
-
-export default IntegrationsComponent;
diff --git a/Client/src/Components/NavBar/index.css b/Client/src/Components/NavBar/index.css
index 8e9f0a8dd..fcedc53a2 100644
--- a/Client/src/Components/NavBar/index.css
+++ b/Client/src/Components/NavBar/index.css
@@ -1,18 +1,11 @@
/* NavBar Component Styles*/
-.css-14ds6td-MuiPaper-root-MuiAppBar-root {
- height: var(--env-var-nav-bar-height);
-}
-
-.icon-button-toggle {
- display: flex;
- align-items: center;
- justify-content: center;
+.MuiToolbar-root {
+ min-height: var(--env-var-nav-bar-height) !important;
}
.icon-button-toggle-title {
font-size: var(--env-var-font-size-medium);
color: var(--env-var-color-5);
- margin-right: var(--env-var-spacing-2);
}
.icon-button-toggle-pic {
@@ -21,7 +14,6 @@
}
#icon-button {
- color: transparent;
-webkit-transition: none;
transition: none;
outline: none;
diff --git a/Client/src/Components/NavBar/index.jsx b/Client/src/Components/NavBar/index.jsx
index 261c872ca..c46254746 100644
--- a/Client/src/Components/NavBar/index.jsx
+++ b/Client/src/Components/NavBar/index.jsx
@@ -1,17 +1,16 @@
import "./index.css";
-import { useState } from "react";
+import { cloneElement, useState } from "react";
import AppBar from "@mui/material/AppBar";
import Box from "@mui/material/Box";
import Toolbar from "@mui/material/Toolbar";
import IconButton from "@mui/material/IconButton";
import Typography from "@mui/material/Typography";
import Menu from "@mui/material/Menu";
-import MenuIcon from "@mui/icons-material/Menu";
-import Container from "@mui/material/Container";
+import Avatar from "../Avatar";
import Tooltip from "@mui/material/Tooltip";
import MenuItem from "@mui/material/MenuItem";
import { useTheme } from "@mui/material/styles";
-import ChevronDown from "../../assets/Images/Icon-chevron-down.png";
+import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
import { clearAuthState } from "../../Features/Auth/authSlice";
import { clearMonitorState } from "../../Features/Monitors/monitorsSlice";
@@ -21,9 +20,7 @@ import LockSvg from "../../assets/icons/lock.svg?react";
import UserSvg from "../../assets/icons/user.svg?react";
import TeamSvg from "../../assets/icons/user-two.svg?react";
import LogoutSvg from "../../assets/icons/logout.svg?react";
-
-import BWULogo from "../../assets/Images/bwl-logo.svg?react";
-import Avatar from "../Avatar";
+import { Stack, useScrollTrigger } from "@mui/material";
const icons = {
Profile: ,
@@ -32,6 +29,33 @@ const icons = {
Logout: ,
};
+function AddBorderOnScroll(props) {
+ const { children, window } = props;
+ const trigger = useScrollTrigger({
+ target: window ? window() : undefined,
+ disableHysteresis: true,
+ threshold: 0,
+ });
+
+ return (
+
+ {children}
+
+ );
+}
+
/**
* NavBar component
*
@@ -100,110 +124,62 @@ function NavBar() {
};
return (
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
- UPTIME GENIE
-
-
-
-
-
-
-
+
+
-
-
-
- {authState.user?.firstName} {authState.user?.lastName}
-
-

-
-
-
-
-
-
-
+ {icons[setting]}
+
+ {setting}
+
+
+ ))}
+
+
+
);
}
diff --git a/Client/src/Components/Sidebar/index.css b/Client/src/Components/Sidebar/index.css
new file mode 100644
index 000000000..6fa9d2134
--- /dev/null
+++ b/Client/src/Components/Sidebar/index.css
@@ -0,0 +1,35 @@
+aside .MuiStack-root {
+ cursor: pointer;
+}
+aside > svg {
+ margin: var(--env-var-spacing-2) var(--env-var-spacing-1);
+}
+aside .selected-path,
+aside .MuiStack-root:hover {
+ background-color: var(--env-var-color-13);
+}
+aside .MuiStack-root svg {
+ width: 20px;
+ height: 20px;
+ opacity: 0.8;
+}
+aside span.MuiTypography-root {
+ font-size: var(--env-var-font-size-medium);
+ color: var(--env-var-color-5);
+ line-height: 1;
+}
+aside .MuiStack-root:nth-last-child(2) {
+ margin-top: auto;
+ position: relative;
+}
+aside .MuiStack-root:nth-last-child(2):before {
+ content: "";
+ position: absolute;
+ top: -10px;
+ left: 0;
+ width: 100%;
+ border-top: solid 1px var(--env-var-color-6);
+}
+aside .MuiStack-root:last-child {
+ margin-bottom: 10px;
+}
diff --git a/Client/src/Components/Sidebar/index.jsx b/Client/src/Components/Sidebar/index.jsx
new file mode 100644
index 000000000..41dd734f0
--- /dev/null
+++ b/Client/src/Components/Sidebar/index.jsx
@@ -0,0 +1,64 @@
+import { Stack, Typography } from "@mui/material";
+import { useLocation, useNavigate } from "react-router";
+import { useTheme } from "@emotion/react";
+
+import BWULogo from "../../assets/Images/bwl-logo.svg?react";
+import Support from "../../assets/icons/support.svg?react";
+import StatusPages from "../../assets/icons/status-pages.svg?react";
+import Maintenance from "../../assets/icons/maintenance.svg?react";
+import Monitors from "../../assets/icons/monitors.svg?react";
+import Incidents from "../../assets/icons/incidents.svg?react";
+import Integrations from "../../assets/icons/integrations.svg?react";
+import PageSpeed from "../../assets/icons/page-speed.svg?react";
+import Settings from "../../assets/icons/settings.svg?react";
+
+import "./index.css";
+
+/**
+ * @component
+ * Sidebar component serves as a sidebar containing a menu.
+ *
+ * @returns {JSX.Element} The JSX element representing the Sidebar component.
+ */
+
+const menu = [
+ { name: "Monitors", path: "monitors", icon: },
+ { name: "Incidents", path: "incidents", icon: },
+ { name: "Status pages", path: "status", icon: },
+ { name: "Integrations", path: "integrations", icon: },
+ { name: "Maintenance", path: "maintenance", icon: },
+ { name: "Page speed", path: "page-speed", icon: },
+ { name: "Support", path: "support", icon: },
+ { name: "Settings", path: "settings", icon: },
+];
+
+function Sidebar() {
+ const theme = useTheme();
+ const navigate = useNavigate();
+ const location = useLocation();
+
+ return (
+
+
+ {menu.map((item) => (
+ navigate(`/${item.path}`)}
+ sx={{ p: `${theme.gap.small} ${theme.gap.medium}` }}
+ >
+ {item.icon}
+ {item.name}
+
+ ))}
+
+ );
+}
+
+export default Sidebar;
diff --git a/Client/src/Layouts/HomeLayout/index.css b/Client/src/Layouts/HomeLayout/index.css
index 607e0b34d..d30ed9462 100644
--- a/Client/src/Layouts/HomeLayout/index.css
+++ b/Client/src/Layouts/HomeLayout/index.css
@@ -1,13 +1,58 @@
-.main-content {
+.home-layout * {
+ box-sizing: border-box;
+}
+.home-layout {
+ display: grid;
position: relative;
- display: flex;
- width: 100%;
- height: max-content;
- justify-content: flex-start;
+ grid-template-areas:
+ "aside header"
+ "aside main";
+ grid-template-columns: var(--env-var-side-bar-width) auto;
+ grid-template-rows: var(--env-var-nav-bar-height) auto;
+ background-color: var(--env-var-color-30);
+ height: 100vh;
}
-.main-content > div:nth-child(2) {
- position: relative;
- /* overflow-y: auto; */
- flex: 1;
+.home-layout aside {
+ grid-area: aside;
+ position: fixed;
+ top: 0;
+ height: 100%;
+ width: var(--env-var-side-bar-width);
+ background-color: var(--env-var-color-8);
+ border-right: 1px solid var(--color-border-0);
+ padding: var(--env-var-spacing-1) var(--env-var-spacing-1-plus);
+}
+.home-layout header {
+ grid-area: header;
+ background-color: var(--env-var-color-30);
+}
+.home-layout > div {
+ height: 100%;
+ grid-area: main;
+ padding: var(--env-var-spacing-2) calc(var(--env-var-spacing-4) * 2);
+ padding-bottom: var(--env-var-spacing-4);
+ max-width: 100%;
+}
+.home-layout > div:not(:has([class*="fallback"])) {
+ max-width: 1500px;
+}
+
+@media (max-width: 600px) {
+ .home-layout {
+ grid-template-areas:
+ "header header"
+ "main main";
+ grid-template-columns: 1fr;
+ grid-template-rows: 64px auto;
+ }
+
+ aside {
+ display: none;
+ visibility: hidden;
+ }
+
+ .home-layout > div {
+ padding: var(--env-var-spacing-1);
+ }
}
diff --git a/Client/src/Layouts/HomeLayout/index.jsx b/Client/src/Layouts/HomeLayout/index.jsx
index 79b291c0b..007fb7d05 100644
--- a/Client/src/Layouts/HomeLayout/index.jsx
+++ b/Client/src/Layouts/HomeLayout/index.jsx
@@ -1,17 +1,17 @@
import NavBar from "../../Components/NavBar";
+import Sidebar from "../../Components/Sidebar";
import { Outlet } from "react-router";
-import DashboardSidebar from "../../Components/Dashboard/DashboardSidebar";
+import { Box } from "@mui/material";
+
import "./index.css";
const HomeLayout = () => {
return (
-
+
+
);
};
diff --git a/Client/src/Pages/Account/index.jsx b/Client/src/Pages/Account/index.jsx
index ad5acf53a..05a5d1761 100644
--- a/Client/src/Pages/Account/index.jsx
+++ b/Client/src/Pages/Account/index.jsx
@@ -29,14 +29,7 @@ const Account = ({ open = "profile" }) => {
if (!user.role.includes("admin")) tabList = ["Profile", "Password"];
return (
-
+
{
- { user.role.includes("admin") && }
+ {user.role.includes("admin") && }
);
diff --git a/Client/src/Pages/Incidents/index.jsx b/Client/src/Pages/Incidents/index.jsx
index 3c760564e..b2765d628 100644
--- a/Client/src/Pages/Incidents/index.jsx
+++ b/Client/src/Pages/Incidents/index.jsx
@@ -104,13 +104,7 @@ const Incidents = () => {
data.rows = incidents;
return (
-
+
Incident history for:
);
};
diff --git a/Client/src/Pages/Maintenance/index.jsx b/Client/src/Pages/Maintenance/index.jsx
index 3ca0c949d..92cd351ef 100644
--- a/Client/src/Pages/Maintenance/index.jsx
+++ b/Client/src/Pages/Maintenance/index.jsx
@@ -6,12 +6,7 @@ const Maintenance = () => {
const theme = useTheme();
return (
-
+
{
];
return (
-
+
+
);
};
diff --git a/Client/src/Pages/Monitors/CreateMonitor/index.jsx b/Client/src/Pages/Monitors/CreateMonitor/index.jsx
index ff151bb35..53d80ab0f 100644
--- a/Client/src/Pages/Monitors/CreateMonitor/index.jsx
+++ b/Client/src/Pages/Monitors/CreateMonitor/index.jsx
@@ -135,14 +135,7 @@ const CreateMonitor = () => {
];
return (
-
+
{
/>
-
+
);
};
diff --git a/Client/src/Pages/Monitors/Details/index.jsx b/Client/src/Pages/Monitors/Details/index.jsx
index 6616e7ee0..2cce554e8 100644
--- a/Client/src/Pages/Monitors/Details/index.jsx
+++ b/Client/src/Pages/Monitors/Details/index.jsx
@@ -199,13 +199,7 @@ const DetailsPage = () => {
};
return (
-
+
{
-
+
);
};
diff --git a/Client/src/Pages/Monitors/index.css b/Client/src/Pages/Monitors/index.css
index fac513a88..28f4e1fc4 100644
--- a/Client/src/Pages/Monitors/index.css
+++ b/Client/src/Pages/Monitors/index.css
@@ -1,207 +1,33 @@
-.monitors,
-.new-monitor {
- width: 70vw;
-}
-
-.monitors {
- font-family: var(--env-var-font-familt-1);
- background-color: var(--env-var-color-30);
-}
-
-.monitors-bar {
- display: flex;
- justify-content: space-between;
- align-items: center;
-}
-
-.monitors-bar-title {
+.monitors h1.MuiTypography-root,
+.monitors h2.MuiTypography-root {
color: var(--env-var-color-1);
- font-size: 24px;
- font-weight: 700;
-}
-
-.monitors-stats {
- margin-top: var(--env-var-spacing-2);
- display: flex;
- gap: 24px;
- height: 100px;
-}
-
-.monitors-gaps-medium {
- height: var(--env-var-spacing-2);
-}
-
-.monitors-gaps-small-plus {
- height: var(--env-var-spacing-1-plus);
-}
-
-.monitors-gaps-small {
- height: 6px;
-}
-
-.new-monitor-header {
- color: var(--env-var-color-1);
- font-size: var(--env-var-font-size-large-plus);
font-weight: 600;
}
-
-.service-check-list-title {
- color: var(--env-var-color-5);
+.monitors h1.MuiTypography-root {
+ font-size: var(--env-var-font-size-large-plus);
+}
+.monitors h2.MuiTypography-root {
+ font-size: var(--env-var-font-size-large);
+}
+.monitors .MuiStack-root > button {
font-size: var(--env-var-font-size-medium);
-}
-
-.service-check-list-desc {
- color: var(--env-var-color-25);
- font-size: var(--env-var-font-size-small);
-}
-
-.host-status-box-text {
- font-size: var(--env-var-font-size-medium);
-}
-
-.monitors-dropdown-holder {
- padding-left: 30px;
-}
-
-#ports-list {
- width: 172.92px;
- height: 12px;
- font-size: var(--env-var-font-size-small);
- align-items: center;
-}
-
-.incident-notif-config-title,
-.adv-setting-title {
- color: var(--env-var-color-5);
- font-size: var(--env-var-font-size-medium);
-}
-
-.adv-setting-title {
- font-weight: 500;
-}
-
-.config-box-inputs,
-.service-check-list,
-.incident-notif-config,
-.advanced-setting-config,
-.proxy-setting-config {
- min-width: 350px;
- padding-right: 40px;
-}
-
-.monitors-create-button-holder {
- display: flex;
- justify-content: end;
-}
-
-#create-new-monitor-btn {
- padding-top: 6px;
-}
-
-#ports-dropdown,
-#freq-dropdown {
- width: 226.8px;
- height: 20px;
-}
-
-/* TODO */
-.current-monitors {
- margin-top: var(--env-var-spacing-2);
- border: 1px solid #eaecf0;
- padding: 40px;
- border-radius: 4px;
-}
-
-.current-monitors-title-holder {
- display: flex;
- align-items: center;
-}
-
-.current-monitors-bar {
- display: flex;
- justify-content: space-between;
-}
-
-.current-monitors-title {
- font-size: 1rem;
- font-weight: bold;
- margin-right: var(--env-var-spacing-1);
- color: var(--env-var-color-1);
+ height: var(--env-var-height-2);
+ min-width: fit-content;
}
.current-monitors-counter {
- display: inline-flex;
+ display: flex;
justify-content: center;
align-items: center;
- padding: 2px;
- min-width: 22px;
- min-height: 22px;
+ padding: 5px;
+ min-width: 25px;
+ min-height: 25px;
background-color: var(--env-var-color-15);
border: 1px solid var(--env-var-color-6);
border-radius: 50%;
font-size: var(--env-var-font-size-medium);
font-weight: 500;
color: var(--env-var-color-5);
-}
-
-.monitors-v-gaping {
- height: var(--env-var-spacing-3);
-}
-
-.current-monitors-table {
- width: 100%;
- text-align: left;
-}
-
-.current-monitors-table {
- width: 100%;
- text-align: left;
- border-collapse: collapse;
- border: 1px solid var(--env-var-color-16);
- border-radius: var(--env-var-radius-1);
-}
-
-.current-monitors-table th,
-.current-monitors-table td {
- border: 1px solid var(--env-var-color-16);
- border-left: none;
- border-right: none;
- padding: 8px;
-}
-
-.theader-row {
- background-color: var(--env-var-color-13);
- color: var(--env-var-color-2);
- font-weight: 500;
-}
-
-.theader-row td {
- padding: var(--env-var-spacing-1) var(--env-var-spacing-2);
- font-size: var(--env-var-font-size-medium);
-}
-
-.host-list-item-precentage {
- font-size: var(--env-var-font-size-medium);
-}
-
-.tbody-row td {
- padding: var(--env-var-spacing-2) var(--env-var-img-width-2);
-}
-
-.host-status-box {
- display: flex;
- width: fit-content;
- border: 1px solid var(--env-var-color-4);
- border-radius: var(--env-var-radius-2);
- align-items: center;
- padding: calc(var(--env-var-spacing-1) / 2);
-}
-
-.host-actions {
- margin: auto;
- cursor: pointer;
-}
-
-.tbody-row-cell.actions-cell {
- padding-left: 30px;
+ margin-left: 10px;
+ line-height: 0.8;
}
diff --git a/Client/src/Pages/Monitors/index.jsx b/Client/src/Pages/Monitors/index.jsx
index 9a24e94af..5e193fe62 100644
--- a/Client/src/Pages/Monitors/index.jsx
+++ b/Client/src/Pages/Monitors/index.jsx
@@ -11,6 +11,7 @@ import OpenInNewPage from "../../assets/icons/open-in-new-page.svg?react";
import BasicTable from "../../Components/BasicTable";
import { StatusLabel } from "../../Components/Label";
import ResponseTimeChart from "../../Components/Charts/ResponseTimeChart";
+import { Box, Stack, Typography } from "@mui/material";
/**
* Host component.
@@ -124,49 +125,47 @@ const Monitors = () => {
});
return (
-
-
-
+
+
+
Hello, {authState.user.firstName}
-
+
{
navigate("/monitors/create");
}}
- sx={{ padding: "6px 25px", fontSize: "13px" }}
/>
-
-
-
+
+
-
-
-
-
-
-
Current monitors
-
- {monitorState.monitors.length}
-
-
-
- {/* TODO - add search bar */}
-
-
-
+
+
+
+ Current monitors
+
+ {monitorState.monitors.length}
+
+ {/* TODO - add search bar */}
+
-
-
+
+
);
};
diff --git a/Client/src/Pages/NotFound/index.jsx b/Client/src/Pages/NotFound/index.jsx
index 1b2accbc0..8c8064882 100644
--- a/Client/src/Pages/NotFound/index.jsx
+++ b/Client/src/Pages/NotFound/index.jsx
@@ -3,6 +3,7 @@ import "./index.css";
import React from "react";
import PropTypes from "prop-types";
import { Stack, Typography } from "@mui/material";
+import { useNavigate } from "react-router";
/**
* Support for defaultProps will be removed from function components in a future major release
@@ -30,6 +31,8 @@ const DefaultValue = {
* @returns {JSX.Element} The rendered error page component.
*/
const NotFound = ({ title = DefaultValue.title, desc = DefaultValue.desc }) => {
+ const navigate = useNavigate();
+
return (
@@ -39,6 +42,7 @@ const NotFound = ({ title = DefaultValue.title, desc = DefaultValue.desc }) => {
label="Go to the main dashboard"
level="primary"
sx={{ mt: "24px" }}
+ onClick={() => navigate("/")}
/>
diff --git a/Client/src/Pages/Settings/index.jsx b/Client/src/Pages/Settings/index.jsx
index 7b4a9f0f3..200830677 100644
--- a/Client/src/Pages/Settings/index.jsx
+++ b/Client/src/Pages/Settings/index.jsx
@@ -14,10 +14,7 @@ const Settings = () => {