import React, { FC, useRef } from 'react' import { Alert, Box, Button, Input } from '@vtex/store-ui' import { useIntl } from '@vtex/gatsby-plugin-i18n' import { State } from './state' interface Props { variant: string onSubmit: (email: string, password: string) => Promise onSignUp: () => void onForgotPassword: () => void state: State } const SignInForm: FC = ({ variant, onSubmit, onSignUp, onForgotPassword, state: { state }, }) => { const { formatMessage } = useIntl() const email = useRef(null) const password = useRef(null) return ( <> {formatMessage({ id: 'login.page.emailAndPassword.signInForm.title', defaultMessage: 'Sign in with e-mail and password', })} { e.preventDefault() onSubmit(email.current?.value ?? '', password.current?.value ?? '') }} variant={variant} > onForgotPassword()} > {formatMessage({ id: 'login.page.emailAndPassword.signInForm.forgotPassword', defaultMessage: 'Forgot my password', })} {state === 'signInForm.invalidEmailInput' && ( {formatMessage({ id: 'login.page.emailAndPassword.signInForm.invalidEmailInput', defaultMessage: 'Sign in with a valid e-mail', })} )} {state === 'signInForm.invalidPasswordInput' && ( {formatMessage({ id: 'login.page.emailAndPassword.signInForm.invalidPasswordInput', defaultMessage: 'Sign in with a valid password', })} )} {state === 'signInForm.authError' && ( {formatMessage({ id: 'login.page.emailAndPassword.signInForm.authError', defaultMessage: 'Signing in failed. Please try again later', })} )} onSignUp()}> {formatMessage({ id: 'login.page.emailAndPassword.signInForm.signupButton', defaultMessage: "Don't have an account yet ? Sign Up", })} ) } export default SignInForm