Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b132670152 | |||
| 39fe9eaaa2 | |||
| 5d4cbc7a1c | |||
| c92644222e | |||
| bc5f8e8db5 | |||
| 00703aa5c1 | |||
| e170ddca97 | |||
| c384764f72 | |||
| b5f0423fdb | |||
| c2dbf2d6a3 | |||
| d092c6f909 | |||
| dca3104451 |
@@ -1,7 +1,10 @@
|
|||||||
.favicon {
|
.favicon {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 5px;
|
top: 5px;
|
||||||
margin-left: 10px;
|
max-width: 250px;
|
||||||
|
max-height: 250px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* googleBtn */
|
/* googleBtn */
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ const ForgotPasswordForm = () => {
|
|||||||
|
|
||||||
<Box as="div" textAlign="center" mt="20px">
|
<Box as="div" textAlign="center" mt="20px">
|
||||||
<Link
|
<Link
|
||||||
href="/authentication/sign-in/"
|
href="/auth/sign-in/"
|
||||||
className="primaryColor text-decoration-none"
|
className="primaryColor text-decoration-none"
|
||||||
>
|
>
|
||||||
<i className="ri-arrow-left-s-line"></i> Back to Sign in
|
<i className="ri-arrow-left-s-line"></i> Back to Sign in
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
import React from "react";
|
import React, { useState } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import Grid from "@mui/material/Grid";
|
import Grid from "@mui/material/Grid";
|
||||||
|
import IconButton from "@mui/material/IconButton";
|
||||||
import { Typography } from "@mui/material";
|
import { Typography } from "@mui/material";
|
||||||
import { Box } from "@mui/system";
|
import { Box } from "@mui/system";
|
||||||
import TextField from "@mui/material/TextField";
|
import TextField from "@mui/material/TextField";
|
||||||
|
import InputAdornment from "@mui/material/InputAdornment";
|
||||||
import Button from "@mui/material/Button";
|
import Button from "@mui/material/Button";
|
||||||
import FormControlLabel from "@mui/material/FormControlLabel";
|
import Visibility from "@mui/icons-material/Visibility";
|
||||||
import Checkbox from "@mui/material/Checkbox";
|
import VisibilityOff from "@mui/icons-material/VisibilityOff";
|
||||||
import styles from "@/components/Authentication/Authentication.module.css";
|
import styles from "./signinform.module.css";
|
||||||
|
import WrenchBoardLogo from "@/public/images/logos/wrenchboard-logo.png";
|
||||||
|
|
||||||
const SignInForm = () => {
|
const SignInForm = () => {
|
||||||
const handleSubmit = (event) => {
|
const handleSubmit = (event) => {
|
||||||
@@ -19,9 +22,15 @@ const SignInForm = () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const [showPassword, setShowPassword] = useState(false);
|
||||||
|
|
||||||
|
const handleTogglePassword = () => {
|
||||||
|
setShowPassword(!showPassword);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="authenticationBox">
|
<div className={styles.authenticationBox}>
|
||||||
<Box
|
<Box
|
||||||
component="main"
|
component="main"
|
||||||
sx={{
|
sx={{
|
||||||
@@ -29,51 +38,34 @@ const SignInForm = () => {
|
|||||||
ml: "auto",
|
ml: "auto",
|
||||||
mr: "auto",
|
mr: "auto",
|
||||||
padding: "50px 0 100px",
|
padding: "50px 0 100px",
|
||||||
|
paddingInline: { sm: "10px", lg: "0" },
|
||||||
|
zIndex: "999",
|
||||||
|
position: "relative",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Grid item xs={12} md={12} lg={12} xl={12}>
|
<Grid item xs={12} md={12} lg={12} xl={12}>
|
||||||
<Box>
|
<Box>
|
||||||
<Typography as="h1" fontSize="28px" fontWeight="700" mb="65px">
|
<Box
|
||||||
Sign In{" "}
|
display="flex"
|
||||||
|
alignItems="center"
|
||||||
|
justifyContent="center"
|
||||||
|
mb="70px"
|
||||||
|
>
|
||||||
<img
|
<img
|
||||||
src="/images/favicon.png"
|
src="/images/logos/android-chrome-512x512.png"
|
||||||
alt="favicon"
|
alt="logo"
|
||||||
className={styles.favicon}
|
className={styles.favicon}
|
||||||
/>
|
/>
|
||||||
</Typography>
|
|
||||||
|
|
||||||
{/* <Typography fontSize="15px" mb="30px">
|
|
||||||
Already have an account?{" "}
|
|
||||||
<Link
|
|
||||||
href="/authentication/sign-up"
|
|
||||||
className="primaryColor text-decoration-none"
|
|
||||||
>
|
|
||||||
Sign up
|
|
||||||
</Link>
|
|
||||||
</Typography>
|
|
||||||
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
display: "flex",
|
|
||||||
justifyContent: "space-between",
|
|
||||||
alignItems: "center",
|
|
||||||
mb: "30px",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Link href="#" className={styles.googleBtn}>
|
|
||||||
<img src="/images/google-icon.png" />
|
|
||||||
Sign in with Google
|
|
||||||
</Link>
|
|
||||||
|
|
||||||
<Link href="#" className={styles.fbBtn}>
|
|
||||||
<img src="/images/fb-icon.png" />
|
|
||||||
Sign in with Facebook
|
|
||||||
</Link>
|
|
||||||
</Box>
|
</Box>
|
||||||
|
{/* <Typography
|
||||||
<div className={styles.or}>
|
as="h1"
|
||||||
<span>or</span>
|
fontSize="28px"
|
||||||
</div> */}
|
fontWeight="700"
|
||||||
|
mb="5px"
|
||||||
|
color="#fff"
|
||||||
|
>
|
||||||
|
Sign In{" "}
|
||||||
|
</Typography> */}
|
||||||
|
|
||||||
<Box component="form" noValidate onSubmit={handleSubmit}>
|
<Box component="form" noValidate onSubmit={handleSubmit}>
|
||||||
<Box
|
<Box
|
||||||
@@ -87,7 +79,7 @@ const SignInForm = () => {
|
|||||||
>
|
>
|
||||||
<Grid container alignItems="center" spacing={2}>
|
<Grid container alignItems="center" spacing={2}>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<Typography
|
{/* <Typography
|
||||||
component="label"
|
component="label"
|
||||||
sx={{
|
sx={{
|
||||||
fontWeight: "500",
|
fontWeight: "500",
|
||||||
@@ -97,7 +89,7 @@ const SignInForm = () => {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Email
|
Email
|
||||||
</Typography>
|
</Typography> */}
|
||||||
|
|
||||||
<TextField
|
<TextField
|
||||||
required
|
required
|
||||||
@@ -109,11 +101,12 @@ const SignInForm = () => {
|
|||||||
InputProps={{
|
InputProps={{
|
||||||
style: { borderRadius: 8 },
|
style: { borderRadius: 8 },
|
||||||
}}
|
}}
|
||||||
|
sx={textFieldStyles}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<Typography
|
{/* <Typography
|
||||||
component="label"
|
component="label"
|
||||||
sx={{
|
sx={{
|
||||||
fontWeight: "500",
|
fontWeight: "500",
|
||||||
@@ -123,56 +116,60 @@ const SignInForm = () => {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Password
|
Password
|
||||||
</Typography>
|
</Typography> */}
|
||||||
|
|
||||||
<TextField
|
<TextField
|
||||||
required
|
required
|
||||||
fullWidth
|
fullWidth
|
||||||
name="password"
|
name="password"
|
||||||
label="Password"
|
label="Password"
|
||||||
type="password"
|
type={showPassword ? "text" : "password"}
|
||||||
id="password"
|
id="password"
|
||||||
autoComplete="new-password"
|
autoComplete="new-password"
|
||||||
InputProps={{
|
InputProps={{
|
||||||
style: { borderRadius: 8 },
|
style: { borderRadius: 8 },
|
||||||
|
endAdornment: (
|
||||||
|
<InputAdornment position="end">
|
||||||
|
<IconButton
|
||||||
|
onClick={handleTogglePassword}
|
||||||
|
sx={{
|
||||||
|
color: "#4687BA",
|
||||||
|
"&:hover": {
|
||||||
|
color: "#4687BA",
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{showPassword ? (
|
||||||
|
<VisibilityOff />
|
||||||
|
) : (
|
||||||
|
<Visibility />
|
||||||
|
)}
|
||||||
|
</IconButton>
|
||||||
|
</InputAdornment>
|
||||||
|
),
|
||||||
}}
|
}}
|
||||||
|
sx={textFieldStyles}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Grid container alignItems="center" spacing={2}>
|
|
||||||
<Grid item xs={6} sm={6}>
|
|
||||||
<FormControlLabel
|
|
||||||
control={
|
|
||||||
<Checkbox value="allowExtraEmails" color="primary" />
|
|
||||||
}
|
|
||||||
label="Remember me."
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<Grid item xs={6} sm={6} textAlign="end">
|
|
||||||
<Link
|
|
||||||
href="/authentication/forgot-password"
|
|
||||||
className="primaryColor text-decoration-none"
|
|
||||||
>
|
|
||||||
Forgot your password?
|
|
||||||
</Link>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
type="submit"
|
type="submit"
|
||||||
fullWidth
|
fullWidth
|
||||||
variant="contained"
|
variant="contained"
|
||||||
sx={{
|
sx={{
|
||||||
mt: 2,
|
mt: 2,
|
||||||
|
backgroundColor: "#4687BA",
|
||||||
textTransform: "capitalize",
|
textTransform: "capitalize",
|
||||||
borderRadius: "8px",
|
borderRadius: "8px",
|
||||||
fontWeight: "500",
|
fontWeight: "500",
|
||||||
fontSize: "16px",
|
fontSize: "16px",
|
||||||
padding: "12px 10px",
|
padding: "12px 10px",
|
||||||
color: "#fff !important",
|
color: "#fff !important",
|
||||||
|
"&:hover": {
|
||||||
|
backgroundColor: "rgba(70, 135, 186, 0.8)"
|
||||||
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Sign In
|
Sign In
|
||||||
@@ -187,3 +184,39 @@ const SignInForm = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default SignInForm;
|
export default SignInForm;
|
||||||
|
|
||||||
|
// Custom styles for text fields in sign up
|
||||||
|
const textFieldStyles = {
|
||||||
|
"& .MuiOutlinedInput-root": {
|
||||||
|
"& fieldset": {
|
||||||
|
borderColor: "#4687BA",
|
||||||
|
"&:hover": {
|
||||||
|
borderColor: "#4687BA",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"&.Mui-focused fieldset": {
|
||||||
|
borderColor: "#4687BA",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"& .MuiInputAdornment-positionEnd": {
|
||||||
|
cursor: "pointer",
|
||||||
|
},
|
||||||
|
"& .MuiFormLabel-root": {
|
||||||
|
color: "#4687BA",
|
||||||
|
},
|
||||||
|
"&:hover .MuiFormLabel-root": {
|
||||||
|
color: "#4687BA",
|
||||||
|
},
|
||||||
|
"&.Mui-focused .MuiFormLabel-root": {
|
||||||
|
color: "#4687BA",
|
||||||
|
},
|
||||||
|
"& .MuiInputBase-input": {
|
||||||
|
color: "#4687BA",
|
||||||
|
},
|
||||||
|
"&:hover .MuiInputBase-input": {
|
||||||
|
color: "#4687BA",
|
||||||
|
},
|
||||||
|
"&.Mui-focused .MuiInputBase-input": {
|
||||||
|
color: "#4687BA",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ const SignUpForm = () => {
|
|||||||
<Typography fontSize="15px" mb="30px">
|
<Typography fontSize="15px" mb="30px">
|
||||||
Already have an account?{" "}
|
Already have an account?{" "}
|
||||||
<Link
|
<Link
|
||||||
href="/authentication/sign-in/"
|
href="/auth/sign-in/"
|
||||||
className="primaryColor text-decoration-none"
|
className="primaryColor text-decoration-none"
|
||||||
>
|
>
|
||||||
Sign in
|
Sign in
|
||||||
@@ -204,7 +204,7 @@ const SignUpForm = () => {
|
|||||||
|
|
||||||
<Grid item xs={6} sm={6} textAlign="end">
|
<Grid item xs={6} sm={6} textAlign="end">
|
||||||
<Link
|
<Link
|
||||||
href="/authentication/forgot-password"
|
href="/auth/forgot-password"
|
||||||
className="primaryColor text-decoration-none"
|
className="primaryColor text-decoration-none"
|
||||||
>
|
>
|
||||||
Forgot your password?
|
Forgot your password?
|
||||||
@@ -215,7 +215,7 @@ const SignUpForm = () => {
|
|||||||
<Button
|
<Button
|
||||||
type="submit"
|
type="submit"
|
||||||
fullWidth
|
fullWidth
|
||||||
variant="contained"
|
// variant="contained"
|
||||||
sx={{
|
sx={{
|
||||||
mt: 2,
|
mt: 2,
|
||||||
textTransform: "capitalize",
|
textTransform: "capitalize",
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
.favicon {
|
||||||
|
position: relative;
|
||||||
|
top: 5px;
|
||||||
|
max-width: 250px;
|
||||||
|
max-height: 250px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.authenticationBox {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
position: relative;
|
||||||
|
padding: 1rem;
|
||||||
|
|
||||||
|
/* Image */
|
||||||
|
background-image: url("../../public//images/auth/cms_home.jpg");
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
background-attachment: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.authenticationBox::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 600px) {
|
||||||
|
.authenticationBox {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import LeftSidebar from "@/components/_App/LeftSidebar";
|
import LeftSidebar from "@/components/_App/LeftSidebar";
|
||||||
@@ -11,48 +11,64 @@ import AuthRoute from "middlewares/AuthRoute";
|
|||||||
const Layout = ({ children }) => {
|
const Layout = ({ children }) => {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const [active, setActive] = useState(false);
|
const [active, setActive] = useState(false);
|
||||||
const isAuthenticated = false; // Replace with your authentication logic
|
|
||||||
|
const [isAuthenticationPage, setIsAuthenticationPage] = useState(false);
|
||||||
|
|
||||||
const toggleActive = () => {
|
const toggleActive = () => {
|
||||||
setActive(!active);
|
setActive(!active);
|
||||||
};
|
};
|
||||||
|
|
||||||
const isAuthenticationPage = [
|
useEffect(() => {
|
||||||
"/authentication/sign-in",
|
const authenticationPages = [
|
||||||
"/authentication/sign-up",
|
"/auth",
|
||||||
"/authentication/forgot-password",
|
"/auth/sign-in",
|
||||||
"/authentication/lock-screen",
|
"/auth/sign-up",
|
||||||
"/authentication/confirm-mail",
|
"/auth/forgot-password",
|
||||||
"/authentication/logout",
|
"/auth/lock-screen",
|
||||||
].includes(router.pathname);
|
"/auth/confirm-mail",
|
||||||
|
"/auth/logout",
|
||||||
|
];
|
||||||
|
|
||||||
|
setIsAuthenticationPage(authenticationPages.includes(router.pathname));
|
||||||
|
}, [router.pathname]);
|
||||||
|
|
||||||
|
// Debugging: Log the value of isAuthenticationPage
|
||||||
|
console.log("isAuthenticationPage:", isAuthenticationPage, router.pathname);
|
||||||
|
|
||||||
|
const title = isAuthenticationPage ? "CMC - auth" : "CMC - dashboard";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Head>
|
<Head>
|
||||||
<title>
|
<title>{title}</title>
|
||||||
{isAuthenticated ? "CMC - Client" : "CMC - Authentication"}
|
|
||||||
</title>
|
|
||||||
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
|
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
|
||||||
</Head>
|
</Head>
|
||||||
|
|
||||||
<AuthRoute>
|
<div
|
||||||
<div className={`main-wrapper-content ${active ? "active" : ""}`}>
|
className={`main-wrapper-content ${active ? "active" : ""}`}
|
||||||
{!isAuthenticationPage && (
|
style={{
|
||||||
<>
|
paddingLeft: isAuthenticationPage && "0",
|
||||||
<TopNavbar toggleActive={toggleActive} />
|
}}
|
||||||
<LeftSidebar toggleActive={toggleActive} />
|
>
|
||||||
</>
|
{!isAuthenticationPage && (
|
||||||
)}
|
<>
|
||||||
|
<TopNavbar toggleActive={toggleActive} />
|
||||||
|
<LeftSidebar toggleActive={toggleActive} />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
<div className="main-content">{children}</div>
|
<div
|
||||||
|
className={`main-content ${isAuthenticationPage ? "authBox" : ""}`}
|
||||||
{!isAuthenticationPage && <Footer />}
|
>
|
||||||
|
{children}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ScrollToTop />
|
{!isAuthenticationPage && <Footer />}
|
||||||
|
</div>
|
||||||
|
|
||||||
{!isAuthenticationPage && <ControlPanelModal />}
|
<ScrollToTop />
|
||||||
</AuthRoute>
|
|
||||||
|
{!isAuthenticationPage && <ControlPanelModal />}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ export const SidebarData = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Authentication",
|
title: "Authentication",
|
||||||
path: "/authentication/sign-in/",
|
path: "/auth/sign-in/",
|
||||||
icon: <LockIcon />,
|
icon: <LockIcon />,
|
||||||
iconClosed: <KeyboardArrowRightIcon />,
|
iconClosed: <KeyboardArrowRightIcon />,
|
||||||
iconOpened: <KeyboardArrowDownIcon />,
|
iconOpened: <KeyboardArrowDownIcon />,
|
||||||
@@ -458,23 +458,23 @@ export const SidebarData = [
|
|||||||
subNav: [
|
subNav: [
|
||||||
{
|
{
|
||||||
title: "Sign Up",
|
title: "Sign Up",
|
||||||
path: "/authentication/sign-up/",
|
path: "/auth/sign-up/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Forgot Password",
|
title: "Forgot Password",
|
||||||
path: "/authentication/forgot-password/",
|
path: "/auth/forgot-password/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Lock Screen",
|
title: "Lock Screen",
|
||||||
path: "/authentication/lock-screen/",
|
path: "/auth/lock-screen/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Confirm Mail",
|
title: "Confirm Mail",
|
||||||
path: "/authentication/confirm-mail/",
|
path: "/auth/confirm-mail/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Logout",
|
title: "Logout",
|
||||||
path: "/authentication/logout/",
|
path: "/auth/logout/",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ const SidebarWrap = styled("div")(({ theme }) => ({
|
|||||||
width: '100%'
|
width: '100%'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const Sidebar = ({ toogleActive }) => {
|
const Sidebar = ({ toggleActive }) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className='leftSidebarDark'>
|
<div className='leftSidebarDark'>
|
||||||
@@ -46,23 +46,24 @@ const Sidebar = ({ toogleActive }) => {
|
|||||||
>
|
>
|
||||||
<Link href='/'>
|
<Link href='/'>
|
||||||
<img
|
<img
|
||||||
src="/images/logo.png" alt="Logo"
|
src="/images/logos/wrenchboard-logo.png" alt="Logo"
|
||||||
className='black-logo'
|
className='black-logo'
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* For Dark Variation */}
|
{/* For Dark Variation */}
|
||||||
<img
|
<img
|
||||||
src="/images/logo-white.png" alt="Logo"
|
src="/images/logos/wrenchboard-logo.png" alt="Logo"
|
||||||
className='white-logo'
|
className='white-logo'
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<IconButton
|
<IconButton
|
||||||
onClick={toogleActive}
|
onClick={toggleActive}
|
||||||
size="small"
|
size="small"
|
||||||
sx={{
|
sx={{
|
||||||
background: 'rgb(253, 237, 237)',
|
background: 'rgb(253, 237, 237)',
|
||||||
display: { lg: 'none' }
|
display: { lg: 'none' },
|
||||||
|
marginLeft: "1rem"
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ClearIcon />
|
<ClearIcon />
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ const Profile = () => {
|
|||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/authentication/logout/"
|
href="/auth/logout/"
|
||||||
fontSize="13px"
|
fontSize="13px"
|
||||||
color="inherit"
|
color="inherit"
|
||||||
underline="none"
|
underline="none"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import Profile from "./Profile";
|
|||||||
import Tooltip from "@mui/material/Tooltip";
|
import Tooltip from "@mui/material/Tooltip";
|
||||||
import CurrentDate from "./CurrentDate";
|
import CurrentDate from "./CurrentDate";
|
||||||
|
|
||||||
const TopNavbar = ({ toogleActive }) => {
|
const TopNavbar = ({ toggleActive }) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="topNavbarDark">
|
<div className="topNavbarDark">
|
||||||
@@ -28,7 +28,7 @@ const TopNavbar = ({ toogleActive }) => {
|
|||||||
size="sm"
|
size="sm"
|
||||||
edge="start"
|
edge="start"
|
||||||
color="inherit"
|
color="inherit"
|
||||||
onClick={toogleActive}
|
onClick={toggleActive}
|
||||||
>
|
>
|
||||||
<i className="ri-align-left"></i>
|
<i className="ri-align-left"></i>
|
||||||
</IconButton>
|
</IconButton>
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
|
|||||||
&& yarn --version
|
&& yarn --version
|
||||||
|
|
||||||
COPY docker-entrypoint.sh /usr/local/bin/
|
COPY docker-entrypoint.sh /usr/local/bin/
|
||||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
# ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
# COPY docker-entrypoint.sh /usr/local/bin/
|
# COPY docker-entrypoint.sh /usr/local/bin/
|
||||||
# ENTRYPOINT ["docker-entrypoint.sh"]
|
# ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
"use client"
|
"use client";
|
||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is used to protect routes in a web application.
|
* This function is used to protect routes in a web application.
|
||||||
* It checks if the user is authenticated and redirects them to the sign-in page if they are not.
|
* It checks if the user is authenticated and redirects them to the sign-in page if they are not.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
const AuthRoute = ({ children }) => {
|
const AuthRoute = ({ children }) => {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -13,8 +14,8 @@ const AuthRoute = ({ children }) => {
|
|||||||
const isAuthenticated = false; // In a real application, this would be determined based on the user's authentication status.
|
const isAuthenticated = false; // In a real application, this would be determined based on the user's authentication status.
|
||||||
|
|
||||||
if (!isAuthenticated) {
|
if (!isAuthenticated) {
|
||||||
router.push("/authentication/sign-in/");
|
router.push("/auth/sign-in");
|
||||||
}
|
}
|
||||||
}, [router]);
|
}, [router]);
|
||||||
|
|
||||||
return <>{children}</>;
|
return <>{children}</>;
|
||||||
|
|||||||
@@ -1,34 +1,36 @@
|
|||||||
import React from 'react';
|
import React from "react";
|
||||||
import '../styles/remixicon.css'
|
import "../styles/remixicon.css";
|
||||||
import 'react-tabs/style/react-tabs.css';
|
import "react-tabs/style/react-tabs.css";
|
||||||
import "swiper/css";
|
import "swiper/css";
|
||||||
import "swiper/css/bundle";
|
import "swiper/css/bundle";
|
||||||
|
|
||||||
// Chat Styles
|
// Chat Styles
|
||||||
import '../styles/chat.css'
|
import "../styles/chat.css";
|
||||||
// Globals Styles
|
// Globals Styles
|
||||||
import '../styles/globals.css'
|
import "../styles/globals.css";
|
||||||
// Rtl Styles
|
// Rtl Styles
|
||||||
import '../styles/rtl.css'
|
import "../styles/rtl.css";
|
||||||
// Dark Mode Styles
|
// Dark Mode Styles
|
||||||
import '../styles/dark.css'
|
import "../styles/dark.css";
|
||||||
// Theme Styles
|
// Theme Styles
|
||||||
import theme from '../styles/theme'
|
import theme from "../styles/theme";
|
||||||
|
|
||||||
import { ThemeProvider, CssBaseline } from "@mui/material";
|
import { ThemeProvider, CssBaseline } from "@mui/material";
|
||||||
import Layout from "@/components/_App/Layout";
|
import Layout from "@/components/_App/Layout";
|
||||||
|
import AuthRoute from "middlewares/AuthRoute";
|
||||||
|
|
||||||
function MyApp({ Component, pageProps }) {
|
function MyApp({ Component, pageProps }) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ThemeProvider theme={theme}>
|
<ThemeProvider theme={theme}>
|
||||||
<CssBaseline />
|
<CssBaseline />
|
||||||
<Layout>
|
<AuthRoute>
|
||||||
<Component {...pageProps} />
|
<Layout>
|
||||||
</Layout>
|
<Component {...pageProps} />
|
||||||
|
</Layout>
|
||||||
|
</AuthRoute>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default MyApp
|
export default MyApp;
|
||||||
|
|||||||
@@ -7,11 +7,32 @@ class MyDocument extends Document {
|
|||||||
return (
|
return (
|
||||||
<Html dir={dir} lang={locale}>
|
<Html dir={dir} lang={locale}>
|
||||||
<Head>
|
<Head>
|
||||||
<link rel="icon" href="/images/favicon.png" />
|
<link
|
||||||
<link
|
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"
|
||||||
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"
|
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{/* Icons */}
|
||||||
|
<link rel="icon" href="/images/icons/favicon.ico" />
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
href="/images/icons/favicon-16x16.png"
|
||||||
|
sizes="16x16"
|
||||||
|
type="image/png"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
href="/images/icons/android-chrome-192x192.png"
|
||||||
|
sizes="192x192"
|
||||||
|
type="image/png"
|
||||||
|
/>
|
||||||
|
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
href="/images/icons/android-chrome-512x512.png"
|
||||||
|
sizes="512x512"
|
||||||
|
type="image/png"
|
||||||
|
/>
|
||||||
</Head>
|
</Head>
|
||||||
<body>
|
<body>
|
||||||
<Main />
|
<Main />
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import SignInForm from "@/components/Authentication/SignInForm";
|
||||||
|
|
||||||
|
export default function Index() {
|
||||||
|
return <SignInForm />;
|
||||||
|
}
|
||||||
@@ -51,7 +51,7 @@ export default function Logout() {
|
|||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
href="/authentication/sign-in/"
|
href="/auth/sign-in/"
|
||||||
fullWidth
|
fullWidth
|
||||||
variant="contained"
|
variant="contained"
|
||||||
sx={{
|
sx={{
|
||||||
@@ -15,7 +15,6 @@ import RecentOrders from "@/components/Dashboard/eCommerce/RecentOrders";
|
|||||||
import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList";
|
import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList";
|
||||||
import BestSellingProducts from "@/components/Dashboard/eCommerce/BestSellingProducts";
|
import BestSellingProducts from "@/components/Dashboard/eCommerce/BestSellingProducts";
|
||||||
import LiveVisitsOnOurSite from "@/components/Dashboard/eCommerce/LiveVisitsOnOurSite";
|
import LiveVisitsOnOurSite from "@/components/Dashboard/eCommerce/LiveVisitsOnOurSite";
|
||||||
import AuthRoute from "middlewares/AuthRoute";
|
|
||||||
|
|
||||||
function MainPage() {
|
function MainPage() {
|
||||||
return (
|
return (
|
||||||
|
|||||||
|
After Width: | Height: | Size: 443 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 713 B |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 110 KiB |
@@ -13,6 +13,7 @@
|
|||||||
--fontSize: 15px;
|
--fontSize: 15px;
|
||||||
--transition: all ease .5s;
|
--transition: all ease .5s;
|
||||||
--box-shadow: 0 0 20px 3px rgba(0, 0, 0, 0.05);
|
--box-shadow: 0 0 20px 3px rgba(0, 0, 0, 0.05);
|
||||||
|
--mobile-auth-padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
html, body {
|
html, body {
|
||||||
@@ -817,12 +818,17 @@ img {
|
|||||||
padding-right: 30px;
|
padding-right: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.main-wrapper-content .main-content.authBox{
|
||||||
|
padding: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 767px) {
|
@media only screen and (max-width: 767px) {
|
||||||
.main-wrapper-content .main-content {
|
.main-wrapper-content .main-content {
|
||||||
padding-left: 15px !important;
|
padding-left: 15px !important;
|
||||||
padding-right: 15px !important;
|
padding-right: 15px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1199px) {
|
@media only screen and (max-width: 1199px) {
|
||||||
.main-wrapper-content {
|
.main-wrapper-content {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|||||||