-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added Login form, access at /login (#179)
* Added Login form, access at /login * removed unused imports * removed a closing tag
- Loading branch information
Showing
11 changed files
with
199 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
import { zodResolver } from '@hookform/resolvers/zod'; | ||
import { z } from 'zod'; | ||
import { useForm } from 'react-hook-form'; | ||
import { Text, Password } from './Shared/Forms'; | ||
|
||
import styles from './Shared/styles'; | ||
import { useNavigate } from 'react-router-dom'; | ||
|
||
const validationSchema = z.object({ | ||
email: z.string().email('Invalid email address'), | ||
password: z.string().min(1, 'Password is required'), | ||
}); | ||
|
||
type LoginForm = { | ||
email: string; | ||
password: string; | ||
} | ||
const LoginForm = () => { | ||
const { register, handleSubmit, formState: { errors }, } = useForm<LoginForm>({ | ||
resolver: zodResolver(validationSchema), | ||
}); | ||
|
||
const navigate = useNavigate(); | ||
|
||
const submitData = async (data: LoginForm) => { | ||
console.log(data); | ||
navigate('/'); | ||
} | ||
|
||
return ( | ||
<div className={`${styles.layout.container} max-sm`}> | ||
<h1 className={styles.layout.headingMain}>Login to continue</h1> | ||
<div className="py-4"> | ||
<form onSubmit={handleSubmit(submitData)} className={styles.forms.layout.loginForm}> | ||
<Text | ||
label='Email' | ||
name='email' | ||
placeHolder='Enter your email' | ||
errorValue={errors.email?.message as string} | ||
reactHookRegister={register('email')} | ||
/> | ||
<Password | ||
label='Password' | ||
name='password' | ||
placeHolder='Enter your password' | ||
errorValue={errors.password?.message as string} | ||
reactHookRegister={register('password')} | ||
/> | ||
<div className={styles.layout.buttonFooter}> | ||
<input | ||
className={styles.layout.buttons.primary} | ||
type="submit" | ||
/> | ||
</div> | ||
</form> | ||
</div> | ||
|
||
</div> | ||
) | ||
}; | ||
|
||
export default LoginForm; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
|
||
import styles from '../styles'; | ||
|
||
type PasswordProps = { | ||
label: string, | ||
name: string, | ||
errorValue?: string | undefined, | ||
placeHolder: string, | ||
reactHookRegister: any, | ||
} | ||
|
||
const Password = ({ label, name, errorValue, placeHolder, reactHookRegister}: PasswordProps) => { | ||
return ( | ||
<div className={styles.forms.layout.inputContainer}> | ||
<label className={styles.forms.label} htmlFor={name}> | ||
{ label } | ||
</label> | ||
<input | ||
type="password" | ||
placeholder={placeHolder} | ||
{...reactHookRegister} | ||
className={styles.forms.text} | ||
/> | ||
{errorValue && ( | ||
<span className={styles.forms.errorText}> | ||
{errorValue} | ||
</span> | ||
)} | ||
</div> | ||
); | ||
} | ||
|
||
export default Password; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
|
||
import styles from '../styles'; | ||
|
||
type TextProps = { | ||
label: string, | ||
name: string, | ||
errorValue?: string | undefined, | ||
placeHolder: string, | ||
reactHookRegister: any, | ||
} | ||
|
||
const Text = ({ label, name, errorValue, placeHolder, reactHookRegister}: TextProps) => { | ||
return ( | ||
<div className={styles.forms.layout.inputContainer}> | ||
<label className={styles.forms.label} htmlFor={name}> | ||
{ label } | ||
</label> | ||
<input | ||
type="text" | ||
placeholder={placeHolder} | ||
{...reactHookRegister} | ||
className={styles.forms.text} | ||
/> | ||
{errorValue && ( | ||
<span className={styles.forms.errorText}> | ||
{errorValue} | ||
</span> | ||
)} | ||
</div> | ||
); | ||
} | ||
|
||
export default Text; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import Text from './Text'; | ||
import Password from './Password'; | ||
|
||
export { | ||
Text, | ||
Password, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
/* Form componenets */ | ||
const forms = { | ||
label: 'capitalize text-slate-700', | ||
text: 'border border-slate-700 p-1', | ||
select: 'border border-slate-700 p-1', | ||
errorText: 'text-red-700', | ||
layout: { | ||
inputContainer: 'flex flex-col gap-1 pb-2', | ||
loginForm: 'flex flex-col gap-2', | ||
} | ||
} | ||
|
||
export default forms |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
import forms from './forms'; | ||
import layout from './layout'; | ||
|
||
const styles = { | ||
forms, | ||
layout, | ||
}; | ||
|
||
export default styles; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
const layout = { | ||
container: 'flex justify-between flex-col p-4 bg-zinc-100 mb-2', | ||
headingMain: 'text-2xl font-black uppercase', | ||
buttonFooter: 'flex flex-row align-middle gap-3 py-6', | ||
buttons: { | ||
primary: 'bg-zinc-400 px-4 py-1 self-baseline text-white text-xs leading-loose hover:bg-lime-600 cursor-pointer', | ||
secondary: 'bg-slate-700 px-4 py-1 self-baseline text-white text-xs leading-loose hover:bg-red-600 cursor-pointer', | ||
} | ||
} | ||
|
||
export default layout |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters