-
- - - - {t('auth.login.title')} - - - {t('auth.login.description')} - - + +
+ + + + {t('auth.login.title')} + + + {t('auth.login.description')} + + -
- - {/* EN: API Error message display / VI: Hiển thị thông báo lỗi API */} - {apiError && ( -
-
-
+ )} + + {/* EN: Email input field / VI: Trường nhập email */} + setValue('email', value)} + onBlur={register('email').onBlur} + autoComplete="email" + aria-required="true" + /> + + {/* EN: Password input field / VI: Trường nhập mật khẩu */} + setValue('password', value)} + onBlur={register('password').onBlur} + autoComplete="current-password" + aria-required="true" + /> + + {/* EN: Remember me and forgot password row / VI: Hàng nhớ đăng nhập và quên mật khẩu */} +
+ + + + {t('auth.login.forgotPassword')} +
- )} + - {/* EN: Email input field / VI: Trường nhập email */} - setValue('email', value)} - onBlur={register('email').onBlur} - autoComplete="email" - aria-required="true" - /> - - {/* EN: Password input field / VI: Trường nhập mật khẩu */} - setValue('password', value)} - onBlur={register('password').onBlur} - autoComplete="current-password" - aria-required="true" - /> - - {/* EN: Remember me and forgot password row / VI: Hàng nhớ đăng nhập và quên mật khẩu */} -
- - - + {/* EN: Submit button with loading state / VI: Nút submit với trạng thái loading */} +
- + {isLoading || isSubmitting + ? t('auth.login.signingIn') + : t('auth.login.title')} + - - {/* EN: Submit button with loading state / VI: Nút submit với trạng thái loading */} - - - {/* EN: Sign up link / VI: Link đăng ký */} -

- {t('auth.login.noAccount')}{' '} - - {t('auth.login.signUp')} - -

-
- - -
+ {/* EN: Sign up link / VI: Link đăng ký */} +

+ {t('auth.login.noAccount')}{' '} + + {t('auth.login.signUp')} + +

+ + +
+