diff --git a/Client/src/Layouts/HomeLayout/index.css b/Client/src/Layouts/HomeLayout/index.css
index 1434ff9d9..855bf33fc 100644
--- a/Client/src/Layouts/HomeLayout/index.css
+++ b/Client/src/Layouts/HomeLayout/index.css
@@ -3,9 +3,7 @@
}
.home-layout {
- display: flex;
position: relative;
- gap: var(--env-var-spacing-2);
min-height: 100vh;
max-width: 1400px;
margin: 0 auto;
diff --git a/Client/src/Layouts/HomeLayout/index.jsx b/Client/src/Layouts/HomeLayout/index.jsx
index 92d763f0c..fd92c59fa 100644
--- a/Client/src/Layouts/HomeLayout/index.jsx
+++ b/Client/src/Layouts/HomeLayout/index.jsx
@@ -1,6 +1,6 @@
import Sidebar from "../../Components/Sidebar";
import { Outlet } from "react-router";
-import { Box } from "@mui/material";
+import { Box, Stack } from "@mui/material";
import { useTheme } from "@emotion/react";
import "./index.css";
@@ -10,10 +10,14 @@ const HomeLayout = () => {
return (
-
+
-
+
);
};
diff --git a/Client/src/Pages/Incidents/index.jsx b/Client/src/Pages/Incidents/index.jsx
index 5d756298e..3152cf506 100644
--- a/Client/src/Pages/Incidents/index.jsx
+++ b/Client/src/Pages/Incidents/index.jsx
@@ -83,7 +83,7 @@ const Incidents = () => {
};
return (
-
+
{loading ? (
) : (
diff --git a/Client/src/Pages/Monitors/Configure/index.jsx b/Client/src/Pages/Monitors/Configure/index.jsx
index 483a2fd79..2e719a31a 100644
--- a/Client/src/Pages/Monitors/Configure/index.jsx
+++ b/Client/src/Pages/Monitors/Configure/index.jsx
@@ -254,6 +254,7 @@ const Configure = () => {
color="secondary"
loading={isLoading}
sx={{
+ border: "none",
backgroundColor: theme.palette.background.main,
px: theme.spacing(5),
mr: theme.spacing(6),
diff --git a/Client/src/Pages/Monitors/Details/index.css b/Client/src/Pages/Monitors/Details/index.css
index 59ffc5d85..108f09b21 100644
--- a/Client/src/Pages/Monitors/Details/index.css
+++ b/Client/src/Pages/Monitors/Details/index.css
@@ -1,13 +1,6 @@
-.monitor-details h1.MuiTypography-root {
- font-size: var(--env-var-font-size-large-plus);
- font-weight: 600;
-}
.monitor-details h2.MuiTypography-root {
font-size: var(--env-var-font-size-large);
}
-.monitor-details h2.MuiTypography-root {
- font-weight: 600;
-}
.monitor-details button.MuiButtonBase-root {
height: var(--env-var-height-2);
line-height: 1;
diff --git a/Client/src/Pages/Monitors/Details/index.jsx b/Client/src/Pages/Monitors/Details/index.jsx
index 616f18657..922231036 100644
--- a/Client/src/Pages/Monitors/Details/index.jsx
+++ b/Client/src/Pages/Monitors/Details/index.jsx
@@ -3,8 +3,10 @@ import { useEffect, useState, useCallback } from "react";
import {
Box,
Button,
+ Popover,
Skeleton,
Stack,
+ Tooltip,
Typography,
useTheme,
} from "@mui/material";
@@ -13,12 +15,14 @@ import { useNavigate, useParams } from "react-router-dom";
import { networkService } from "../../../main";
import { logger } from "../../../Utils/Logger";
import {
+ formatDate,
formatDuration,
formatDurationRounded,
} from "../../../Utils/timeUtils";
import MonitorDetailsAreaChart from "../../../Components/Charts/MonitorDetailsAreaChart";
import ButtonGroup from "@mui/material/ButtonGroup";
import SettingsIcon from "../../../assets/icons/settings-bold.svg?react";
+import CertificateIcon from "../../../assets/icons/certificate.svg?react";
import PaginationTable from "./PaginationTable";
import Breadcrumbs from "../../../Components/Breadcrumbs";
import PulseDot from "../../../Components/Animated/PulseDot";
@@ -154,6 +158,14 @@ const DetailsPage = ({ isAdmin }) => {
const [certificateExpiry, setCertificateExpiry] = useState("N/A");
const navigate = useNavigate();
+ const [anchorEl, setAnchorEl] = useState(null);
+ const openCertificate = (event) => {
+ setAnchorEl(event.currentTarget);
+ };
+ const closeCertificate = () => {
+ setAnchorEl(null);
+ };
+
const fetchMonitor = useCallback(async () => {
try {
const res = await networkService.getStatsByMonitorId(
@@ -186,7 +198,16 @@ const DetailsPage = ({ isAdmin }) => {
authToken,
monitorId
);
- setCertificateExpiry(res?.data?.data?.certificateDate ?? "N/A");
+
+ let [month, day, year] = res?.data?.data?.certificateDate.split("/");
+ const date = new Date(year, month - 1, day);
+
+ setCertificateExpiry(
+ formatDate(date, {
+ hour: undefined,
+ minute: undefined,
+ }) ?? "N/A"
+ );
} catch (error) {
console.error(error);
}
@@ -207,65 +228,171 @@ const DetailsPage = ({ isAdmin }) => {
{ name: "details", path: `/monitors/${monitorId}` },
]}
/>
-
+
-
- {monitor.url?.replace(/^https?:\/\//, "") || "..."}
+ {monitor.name}
-
-
- Your site is {monitor?.status ? "up" : "down"}.
- {" "}
- Checking every {formatDurationRounded(monitor?.interval)}.
-
+
+
+
+
+
+ {monitor.url?.replace(/^https?:\/\//, "") || "..."}
+
+
+ Checking every {formatDurationRounded(monitor?.interval)}.
+
+
- {isAdmin && (
-
- )}
+
+
+
+
+ Certificate Expiry
+
+
+ {certificateExpiry}
+
+
+ {isAdmin && (
+
+ )}
+
{
value={`${formatDurationRounded(monitor?.lastChecked)} ago`}
/>
-
{
borderRadius={theme.shape.borderRadius}
sx={{ height: "250px" }}
>
-
+ /> */}
History
-
+ {/* */}
>
diff --git a/Client/src/Pages/Monitors/Home/index.jsx b/Client/src/Pages/Monitors/Home/index.jsx
index 318a9da20..e5c9a765f 100644
--- a/Client/src/Pages/Monitors/Home/index.jsx
+++ b/Client/src/Pages/Monitors/Home/index.jsx
@@ -43,22 +43,6 @@ const Monitors = ({ isAdmin }) => {
let loading = monitorState.isLoading && monitorState.monitors.length === 0;
- const now = new Date();
- const hour = now.getHours();
-
- let greeting = "";
- let emoji = "";
- if (hour < 12) {
- greeting = "morning";
- emoji = "🌅";
- } else if (hour < 18) {
- greeting = "afternoon";
- emoji = "🌞";
- } else {
- greeting = "evening";
- emoji = "🌙";
- }
-
return (
{loading ? (
diff --git a/Client/src/Utils/Theme/darkTheme.js b/Client/src/Utils/Theme/darkTheme.js
index 15df7c1b8..657f071e4 100644
--- a/Client/src/Utils/Theme/darkTheme.js
+++ b/Client/src/Utils/Theme/darkTheme.js
@@ -10,10 +10,10 @@ const text = {
const background = {
main: "#151518",
alt: "#09090b",
- fill: "#2e2e2e",
+ fill: "#2D2D33",
accent: "#18181a",
};
-const border = { light: "#27272a", dark: "#2c2c2c" };
+const border = { light: "#27272a", dark: "#36363e" };
const fontFamilyDefault =
'"Inter","system-ui", "Avenir", "Helvetica", "Arial", sans-serif';
@@ -25,7 +25,7 @@ const darkTheme = createTheme({
palette: {
mode: "dark",
primary: { main: "#1570ef" },
- secondary: { main: "#2e2e2e" },
+ secondary: { main: "#2D2D33" },
text: text,
background: background,
border: border,
@@ -92,6 +92,15 @@ const darkTheme = createTheme({
backgroundColor: theme.palette.secondary.main,
},
},
+ {
+ props: (props) =>
+ props.variant === "contained" && props.color === "secondary",
+ style: {
+ border: 1,
+ borderStyle: "solid",
+ borderColor: theme.palette.border.dark,
+ },
+ },
],
fontWeight: 400,
borderRadius: 4,
diff --git a/Client/src/Utils/Theme/lightTheme.js b/Client/src/Utils/Theme/lightTheme.js
index bb83d09b2..ef38a2abc 100644
--- a/Client/src/Utils/Theme/lightTheme.js
+++ b/Client/src/Utils/Theme/lightTheme.js
@@ -89,6 +89,15 @@ const lightTheme = createTheme({
backgroundColor: theme.palette.secondary.main,
},
},
+ {
+ props: (props) =>
+ props.variant === "contained" && props.color === "secondary",
+ style: {
+ border: 1,
+ borderStyle: "solid",
+ borderColor: theme.palette.border.light,
+ },
+ },
],
fontWeight: 400,
borderRadius: 4,
diff --git a/Client/src/assets/icons/certificate.svg b/Client/src/assets/icons/certificate.svg
new file mode 100644
index 000000000..a985bef9f
--- /dev/null
+++ b/Client/src/assets/icons/certificate.svg
@@ -0,0 +1,3 @@
+
diff --git a/Client/src/index.css b/Client/src/index.css
index 105776bd8..740a22b7a 100644
--- a/Client/src/index.css
+++ b/Client/src/index.css
@@ -4,6 +4,10 @@
box-sizing: border-box;
}
+html {
+ scroll-behavior: smooth;
+}
+
:root {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
font-weight: 400;