diff --git a/Client/src/App.jsx b/Client/src/App.jsx index 783f28330..5db3ea623 100644 --- a/Client/src/App.jsx +++ b/Client/src/App.jsx @@ -32,6 +32,7 @@ import { ThemeProvider } from "@emotion/react"; import lightTheme from "./Utils/Theme/lightTheme"; import darkTheme from "./Utils/Theme/darkTheme"; import { useSelector } from "react-redux"; +import { CssBaseline } from "@mui/material"; function App() { const AdminCheckedRegister = withAdminCheck(Register); @@ -45,6 +46,7 @@ function App() { return ( + }> { "&::before": { content: `""`, position: "absolute", - top: "0", - left: "0", - width: `calc(100% - ${border * 2}px)`, - height: `calc(100% - ${border * 2}px)`, + top: 0, + left: 0, + width: `100%`, + height: `100%`, border: `${border}px solid rgba(255,255,255,0.2)`, borderRadius: "50%", }, diff --git a/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx b/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx index cb01734fd..121200acf 100644 --- a/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx +++ b/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx @@ -97,7 +97,7 @@ const MonitorDetailsAreaChart = ({ checks }) => { }); }; - const memoizedChecks = useMemo(() => checks, []); + const memoizedChecks = useMemo(() => checks, [checks[0]]); const theme = useTheme(); @@ -149,6 +149,7 @@ const MonitorDetailsAreaChart = ({ checks }) => { dataKey="responseTime" stroke={theme.palette.primary.main} fill="url(#colorUv)" + strokeWidth={1.5} /> diff --git a/Client/src/Components/ProgressBars/index.jsx b/Client/src/Components/ProgressBars/index.jsx index 51d70bb2c..d1dcc6cfe 100644 --- a/Client/src/Components/ProgressBars/index.jsx +++ b/Client/src/Components/ProgressBars/index.jsx @@ -44,7 +44,7 @@ const ProgressUpload = ({ borderRadius: theme.shape.borderRadius, border: 1, borderColor: theme.palette.border.light, - backgroundColor: "#fafafa", + backgroundColor: theme.palette.background.fill, "&:has(.input-error)": { borderColor: theme.palette.error.main, backgroundColor: theme.palette.error.bg, @@ -62,23 +62,35 @@ const ProgressUpload = ({ direction="row" mb={error ? 0 : theme.spacing(5)} gap={theme.spacing(5)} - alignItems={error ? "center" : "flex-end"} + alignItems={error ? "center" : "flex-start"} > {error ? ( ) : icon ? ( - {icon} - + ) : ( "" )} diff --git a/Client/src/Components/TabPanels/Account/ProfilePanel.jsx b/Client/src/Components/TabPanels/Account/ProfilePanel.jsx index 885c795b1..fb782da92 100644 --- a/Client/src/Components/TabPanels/Account/ProfilePanel.jsx +++ b/Client/src/Components/TabPanels/Account/ProfilePanel.jsx @@ -414,12 +414,12 @@ const ProfilePanel = () => { top: "50%", left: "50%", transform: "translate(-50%, -50%)", - width: 450, + width: 475, bgcolor: theme.palette.background.main, border: 1, borderColor: theme.palette.border.light, borderRadius: theme.shape.borderRadius, - boxShadow: 24, + boxShadow: theme.shape.boxShadow, p: theme.spacing(15), "&:focus": { outline: "none", diff --git a/Client/src/Components/TabPanels/Account/TeamPanel.jsx b/Client/src/Components/TabPanels/Account/TeamPanel.jsx index 9809ac710..540f2b5fa 100644 --- a/Client/src/Components/TabPanels/Account/TeamPanel.jsx +++ b/Client/src/Components/TabPanels/Account/TeamPanel.jsx @@ -1,6 +1,13 @@ import { useTheme } from "@emotion/react"; import TabPanel from "@mui/lab/TabPanel"; -import { Button, ButtonGroup, Modal, Stack, Typography } from "@mui/material"; +import { + Box, + Button, + ButtonGroup, + Modal, + Stack, + Typography, +} from "@mui/material"; import { useEffect, useState } from "react"; import Field from "../../Inputs/Field"; import { credentials } from "../../../Validation/validation"; @@ -88,7 +95,7 @@ const TeamPanel = () => { id: idx, data: ( - + {member.firstName + " " + member.lastName} @@ -322,7 +329,6 @@ const TeamPanel = () => { aria-describedby="invite-member-to-team" open={isOpen} onClose={closeInviteModal} - disablePortal > { top: "50%", left: "50%", transform: "translate(-50%, -50%)", - width: 400, + width: 450, bgcolor: theme.palette.background.main, border: 1, borderColor: theme.palette.border.light, borderRadius: theme.shape.borderRadius, - boxShadow: 24, + boxShadow: theme.shape.boxShadow, p: theme.spacing(15), "&:focus": { outline: "none", }, }} > - - Invite new team member - - - When you add a new team member, they will get access to all - monitors. - + + + Invite new team member + + + When you add a new team member, they will get access to all + monitors. + + { - const theme = useTheme(); - return ( - - - - - - + + + + ); }; diff --git a/Client/src/Pages/Auth/CheckEmail.jsx b/Client/src/Pages/Auth/CheckEmail.jsx index 88bc1983c..d28a5b48f 100644 --- a/Client/src/Pages/Auth/CheckEmail.jsx +++ b/Client/src/Pages/Auth/CheckEmail.jsx @@ -5,7 +5,8 @@ import { useDispatch } from "react-redux"; import { useNavigate } from "react-router"; import { createToast } from "../../Utils/toastUtils"; import { forgotPassword } from "../../Features/Auth/authSlice"; -import background from "../../assets/Images/background_pattern_decorative.png"; +import { IconBox } from "./styled"; +import Background from "../../assets/Images/background-grid.svg?react"; import EmailIcon from "../../assets/icons/email.svg?react"; import Logo from "../../assets/icons/bwu-icon.svg?react"; import "./index.css"; @@ -93,16 +94,20 @@ const CheckEmail = () => { fontWeight: 600, fontSize: 22, }, - "& p": { - fontSize: 14, - color: theme.palette.text.accent, - }, + "& p": { color: theme.palette.text.accent, fontSize: 13.5 }, + "& span": { fontSize: "inherit" }, }} > + sx={{ + "& svg g g:last-of-type path": { + stroke: theme.palette.border.light, + }, + }} + > + + { }} > - + + + Check your email - + We sent a password reset link to{" "} {email || "username@email.com"} @@ -159,7 +166,7 @@ const CheckEmail = () => { > Open email app - + Didn't receive the email?{" "} { "& h1": { color: theme.palette.primary.main, fontWeight: 600, - fontSize: 24, + fontSize: 21, }, "& p": { fontSize: 14, @@ -104,8 +105,14 @@ const ForgotPassword = () => { > + sx={{ + "& svg g g:last-of-type path": { + stroke: theme.palette.border.light, + }, + }} + > + + { textAlign="center" > - + + + Forgot password? No worries, we'll send you reset instructions. diff --git a/Client/src/Pages/Auth/Login.jsx b/Client/src/Pages/Auth/Login.jsx index c8946b7fb..565419f09 100644 --- a/Client/src/Pages/Auth/Login.jsx +++ b/Client/src/Pages/Auth/Login.jsx @@ -8,7 +8,7 @@ import { useDispatch, useSelector } from "react-redux"; import { createToast } from "../../Utils/toastUtils"; import { networkService } from "../../main"; import Field from "../../Components/Inputs/Field"; -import background from "../../assets/Images/background_pattern_decorative.png"; +import Background from "../../assets/Images/background-grid.svg?react"; import Logo from "../../assets/icons/bwu-icon.svg?react"; import Mail from "../../assets/icons/mail.svg?react"; import ArrowBackRoundedIcon from "@mui/icons-material/ArrowBackRounded"; @@ -278,9 +278,9 @@ const StepTwo = ({ form, errors, onSubmit, onChange, onBack }) => { textAlign="center" sx={{ position: "absolute", - top: "103%", + top: "104%", left: "50%", - transform: "translateX(-50%)" + transform: "translateX(-50%)", }} > { "& h1": { color: theme.palette.primary.main, fontWeight: 600, - fontSize: 30, - }, - "& p": { - fontSize: 14, - color: theme.palette.text.accent, + fontSize: 28, }, + "& p": { fontSize: 14, color: theme.palette.text.accent }, + "& span": { fontSize: "inherit" }, }} > + sx={{ + "& svg g g:last-of-type path": { + stroke: theme.palette.border.light, + }, + }} + > + + { "& h1": { color: theme.palette.primary.main, fontWeight: 600, - fontSize: 22, - }, - "& p": { - fontSize: 14, - color: theme.palette.text.accent, + fontSize: 21, }, + "& p": { fontSize: 13.5, color: theme.palette.text.accent }, }} > + sx={{ + "& svg g g:last-of-type path": { + stroke: theme.palette.border.light, + }, + }} + > + + { textAlign="center" > - + + + Password reset - + Your password has been successfully reset. Click below to log in magically. diff --git a/Client/src/Pages/Auth/Register/Register.jsx b/Client/src/Pages/Auth/Register/Register.jsx index e454b355f..7f5ed6390 100644 --- a/Client/src/Pages/Auth/Register/Register.jsx +++ b/Client/src/Pages/Auth/Register/Register.jsx @@ -8,7 +8,7 @@ import { credentials } from "../../../Validation/validation"; import { createToast } from "../../../Utils/toastUtils"; import { register } from "../../../Features/Auth/authSlice"; import { useParams } from "react-router-dom"; -import background from "../../../assets/Images/background_pattern_decorative.png"; +import Background from "../../../assets/Images/background-grid.svg?react"; import Logo from "../../../assets/icons/bwu-icon.svg?react"; import Mail from "../../../assets/icons/mail.svg?react"; import ArrowBackRoundedIcon from "@mui/icons-material/ArrowBackRounded"; @@ -658,18 +658,22 @@ const Register = ({ isSuperAdmin }) => { "& h1": { color: theme.palette.primary.main, fontWeight: 600, - fontSize: 30, - }, - "& p": { - fontSize: 14, - color: theme.palette.text.accent, + fontSize: 28, }, + "& p": { fontSize: 14, color: theme.palette.text.accent }, + "& span": { fontSize: "inherit" }, }} > + sx={{ + "& svg g g:last-of-type path": { + stroke: theme.palette.border.light, + }, + }} + > + + { const navigate = useNavigate(); @@ -121,8 +122,14 @@ const SetNewPassword = () => { > + sx={{ + "& svg g g:last-of-type path": { + stroke: theme.palette.border.light, + }, + }} + > + + { textAlign="center" > - + + + Set new password Your new password must be different to previously used passwords. diff --git a/Client/src/Pages/Auth/index.css b/Client/src/Pages/Auth/index.css index 33280e8f4..ba7d0e266 100644 --- a/Client/src/Pages/Auth/index.css +++ b/Client/src/Pages/Auth/index.css @@ -6,9 +6,7 @@ font-size: var(--env-var-font-size-xlarge); font-weight: 600; } -.auth button:not(.MuiIconButton-root), -.auth p, -.auth span { +.auth button:not(.MuiIconButton-root) { font-size: var(--env-var-font-size-medium-plus); } diff --git a/Client/src/Pages/Auth/styled.jsx b/Client/src/Pages/Auth/styled.jsx new file mode 100644 index 000000000..a6e4a3343 --- /dev/null +++ b/Client/src/Pages/Auth/styled.jsx @@ -0,0 +1,26 @@ +import { Box, styled } from "@mui/material"; + +export const IconBox = styled(Box)(({ theme }) => ({ + height: 48, + minWidth: 48, + width: 48, + position: "relative", + border: 1, + borderStyle: "solid", + borderColor: theme.palette.border.dark, + borderRadius: 12, + backgroundColor: theme.palette.background.accent, + margin: "auto", + marginBottom: 8, + "& svg": { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + width: 24, + height: 24, + "& path": { + stroke: theme.palette.text.tertiary, + }, + }, +})); diff --git a/Client/src/Utils/Theme/darkTheme.js b/Client/src/Utils/Theme/darkTheme.js index e54d9eaf4..b86dedeae 100644 --- a/Client/src/Utils/Theme/darkTheme.js +++ b/Client/src/Utils/Theme/darkTheme.js @@ -18,7 +18,7 @@ const border = { light: "#27272a", dark: "#36363e" }; const fontFamilyDefault = '"Inter","system-ui", "Avenir", "Helvetica", "Arial", sans-serif'; const shadow = - "0px 4px 24px -4px rgba(16, 24, 40, 0.08), 0px 3px 3px -3px rgba(16, 24, 40, 0.03)"; + "0px 4px 24px -4px rgba(255, 255, 255, 0.03), 0px 3px 3px -3px rgba(255, 255, 255, 0.01)"; const darkTheme = createTheme({ typography: { fontFamily: fontFamilyDefault, fontSize: 13 }, @@ -53,8 +53,8 @@ const darkTheme = createTheme({ warning: { text: "#e88c30", main: "#FF9F00", - light: "#272115", - bg: "#624711", + light: "#624711", + bg: "#262115", border: "#e88c30", }, percentage: { @@ -74,6 +74,15 @@ const darkTheme = createTheme({ }, spacing: 2, components: { + MuiCssBaseline: { + styleOverrides: { + body: { + backgroundImage: + "radial-gradient(circle, #09090b, #0c0c0e, #0f0f11, #111113, #131315, #131315, #131315, #131315, #111113, #0f0f11, #0c0c0e, #09090b)", + lineHeight: "inherit", + }, + }, + }, MuiButton: { defaultProps: { disableRipple: true, @@ -127,7 +136,7 @@ const darkTheme = createTheme({ padding: 4, transition: "none", "&:hover": { - backgroundColor: background.fill, + backgroundColor: border.light, }, }, }, diff --git a/Client/src/Utils/Theme/lightTheme.js b/Client/src/Utils/Theme/lightTheme.js index 60a8e0b2d..4fc565da3 100644 --- a/Client/src/Utils/Theme/lightTheme.js +++ b/Client/src/Utils/Theme/lightTheme.js @@ -50,8 +50,8 @@ const lightTheme = createTheme({ warning: { text: "#DC6803", main: "#fdb022", - light: "#fffcf5", - bg: "#ffecbc", + light: "#ffecbc", + bg: "#fffcf5", border: "#fec84b", }, percentage: { @@ -71,6 +71,15 @@ const lightTheme = createTheme({ }, spacing: 2, components: { + MuiCssBaseline: { + styleOverrides: { + body: { + backgroundImage: + "radial-gradient(circle, #fcfcfd, #fdfcfd, #fdfdfd, #fefdfe, #fefefe, #fefefe, #fefefe, #fefefe, #fefdfe, #fdfdfd, #fdfcfd, #fcfcfd)", + lineHeight: "inherit", + }, + }, + }, MuiButton: { defaultProps: { disableRipple: true, diff --git a/Client/src/assets/Images/background_pattern_decorative.png b/Client/src/assets/Images/background_pattern_decorative.png deleted file mode 100644 index 34f6ebce6..000000000 Binary files a/Client/src/assets/Images/background_pattern_decorative.png and /dev/null differ diff --git a/Client/src/assets/icons/check-outlined.svg b/Client/src/assets/icons/check-outlined.svg index d26657863..1e779d547 100644 --- a/Client/src/assets/icons/check-outlined.svg +++ b/Client/src/assets/icons/check-outlined.svg @@ -1,3 +1,3 @@ - + diff --git a/Client/src/assets/icons/confirm-icon.svg b/Client/src/assets/icons/confirm-icon.svg deleted file mode 100644 index d5cdd42de..000000000 --- a/Client/src/assets/icons/confirm-icon.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/Client/src/assets/icons/email.svg b/Client/src/assets/icons/email.svg index f501bd75c..01f55e961 100644 --- a/Client/src/assets/icons/email.svg +++ b/Client/src/assets/icons/email.svg @@ -1,18 +1,3 @@ - - - - - - - - - - - - - - - - - + + diff --git a/Client/src/assets/icons/key.svg b/Client/src/assets/icons/key.svg index c6401e09f..5db8d5f16 100644 --- a/Client/src/assets/icons/key.svg +++ b/Client/src/assets/icons/key.svg @@ -1,18 +1,3 @@ - - - - - - - - - - - - - - - - - + + diff --git a/Client/src/assets/icons/lock-button-icon.svg b/Client/src/assets/icons/lock-button-icon.svg deleted file mode 100644 index 5048a6a80..000000000 --- a/Client/src/assets/icons/lock-button-icon.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/Client/src/assets/icons/lock.svg b/Client/src/assets/icons/lock.svg index eb625f0ee..a87535d54 100644 --- a/Client/src/assets/icons/lock.svg +++ b/Client/src/assets/icons/lock.svg @@ -1,3 +1,3 @@ - + diff --git a/Client/src/index.css b/Client/src/index.css index 1f3b9bee2..4383427a7 100644 --- a/Client/src/index.css +++ b/Client/src/index.css @@ -56,12 +56,6 @@ html { 0px 3px 3px -3px rgba(16, 24, 40, 0.03); } -body { - margin: 0; - min-width: 320px; - height: 100%; -} - .MuiInputBase-root.Mui-disabled input { cursor: not-allowed; }