From 9c45ce61b8d6733fbc160bc59666eb8fcc03f73e Mon Sep 17 00:00:00 2001 From: Adithya Krishna Date: Sat, 26 Aug 2023 12:31:40 +0530 Subject: [PATCH] feat: added show password feature Signed-off-by: Adithya Krishna --- apps/web/src/components/forms/password.tsx | 70 ++++++++++++++++++---- apps/web/src/components/forms/signin.tsx | 37 +++++++++--- apps/web/src/components/forms/signup.tsx | 37 +++++++++--- 3 files changed, 117 insertions(+), 27 deletions(-) diff --git a/apps/web/src/components/forms/password.tsx b/apps/web/src/components/forms/password.tsx index eba0c9a43..4689e0dbe 100644 --- a/apps/web/src/components/forms/password.tsx +++ b/apps/web/src/components/forms/password.tsx @@ -1,7 +1,9 @@ 'use client'; +import { useState } from 'react'; + import { zodResolver } from '@hookform/resolvers/zod'; -import { Loader } from 'lucide-react'; +import { Eye, EyeOff, Loader } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; @@ -35,6 +37,8 @@ export type PasswordFormProps = { export const PasswordForm = ({ className }: PasswordFormProps) => { const { toast } = useToast(); + const [showPassword, setShowPassword] = useState(false); + const [showConfirmPassword, setShowConfirmPassword] = useState(false); const { register, @@ -79,6 +83,14 @@ export const PasswordForm = ({ className }: PasswordFormProps) => { } }; + const onShowPassword = () => { + setShowPassword(!showPassword); + }; + + const onShowConfirmPassword = () => { + setShowConfirmPassword(!showConfirmPassword); + }; + return (
{ Password - +
+ + + +
@@ -104,12 +132,28 @@ export const PasswordForm = ({ className }: PasswordFormProps) => { Repeat Password - +
+ + + +
diff --git a/apps/web/src/components/forms/signin.tsx b/apps/web/src/components/forms/signin.tsx index ae9540869..2f3c3a4d6 100644 --- a/apps/web/src/components/forms/signin.tsx +++ b/apps/web/src/components/forms/signin.tsx @@ -1,7 +1,9 @@ 'use client'; +import { useState } from 'react'; + import { zodResolver } from '@hookform/resolvers/zod'; -import { Loader } from 'lucide-react'; +import { Eye, EyeOff, Loader } from 'lucide-react'; import { signIn } from 'next-auth/react'; import { useForm } from 'react-hook-form'; import { FcGoogle } from 'react-icons/fc'; @@ -26,6 +28,7 @@ export type SignInFormProps = { export const SignInForm = ({ className }: SignInFormProps) => { const { toast } = useToast(); + const [showPassword, setShowPassword] = useState(false); const { register, @@ -73,6 +76,10 @@ export const SignInForm = ({ className }: SignInFormProps) => { } }; + const onShowPassword = () => { + setShowPassword(!showPassword); + }; + return ( { Password - +
+ + + +
{errors.password && ( {errors.password.message} diff --git a/apps/web/src/components/forms/signup.tsx b/apps/web/src/components/forms/signup.tsx index ce449f850..a66e43caf 100644 --- a/apps/web/src/components/forms/signup.tsx +++ b/apps/web/src/components/forms/signup.tsx @@ -1,7 +1,9 @@ 'use client'; +import { useState } from 'react'; + import { zodResolver } from '@hookform/resolvers/zod'; -import { Loader } from 'lucide-react'; +import { Eye, EyeOff, Loader } from 'lucide-react'; import { signIn } from 'next-auth/react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; @@ -29,6 +31,7 @@ export type SignUpFormProps = { export const SignUpForm = ({ className }: SignUpFormProps) => { const { toast } = useToast(); + const [showPassword, setShowPassword] = useState(false); const { register, @@ -72,6 +75,10 @@ export const SignUpForm = ({ className }: SignUpFormProps) => { } }; + const onShowPassword = () => { + setShowPassword(!showPassword); + }; + return ( { Password - +
+ + + +