gseps-front/src/app/login/components/Login.tsx

73 lines
2.6 KiB
TypeScript

'use client';
import { Button, TextInput } from '@sdt/sdt-ui-kit';
import Link from 'next/link';
import useLogin from '../hooks/useLogin';
import { emailRegex, passwordRegex } from '@/utils/reg';
interface LoginPropsType {}
function Login({}: LoginPropsType) {
const {
hookForm: { handleSubmit, register, formState },
} = useLogin();
return (
<div className="flex justify-center items-center w-full h-screen bg-cover bg-center">
<div className="w-[37.5rem] shadow-md border rounded-[16px] px-10 sm:px-14 lg:px-5 py-7 sm:py-9 flex flex-col justify-center">
<form onSubmit={handleSubmit((data) => console.log(data))}>
<div className="mt-5 flex flex-col">
<TextInput
{...register('email', {
required: ' .',
pattern: {
value: emailRegex,
message: ' .',
},
})}
error={!!formState.errors.email}
message={(formState.errors.email?.message as string) ?? ''}
maxLength={40}
type="text"
className={`rounded-t-[6px] text-[20px] w-full`}
placeholder="이메일 주소"
/>
</div>
<div className="flex flex-col">
<TextInput
{...register('password', {
required: ' .',
pattern: {
value: passwordRegex,
message:
'8~16 , , .',
},
})}
error={!!formState.errors.password?.message}
message={(formState.errors.password?.message as string) ?? ''}
maxLength={16}
type="password"
className={`rounded-b-[6px] text-[20px] w-full border-t-none`}
placeholder="비밀번호"
/>
</div>
<div className="flex justify-center items-center">
<Button
type="submit"
className={`mt-8 text-[20px] font-semibold w-full bg-main`}
backgroundColor="bg-teal-500"
>
</Button>
</div>
</form>
<div className="w-full mt-2 flex justify-center">
<span className="mr-3 text-[#9e9e9e]"> ?</span>
<Link href={'/reset-password'}> </Link>
</div>
</div>
</div>
);
}
export default Login;