Loading mobile/src/components/language_icon/language_icon.tsx 0 → 100644 +23 −0 Original line number Diff line number Diff line import { Entypo } from '@expo/vector-icons'; import { TouchableOpacity } from 'react-native-gesture-handler'; import { LANG } from '../../lang/translations'; export const LanguageIcon = () => { const changeLanguage = () => { if (LANG.locale === 'es') { // Change to english RTL LANG.locale = 'en'; } else { LANG.locale = 'es'; } } return ( <TouchableOpacity onPress={changeLanguage}> <Entypo name="language" size={24} color="black" /> </TouchableOpacity> ); } No newline at end of file mobile/src/components/login_form/login_form.tsx +5 −4 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import { CustomTextInput } from "../text_input/text_input"; import { LIGTHT_THEME } from "../../constants/theme"; import { LoginFormValues } from "../../hooks/useLoggin"; import { OrDivision } from "../or_division/or_division"; import { LANG } from "../../lang/translations"; interface LoginFormProps { control: Control<LoginFormValues, any>; Loading @@ -13,7 +14,7 @@ interface LoginFormProps { export const LoginForm = ({ control, onSubmit }: LoginFormProps) => { return ( <ScrollView contentContainerStyle={styles.loginScroll}> <Text style={styles.title}>Login</Text> <Text style={styles.title}>{LANG.t('loginScreen.title')}</Text> <View style={{ height: 40 }} /> <Controller name="email" Loading @@ -24,7 +25,7 @@ export const LoginForm = ({ control, onSubmit }: LoginFormProps) => { formState: { errors }, }) => ( <CustomTextInput label="Email" label={LANG.t('forms.email')} value={value} onChangeText={onChange} onBlur={onBlur} Loading @@ -45,7 +46,7 @@ export const LoginForm = ({ control, onSubmit }: LoginFormProps) => { formState: { errors }, }) => ( <CustomTextInput label="Password" label={LANG.t('forms.password')} isPassword value={value} onChangeText={onChange} Loading @@ -57,7 +58,7 @@ export const LoginForm = ({ control, onSubmit }: LoginFormProps) => { /> <View style={{ height: "3%" }} /> <TouchableOpacity onPress={onSubmit} style={styles.submitBtn}> <Text style={styles.submitBtnText}>Login</Text> <Text style={styles.submitBtnText}>{LANG.t('loginScreen.loginButton')}</Text> </TouchableOpacity> <OrDivision/> Loading mobile/src/components/or_division/or_division.tsx +2 −1 Original line number Diff line number Diff line import { View, Text, StyleSheet } from "react-native"; import { LIGTHT_THEME } from "../../constants/theme"; import { LANG } from "../../lang/translations"; export const OrDivision = () => { return ( <View style={styles.orDivision}> <Text style={styles.orText}>OR</Text> <Text style={styles.orText}>{LANG.t('common.or')}</Text> </View> ); }; Loading mobile/src/screens/login/login_page.tsx +3 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,8 @@ import { LoginForm } from "../../components/login_form/login_form"; import { useLoggin } from "../../hooks/useLoggin"; import { LIGTHT_THEME } from "../../constants/theme"; import { router } from "expo-router"; import { LANG } from "../../lang/translations"; import { LanguageIcon } from "../../components/language_icon/language_icon"; const loginImage = require("../../../assets/login-image.jpg"); export const LoginPage = () => { Loading @@ -18,7 +20,7 @@ export const LoginPage = () => { </View> <View style={styles.loginContainer}> <LoginForm control={control} onSubmit={onSubmit} /> <Button title="Sign up" onPress={() => router.replace('/sign_up')}/> <Button title={LANG.t('loginScreen.registerButton')} onPress={() => router.replace('/sign_up')}/> </View> </View> ); Loading Loading
mobile/src/components/language_icon/language_icon.tsx 0 → 100644 +23 −0 Original line number Diff line number Diff line import { Entypo } from '@expo/vector-icons'; import { TouchableOpacity } from 'react-native-gesture-handler'; import { LANG } from '../../lang/translations'; export const LanguageIcon = () => { const changeLanguage = () => { if (LANG.locale === 'es') { // Change to english RTL LANG.locale = 'en'; } else { LANG.locale = 'es'; } } return ( <TouchableOpacity onPress={changeLanguage}> <Entypo name="language" size={24} color="black" /> </TouchableOpacity> ); } No newline at end of file
mobile/src/components/login_form/login_form.tsx +5 −4 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import { CustomTextInput } from "../text_input/text_input"; import { LIGTHT_THEME } from "../../constants/theme"; import { LoginFormValues } from "../../hooks/useLoggin"; import { OrDivision } from "../or_division/or_division"; import { LANG } from "../../lang/translations"; interface LoginFormProps { control: Control<LoginFormValues, any>; Loading @@ -13,7 +14,7 @@ interface LoginFormProps { export const LoginForm = ({ control, onSubmit }: LoginFormProps) => { return ( <ScrollView contentContainerStyle={styles.loginScroll}> <Text style={styles.title}>Login</Text> <Text style={styles.title}>{LANG.t('loginScreen.title')}</Text> <View style={{ height: 40 }} /> <Controller name="email" Loading @@ -24,7 +25,7 @@ export const LoginForm = ({ control, onSubmit }: LoginFormProps) => { formState: { errors }, }) => ( <CustomTextInput label="Email" label={LANG.t('forms.email')} value={value} onChangeText={onChange} onBlur={onBlur} Loading @@ -45,7 +46,7 @@ export const LoginForm = ({ control, onSubmit }: LoginFormProps) => { formState: { errors }, }) => ( <CustomTextInput label="Password" label={LANG.t('forms.password')} isPassword value={value} onChangeText={onChange} Loading @@ -57,7 +58,7 @@ export const LoginForm = ({ control, onSubmit }: LoginFormProps) => { /> <View style={{ height: "3%" }} /> <TouchableOpacity onPress={onSubmit} style={styles.submitBtn}> <Text style={styles.submitBtnText}>Login</Text> <Text style={styles.submitBtnText}>{LANG.t('loginScreen.loginButton')}</Text> </TouchableOpacity> <OrDivision/> Loading
mobile/src/components/or_division/or_division.tsx +2 −1 Original line number Diff line number Diff line import { View, Text, StyleSheet } from "react-native"; import { LIGTHT_THEME } from "../../constants/theme"; import { LANG } from "../../lang/translations"; export const OrDivision = () => { return ( <View style={styles.orDivision}> <Text style={styles.orText}>OR</Text> <Text style={styles.orText}>{LANG.t('common.or')}</Text> </View> ); }; Loading
mobile/src/screens/login/login_page.tsx +3 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,8 @@ import { LoginForm } from "../../components/login_form/login_form"; import { useLoggin } from "../../hooks/useLoggin"; import { LIGTHT_THEME } from "../../constants/theme"; import { router } from "expo-router"; import { LANG } from "../../lang/translations"; import { LanguageIcon } from "../../components/language_icon/language_icon"; const loginImage = require("../../../assets/login-image.jpg"); export const LoginPage = () => { Loading @@ -18,7 +20,7 @@ export const LoginPage = () => { </View> <View style={styles.loginContainer}> <LoginForm control={control} onSubmit={onSubmit} /> <Button title="Sign up" onPress={() => router.replace('/sign_up')}/> <Button title={LANG.t('loginScreen.registerButton')} onPress={() => router.replace('/sign_up')}/> </View> </View> ); Loading