From 80684ff685c6a91077e9808ef9c9dde6f1bd0e75 Mon Sep 17 00:00:00 2001 From: Md-Rubel-Ahmed-Rana Date: Sat, 6 Jul 2024 17:53:00 +0600 Subject: [PATCH] Forget and Reset password page design completed --- .../components/pages/forgetPassword/index.tsx | 60 ++++++++ frontend/src/components/pages/login/Login.tsx | 9 +- .../components/pages/resetPassword/index.tsx | 132 ++++++++++++++++++ frontend/src/pages/forget-password/index.tsx | 14 ++ frontend/src/pages/reset-password/index.tsx | 14 ++ 5 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 frontend/src/components/pages/forgetPassword/index.tsx create mode 100644 frontend/src/components/pages/resetPassword/index.tsx create mode 100644 frontend/src/pages/forget-password/index.tsx create mode 100644 frontend/src/pages/reset-password/index.tsx diff --git a/frontend/src/components/pages/forgetPassword/index.tsx b/frontend/src/components/pages/forgetPassword/index.tsx new file mode 100644 index 0000000..14692a1 --- /dev/null +++ b/frontend/src/components/pages/forgetPassword/index.tsx @@ -0,0 +1,60 @@ +import { useRouter } from "next/router"; +import { SubmitHandler, useForm } from "react-hook-form"; + +type FormData = { + email: string; +}; + +const ForgetPasswordPage = () => { + const router = useRouter(); + const { + register, + handleSubmit, + formState: { errors }, + } = useForm({ mode: "onChange" }); + const handleSubmitEmail: SubmitHandler = (data) => { + router.push("/reset-password"); + }; + return ( +
+
+

Forgot Password

+

+ Enter your email to reset your password. +

+
+
+ + {errors.email && ( +

+ {errors.email.message} +

+ )} +
+ +
+
+
+ ); +}; + +export default ForgetPasswordPage; diff --git a/frontend/src/components/pages/login/Login.tsx b/frontend/src/components/pages/login/Login.tsx index 995a3c3..ba2809b 100644 --- a/frontend/src/components/pages/login/Login.tsx +++ b/frontend/src/components/pages/login/Login.tsx @@ -117,10 +117,13 @@ const Login = () => { -
- +
+
+
+ + + value === password || "Passwords do not match", + })} + className={`appearance-none dark:text-white rounded-md relative block w-full px-3 py-2 border ${ + errors.confirmPassword ? "border-red-500" : "border-gray-300" + } placeholder-gray-500 text-gray-900 rounded-b-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm`} + placeholder="Enter a new password" + /> + {errors.confirmPassword && ( +

+ {errors.confirmPassword.message} +

+ )} + +
+ + + + + ); +}; + +export default ResetPasswordPage; diff --git a/frontend/src/pages/forget-password/index.tsx b/frontend/src/pages/forget-password/index.tsx new file mode 100644 index 0000000..40f042f --- /dev/null +++ b/frontend/src/pages/forget-password/index.tsx @@ -0,0 +1,14 @@ +import ForgetPasswordPage from "@/components/pages/forgetPassword"; +import RootLayout from "@/layout/RootLayout"; +import { NextPageWithLayout } from "pages/_app"; +import React, { ReactElement } from "react"; + +const ForgetPassword: NextPageWithLayout = () => { + return ; +}; + +export default ForgetPassword; + +ForgetPassword.getLayout = function (page: ReactElement) { + return {page}; +}; diff --git a/frontend/src/pages/reset-password/index.tsx b/frontend/src/pages/reset-password/index.tsx new file mode 100644 index 0000000..48386fd --- /dev/null +++ b/frontend/src/pages/reset-password/index.tsx @@ -0,0 +1,14 @@ +import ResetPasswordPage from "@/components/pages/resetPassword"; +import RootLayout from "@/layout/RootLayout"; +import { NextPageWithLayout } from "pages/_app"; +import React, { ReactElement } from "react"; + +const ResetPassword: NextPageWithLayout = () => { + return ; +}; + +export default ResetPassword; + +ResetPassword.getLayout = function (page: ReactElement) { + return {page}; +};