9 Commits

27 changed files with 121 additions and 107 deletions
@@ -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
+13 -38
View File
@@ -8,6 +8,7 @@ import Button from "@mui/material/Button";
import FormControlLabel from "@mui/material/FormControlLabel"; import FormControlLabel from "@mui/material/FormControlLabel";
import Checkbox from "@mui/material/Checkbox"; import Checkbox from "@mui/material/Checkbox";
import styles from "@/components/Authentication/Authentication.module.css"; import styles from "@/components/Authentication/Authentication.module.css";
import WrenchBoardLogo from "@/public/images/logos/wrenchboard-logo.png";
const SignInForm = () => { const SignInForm = () => {
const handleSubmit = (event) => { const handleSubmit = (event) => {
@@ -33,47 +34,21 @@ const SignInForm = () => {
> >
<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="60px"
>
<img <img
src="/images/favicon.png" src="/images/logos/wrenchboard-logo.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 as="h1" fontSize="28px" fontWeight="700" mb="5px">
<div className={styles.or}> Sign In{" "}
<span>or</span> </Typography>
</div> */}
<Box component="form" noValidate onSubmit={handleSubmit}> <Box component="form" noValidate onSubmit={handleSubmit}>
<Box <Box
@@ -153,7 +128,7 @@ const SignInForm = () => {
<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?
+2 -2
View File
@@ -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?
+34 -27
View File
@@ -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,55 @@ 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 className={`main-wrapper-content ${active ? "active" : ""}`}>
<div className={`main-wrapper-content ${active ? "active" : ""}`}> {!isAuthenticationPage && (
{!isAuthenticationPage && ( <>
<> <TopNavbar toggleActive={toggleActive} />
<TopNavbar toggleActive={toggleActive} /> <LeftSidebar toggleActive={toggleActive} />
<LeftSidebar toggleActive={toggleActive} /> </>
</> )}
)}
<div className="main-content">{children}</div> <div className="main-content">{children}</div>
{!isAuthenticationPage && <Footer />} {!isAuthenticationPage && <Footer />}
</div> </div>
<ScrollToTop /> <ScrollToTop />
{!isAuthenticationPage && <ControlPanelModal />} {!isAuthenticationPage && <ControlPanelModal />}
</AuthRoute>
</> </>
); );
}; };
+6 -6
View File
@@ -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/",
}, },
], ],
}, },
+6 -5
View File
@@ -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 />
+1 -1
View File
@@ -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"
+2 -2
View File
@@ -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>
+1 -1
View File
@@ -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"]
+6 -5
View File
@@ -1,20 +1,21 @@
"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();
useEffect(() => { useEffect(() => {
const isAuthenticated = false; // In a real application, this would be determined based on the user's authentication status. const isAuthenticated = true; // 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/");
} }
}, [router]); }, [router]);
return <>{children}</>; return <>{children}</>;
+15 -13
View File
@@ -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;
+24 -3
View File
@@ -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 />
+5
View File
@@ -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={{
-1
View File
@@ -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 (
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB