From cd465edc568e640970136af1fd2aeca8a195957d Mon Sep 17 00:00:00 2001 From: Nalvazhuthi Date: Mon, 18 Aug 2025 10:07:47 +0530 Subject: [PATCH] Add Forgot Password functionality and related components - Introduced new components for the Forgot Password flow: EmailInput, OTPInput, OTPVerification, PasswordSetup, and ConfirmationMessage. - Implemented navigation updates in DashboardCard for project links. - Added a new decal image asset for the categories. - Updated sidebar assets to include decals. - Enhanced UserAuth page to include a link for forgotten passwords. - Created a dedicated ForgotPassword page to manage the entire password recovery process. - Added styles for the new Forgot Password components and updated existing styles for consistency. --- app/src/app.tsx | 4 +- app/src/assets/cursors/close.svg | 2 +- app/src/assets/cursors/pointing.svg | 2 +- app/src/assets/image/categories/decal.png | Bin 0 -> 72754 bytes .../components/Dashboard/DashboardCard.tsx | 4 +- .../forgotPassword/ConfirmationMessgae.tsx | 15 +++ .../components/forgotPassword/EmailInput.tsx | 30 ++++++ .../components/forgotPassword/OTPInput.tsx | 52 +++++++++ .../forgotPassword/OTP_Verification.tsx | 57 ++++++++++ .../forgotPassword/PasswordSetup.tsx | 77 ++++++++++++++ app/src/components/icons/ContextMenuIcons.tsx | 6 +- .../components/icons/ExportCommonIcons.tsx | 11 ++ .../components/layout/sidebarLeft/Assets.tsx | 2 + app/src/pages/ForgotPassword.tsx | 92 ++++++++++++++++ app/src/pages/UserAuth.tsx | 9 +- app/src/styles/base/reset.scss | 16 ++- app/src/styles/layout/sidebar.scss | 53 +++++----- app/src/styles/main.scss | 1 + app/src/styles/pages/forgotPassword.scss | 100 ++++++++++++++++++ app/src/styles/pages/userAuth.scss | 11 ++ 20 files changed, 500 insertions(+), 44 deletions(-) create mode 100644 app/src/assets/image/categories/decal.png create mode 100644 app/src/components/forgotPassword/ConfirmationMessgae.tsx create mode 100644 app/src/components/forgotPassword/EmailInput.tsx create mode 100644 app/src/components/forgotPassword/OTPInput.tsx create mode 100644 app/src/components/forgotPassword/OTP_Verification.tsx create mode 100644 app/src/components/forgotPassword/PasswordSetup.tsx create mode 100644 app/src/pages/ForgotPassword.tsx create mode 100644 app/src/styles/pages/forgotPassword.scss diff --git a/app/src/app.tsx b/app/src/app.tsx index b03d4df..9685c13 100644 --- a/app/src/app.tsx +++ b/app/src/app.tsx @@ -6,6 +6,7 @@ import Project from "./pages/Project"; import UserAuth from "./pages/UserAuth"; import "./styles/main.scss"; import { LoggerProvider } from "./components/ui/log/LoggerContext"; +import ForgotPassword from "./pages/ForgotPassword"; const App: React.FC = () => { @@ -19,8 +20,9 @@ const App: React.FC = () => { } /> + } /> } /> - } /> + } /> diff --git a/app/src/assets/cursors/close.svg b/app/src/assets/cursors/close.svg index 6fdebed..5b809eb 100644 --- a/app/src/assets/cursors/close.svg +++ b/app/src/assets/cursors/close.svg @@ -1,6 +1,6 @@ - + diff --git a/app/src/assets/cursors/pointing.svg b/app/src/assets/cursors/pointing.svg index 4a50a4b..1daa471 100644 --- a/app/src/assets/cursors/pointing.svg +++ b/app/src/assets/cursors/pointing.svg @@ -1,6 +1,6 @@ - + diff --git a/app/src/assets/image/categories/decal.png b/app/src/assets/image/categories/decal.png new file mode 100644 index 0000000000000000000000000000000000000000..ece13a7687b89fd7dec2427cc481dc6fe5923f43 GIT binary patch literal 72754 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 Hca8lY_CTwY literal 0 HcmV?d00001 diff --git a/app/src/components/Dashboard/DashboardCard.tsx b/app/src/components/Dashboard/DashboardCard.tsx index 0f75d19..8ac05b6 100644 --- a/app/src/components/Dashboard/DashboardCard.tsx +++ b/app/src/components/Dashboard/DashboardCard.tsx @@ -75,7 +75,7 @@ const DashboardCard: React.FC = ({ setLoadingProgress(1); setProjectName(projectName); - navigate(`/${projectId}`); + navigate(`/projects/${projectId}`); } catch {} }; @@ -108,7 +108,7 @@ const DashboardCard: React.FC = ({ setIsKebabOpen(false); } } catch (error) {} - window.open(`/${projectId}`, "_blank"); + window.open(`/projects/${projectId}`, "_blank"); break; case "rename": setIsRenaming(true); diff --git a/app/src/components/forgotPassword/ConfirmationMessgae.tsx b/app/src/components/forgotPassword/ConfirmationMessgae.tsx new file mode 100644 index 0000000..4a22b03 --- /dev/null +++ b/app/src/components/forgotPassword/ConfirmationMessgae.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { SuccessIcon } from '../icons/ExportCommonIcons'; + +const ConfirmationMessage: React.FC = () => { + return ( +

+
+

Successfully

+

Your password has been reset successfully

+ Login +
+ ); +}; + +export default ConfirmationMessage; diff --git a/app/src/components/forgotPassword/EmailInput.tsx b/app/src/components/forgotPassword/EmailInput.tsx new file mode 100644 index 0000000..d3ca158 --- /dev/null +++ b/app/src/components/forgotPassword/EmailInput.tsx @@ -0,0 +1,30 @@ +import React from 'react'; + +interface Props { + email: string; + setEmail: (value: string) => void; + onSubmit: () => void; +} + +const EmailInput: React.FC = ({ email, setEmail, onSubmit }) => { + return ( +
+

Forgot password

+

+ Enter your email for the verification process, we will send a 4-digit code to your email. +

+
{ e.preventDefault(); onSubmit(); }}> + setEmail(e.target.value)} + required + /> + +
+
+ ); +}; + +export default EmailInput; diff --git a/app/src/components/forgotPassword/OTPInput.tsx b/app/src/components/forgotPassword/OTPInput.tsx new file mode 100644 index 0000000..e14b45e --- /dev/null +++ b/app/src/components/forgotPassword/OTPInput.tsx @@ -0,0 +1,52 @@ +import React, { useState, useRef, useEffect } from 'react'; + +const OTPInput: React.FC<{ length?: number; onComplete: (otp: string) => void }> = ({ length = 4, onComplete }) => { + const [otpValues, setOtpValues] = useState(Array(length).fill('')); + const inputsRef = useRef<(HTMLInputElement | null)[]>([]); + + // Auto focus first input on mount + useEffect(() => { + inputsRef.current[0]?.focus(); + }, []); + + const handleChange = (value: string, index: number) => { + if (/^[0-9]?$/.test(value)) { + const newOtp = [...otpValues]; + newOtp[index] = value; + setOtpValues(newOtp); + + if (value && index < length - 1) { + inputsRef.current[index + 1]?.focus(); + } + + if (newOtp.every((digit) => digit !== '')) { + onComplete(newOtp.join('')); + } + } + }; + + const handleKeyDown = (e: React.KeyboardEvent, index: number) => { + if (e.key === 'Backspace' && !otpValues[index] && index > 0) { + inputsRef.current[index - 1]?.focus(); + } + }; + + return ( +
+ {otpValues.map((value, index) => ( + handleChange(e.target.value, index)} + onKeyDown={(e) => handleKeyDown(e, index)} + ref={(el) => (inputsRef.current[index] = el)} + /> + ))} +
+ ); +}; + +export default OTPInput; diff --git a/app/src/components/forgotPassword/OTP_Verification.tsx b/app/src/components/forgotPassword/OTP_Verification.tsx new file mode 100644 index 0000000..8af7836 --- /dev/null +++ b/app/src/components/forgotPassword/OTP_Verification.tsx @@ -0,0 +1,57 @@ +import React, { useState } from 'react'; +import OTPInput from './OTPInput'; + +interface Props { + email: string; + timer: number; + setCode: (value: string) => void; + onSubmit: () => void; + resendCode: () => void; +} + +const OTPVerification: React.FC = ({ email, timer, setCode, onSubmit, resendCode }) => { + const [otp, setOtp] = useState(''); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + console.log('otp.length: ', otp.length); + if (otp.length === 4) { + onSubmit(); + } else { + alert('Please enter the 4-digit code'); + } + }; + + return ( +
+

Verification

+

+ Enter the 4-digit code sent to {email}. +

+
+ { setOtp(code); setCode(code); }} /> +
+ {timer > 0 + ? `${String(Math.floor(timer / 60)).padStart(2, '0')}:${String(timer % 60).padStart(2, '0')}` + : ''} +
+ + +
0 ? 'disabled' : ''}`} + onClick={timer === 0 ? resendCode : undefined} + style={{ cursor: timer === 0 ? 'pointer' : 'not-allowed', opacity: timer === 0 ? 1 : 0.5 }} + > + If you didn’t receive a code, Resend +
+
+ ); +}; + +export default OTPVerification; diff --git a/app/src/components/forgotPassword/PasswordSetup.tsx b/app/src/components/forgotPassword/PasswordSetup.tsx new file mode 100644 index 0000000..4c6af1c --- /dev/null +++ b/app/src/components/forgotPassword/PasswordSetup.tsx @@ -0,0 +1,77 @@ +import React, { useState } from 'react'; +import { EyeIcon } from '../icons/ExportCommonIcons'; + +interface Props { + newPassword: string; + confirmPassword: string; + setNewPassword: (value: string) => void; + setConfirmPassword: (value: string) => void; + onSubmit: () => void; +} + +const PasswordSetup: React.FC = ({ + newPassword, + confirmPassword, + setNewPassword, + setConfirmPassword, + onSubmit +}) => { + const [showNewPassword, setShowNewPassword] = useState(false); + const [showConfirmPassword, setShowConfirmPassword] = useState(false); + + return ( +
+

New Password

+

Set the new password for your account so you can login and access all features.

+
{ + e.preventDefault(); + if (newPassword !== confirmPassword) { + alert('Passwords do not match'); + return; + } + onSubmit(); + }} + > +
+ setNewPassword(e.target.value)} + required + /> + +
+ +
+ setConfirmPassword(e.target.value)} + required + /> + +
+ + +
+
+ ); +}; + +export default PasswordSetup; diff --git a/app/src/components/icons/ContextMenuIcons.tsx b/app/src/components/icons/ContextMenuIcons.tsx index 210f1b9..3220547 100644 --- a/app/src/components/icons/ContextMenuIcons.tsx +++ b/app/src/components/icons/ContextMenuIcons.tsx @@ -192,7 +192,7 @@ export function DublicateIcon() { - + @@ -278,7 +278,7 @@ export function MoveIcon() { export function RotateIcon() { return ( - + ); } @@ -286,7 +286,7 @@ export function RotateIcon() { export function GroupIcon() { return ( - + ); } diff --git a/app/src/components/icons/ExportCommonIcons.tsx b/app/src/components/icons/ExportCommonIcons.tsx index 6f9a1fb..7cee77f 100644 --- a/app/src/components/icons/ExportCommonIcons.tsx +++ b/app/src/components/icons/ExportCommonIcons.tsx @@ -1335,3 +1335,14 @@ export const GreenTickIcon = () => { ); }; + + +export const SuccessIcon = () => { + return ( + + + + + + ) +} \ No newline at end of file diff --git a/app/src/components/layout/sidebarLeft/Assets.tsx b/app/src/components/layout/sidebarLeft/Assets.tsx index 8c8b4d7..9ea5f1a 100644 --- a/app/src/components/layout/sidebarLeft/Assets.tsx +++ b/app/src/components/layout/sidebarLeft/Assets.tsx @@ -13,6 +13,7 @@ import storage from "../../../assets/image/categories/storage.png"; import office from "../../../assets/image/categories/office.png"; import safety from "../../../assets/image/categories/safety.png"; import feneration from "../../../assets/image/categories/feneration.png"; +import decal from "../../../assets/image/categories/decal.png"; import SkeletonUI from "../../templates/SkeletonUI"; // ------------------------------------- @@ -86,6 +87,7 @@ const Assets: React.FC = () => { useEffect(() => { setCategoryList([ { category: "Fenestration", categoryImage: feneration }, + { category: "Decals", categoryImage: decal }, { category: "Vehicles", categoryImage: vehicle }, { category: "Workstation", categoryImage: workStation }, { category: "Machines", categoryImage: machines }, diff --git a/app/src/pages/ForgotPassword.tsx b/app/src/pages/ForgotPassword.tsx new file mode 100644 index 0000000..8681996 --- /dev/null +++ b/app/src/pages/ForgotPassword.tsx @@ -0,0 +1,92 @@ +import React, { useState, useEffect } from 'react'; +import { LogoIconLarge } from '../components/icons/Logo'; +import EmailInput from '../components/forgotPassword/EmailInput'; +import OTPVerification from '../components/forgotPassword/OTP_Verification'; +import PasswordSetup from '../components/forgotPassword/PasswordSetup'; +import ConfirmationMessage from '../components/forgotPassword/ConfirmationMessgae'; + +const ForgotPassword: React.FC = () => { + const [step, setStep] = useState(1); + const [email, setEmail] = useState(''); + const [code, setCode] = useState(''); + const [newPassword, setNewPassword] = useState(''); + const [confirmPassword, setConfirmPassword] = useState(''); + const [timer, setTimer] = useState(30); + + useEffect(() => { + let countdown: NodeJS.Timeout; + if (step === 2 && timer > 0) { + countdown = setTimeout(() => setTimer(prev => prev - 1), 1000); + } + return () => clearTimeout(countdown); + }, [step, timer]); + + const handleSubmitEmail = () => { + setStep(2); + setTimer(30); + } + const resendCode = () => { + // TODO: call API to resend code + setTimer(30); + }; + + return ( +
+
+
+ +
+ + + {step === 1 && ( + <> + + Login + + + )} + + + {step === 2 && ( + <> + setStep(3)} + resendCode={resendCode} + /> + Login + + + )} + + + {step === 3 && ( + <> + setStep(4)} + /> + Login + + + )} + + + {step === 4 && } + + +
+
+ ); +}; + +export default ForgotPassword; diff --git a/app/src/pages/UserAuth.tsx b/app/src/pages/UserAuth.tsx index fe65701..8c45b77 100644 --- a/app/src/pages/UserAuth.tsx +++ b/app/src/pages/UserAuth.tsx @@ -58,10 +58,10 @@ const UserAuth: React.FC = () => { const projects = await recentlyViewed(organization, res.message.userId); if (res.message.isShare) { if (Object.values(projects.RecentlyViewed).length > 0) { - const firstId = (Object.values(projects?.RecentlyViewed || {})[0] as any)?._id; - if (Object.values(projects?.RecentlyViewed).filter((val: any) => val._id == firstId)) { + const recent_opend_projectID = (Object.values(projects?.RecentlyViewed || {})[0] as any)?._id; + if (Object.values(projects?.RecentlyViewed).filter((val: any) => val._id == recent_opend_projectID)) { setLoadingProgress(1) - navigate(`/${firstId}`) + navigate(`/projects/${recent_opend_projectID}`) } else { navigate("/Dashboard") } @@ -200,6 +200,9 @@ const UserAuth: React.FC = () => { + + {isSignIn && Forgot password ?} + {!isSignIn && (
diff --git a/app/src/styles/base/reset.scss b/app/src/styles/base/reset.scss index 82d286e..abd16f7 100644 --- a/app/src/styles/base/reset.scss +++ b/app/src/styles/base/reset.scss @@ -6,9 +6,17 @@ font-size: var(--font-size-regular); } -input[type="password"]::-ms-reveal, /* For Microsoft Edge */ -input[type="password"]::-ms-clear, /* For Edge clear button */ -input[type="password"]::-webkit-clear-button, /* For Chrome/Safari clear button */ -input[type="password"]::-webkit-inner-spin-button { /* Just in case */ +input[type="password"]::-ms-reveal, +/* For Microsoft Edge */ +input[type="password"]::-ms-clear, +/* For Edge clear button */ +input[type="password"]::-webkit-clear-button, +/* For Chrome/Safari clear button */ +input[type="password"]::-webkit-inner-spin-button { + /* Just in case */ display: none; } + +a { + text-decoration: none; +} \ No newline at end of file diff --git a/app/src/styles/layout/sidebar.scss b/app/src/styles/layout/sidebar.scss index 6b24256..9030be7 100644 --- a/app/src/styles/layout/sidebar.scss +++ b/app/src/styles/layout/sidebar.scss @@ -1657,11 +1657,12 @@ .sidebar-right-wrapper { .wall-properties-container { - .wall-properties-section{ + .wall-properties-section { padding: 14px; padding-bottom: 0; margin-bottom: 8px; } + .header { color: var(--text-color); } @@ -1910,63 +1911,59 @@ &:nth-child(1), &:nth-child(8) { &::after { - @include gradient-by-child( - 1 - ); // First child uses the first color + @include gradient-by-child(1); // First child uses the first color } } - &:nth-child(2), + &:nth-child(2) { + &::after { + + // @include gradient-by-child(4); // Second child uses the second color + background: linear-gradient(144.19deg, rgba(197, 137, 26, 0.7) 16.62%, rgba(69, 48, 10, 0.7) 85.81%); + + } + + } + + &:nth-child(3), &:nth-child(9) { &::after { - @include gradient-by-child( - 2 - ); // Second child uses the second color + @include gradient-by-child(3); // Second child uses the second color } } &:nth-child(3), &:nth-child(10) { &::after { - @include gradient-by-child( - 3 - ); // Third child uses the third color + @include gradient-by-child(3); // Third child uses the third color } } &:nth-child(4), &:nth-child(11) { &::after { - @include gradient-by-child( - 4 - ); // Fourth child uses the fourth color + @include gradient-by-child(4); // Fourth child uses the fourth color } } &:nth-child(5), &:nth-child(12) { &::after { - @include gradient-by-child( - 5 - ); // Fifth child uses the fifth color + @include gradient-by-child(5); // Fifth child uses the fifth color } } &:nth-child(6), &:nth-child(13) { &::after { - @include gradient-by-child( - 6 - ); // Fifth child uses the fifth color + @include gradient-by-child(6); // Fifth child uses the fifth color } } &:nth-child(7), &:nth-child(14) { &::after { - @include gradient-by-child( - 7 - ); // Fifth child uses the fifth color + @include gradient-by-child(7); // Fifth child uses the fifth color } } @@ -2025,11 +2022,9 @@ width: 100%; height: 100%; font-size: var(--font-size-regular); - background: linear-gradient( - 0deg, - rgba(37, 24, 51, 0) 0%, - rgba(52, 41, 61, 0.5) 100% - ); + background: linear-gradient(0deg, + rgba(37, 24, 51, 0) 0%, + rgba(52, 41, 61, 0.5) 100%); pointer-events: none; backdrop-filter: blur(8px); opacity: 0; @@ -2285,4 +2280,4 @@ text-transform: capitalize; } } -} +} \ No newline at end of file diff --git a/app/src/styles/main.scss b/app/src/styles/main.scss index 69dc2b7..b73439f 100644 --- a/app/src/styles/main.scss +++ b/app/src/styles/main.scss @@ -43,6 +43,7 @@ @use "pages/home"; @use "pages/realTimeViz"; @use "pages/userAuth"; +@use "pages/forgotPassword"; // @use "./scene/scene"; diff --git a/app/src/styles/pages/forgotPassword.scss b/app/src/styles/pages/forgotPassword.scss new file mode 100644 index 0000000..4965029 --- /dev/null +++ b/app/src/styles/pages/forgotPassword.scss @@ -0,0 +1,100 @@ +@use "../abstracts/variables.scss" as *; +@use "../abstracts/mixins.scss" as *; + +.forgot-password-page { + + .header, + .sub-header { + margin: 0; + text-align: center; + line-height: 20px; + } + + .login { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + max-width: 350px; + padding: 10px; + margin-bottom: 20px; + border: 1px solid var(--highlight-text-color); + border-radius: 20px; + background: transparent; + color: var(--highlight-text-color); + font-size: 14px; + outline: none; + cursor: pointer; + } + + .forgot-password-wrapper { + width: 25%; + display: flex; + flex-direction: column; + gap: 16px; + justify-content: center; + align-items: center; + + .logo-icon { + width: 150px; + height: auto; + margin: auto; + } + + .request-container { + width: 100%; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + gap: 16px; + + .sub-header { + width: 100% !important; + } + + .login { + position: relative; + top: 0; + left: 0; + } + + .auth-form { + margin: 0; + + .continue-button { + margin-top: 6px; + } + + .timing { + margin: 6px 0; + color: #F2451C; + + } + + .otp-container { + display: flex; + gap: 24px; + justify-content: center; + + .otp-input { + width: 60px !important; + height: 60px !important; + text-align: center; + font-size: 20px; + font-weight: bold; + border: 1px solid var(--border-color); + border-radius: 4px !important; + outline: none; + transition: border-color 0.2s; + + &:focus, + &:active { + outline: 1px solid var(--border-color-accent); + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/styles/pages/userAuth.scss b/app/src/styles/pages/userAuth.scss index e21c401..46c9b2e 100644 --- a/app/src/styles/pages/userAuth.scss +++ b/app/src/styles/pages/userAuth.scss @@ -119,6 +119,17 @@ } } + .forgot-password { + width: 100%; + margin-bottom: 10px; + margin-right: 12px; + color: var(--text-color); + font-size: 12px; + text-align: right; + cursor: pointer; + text-decoration: none; + } + .continue-button { width: 100%; padding: 10px;