@fadyshawky/react-native-magic 2.0.5 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/template/App.tsx +21 -16
- package/template/ios/reactnativemagic/AppDelegate.mm +5 -0
- package/template/src/common/ImageResources.g.ts +1 -33
- package/template/src/common/components/Background.tsx +7 -7
- package/template/src/common/components/Container.tsx +7 -10
- package/template/src/common/localization/LocalizationProvider.tsx +14 -17
- package/template/src/common/localization/RTLInitializer.tsx +90 -0
- package/template/src/common/localization/intlFormatter.ts +37 -0
- package/template/src/common/localization/localization.ts +1 -3
- package/template/src/common/localization/translations/commonLocalization.ts +11 -81
- package/template/src/common/localization/translations/emptyLocalization.ts +6 -2
- package/template/src/common/localization/translations/errorsLocalization.ts +33 -13
- package/template/src/common/localization/translations/homeLocalization.ts +4 -24
- package/template/src/common/localization/translations/loginLocalization.ts +26 -29
- package/template/src/common/localization/translations/mainNavigationLocalization.ts +2 -2
- package/template/src/common/localization/translations/onboardingLocalization.ts +40 -9
- package/template/src/common/localization/translations/otpLocalization.ts +8 -8
- package/template/src/common/localization/translations/pagesLocalization.ts +13 -1
- package/template/src/common/localization/translations/passwordLocalization.ts +3 -3
- package/template/src/common/localization/translations/profileLocalization.ts +4 -4
- package/template/src/core/store/app/appSlice.ts +2 -2
- package/template/src/core/store/app/appState.ts +1 -1
- package/template/src/core/theme/colors.ts +106 -70
- package/template/src/core/theme/commonConsts.ts +1 -1
- package/template/src/core/theme/commonSizes.ts +119 -94
- package/template/src/core/theme/commonStyles.ts +22 -22
- package/template/src/core/theme/fonts.ts +13 -14
- package/template/src/core/theme/shadows.ts +135 -0
- package/template/src/core/theme/themes.ts +386 -75
- package/template/src/core/theme/types.ts +201 -15
- package/template/src/navigation/HeaderComponents.tsx +6 -30
- package/template/src/navigation/MainNavigation.tsx +2 -3
- package/template/src/navigation/MainStack.tsx +6 -97
- package/template/src/screens/Login/Login.tsx +5 -7
- package/template/src/screens/OTP/OTPScreen.tsx +12 -13
- package/template/src/screens/home/HomeScreen.tsx +2 -295
- package/template/src/screens/profile/Profile.tsx +2 -290
- package/template/src/common/localization/translations/posLocalization.ts +0 -196
- package/template/src/components/PrinterExample.js +0 -226
- package/template/src/core/store/Categories/categoryActions.ts +0 -33
- package/template/src/core/store/Categories/categorySlice.ts +0 -75
- package/template/src/core/store/Categories/categoryState.ts +0 -41
- package/template/src/core/store/Providers/providersActions.ts +0 -102
- package/template/src/core/store/Providers/providersSlice.ts +0 -136
- package/template/src/core/store/Providers/providersState.ts +0 -37
- package/template/src/core/store/Services/servicesActions.ts +0 -191
- package/template/src/core/store/Services/servicesSlice.ts +0 -205
- package/template/src/core/store/Services/servicesState.ts +0 -466
- package/template/src/modules/SunmiCard.js +0 -212
- package/template/src/modules/SunmiPrepaid.ts +0 -122
- package/template/src/screens/Categories/Categories.tsx +0 -141
- package/template/src/screens/Categories/hooks/useCategoriesData.ts +0 -33
- package/template/src/screens/Categories/types.ts +0 -7
- package/template/src/screens/Favorites/Favorites.tsx +0 -130
- package/template/src/screens/ForceChangePassword/ForceChangePasswordScreen.tsx +0 -155
- package/template/src/screens/History/History.tsx +0 -430
- package/template/src/screens/History/hooks/useHistoryData.ts +0 -49
- package/template/src/screens/History/types.ts +0 -7
- package/template/src/screens/InquiredBill/InquiredBill.tsx +0 -443
- package/template/src/screens/InquiredBill/hooks/useInquiredData.ts +0 -91
- package/template/src/screens/PaymentConfirmation/PaymentConfirmation.tsx +0 -326
- package/template/src/screens/Providers/Providers.tsx +0 -166
- package/template/src/screens/Providers/hooks/useProvidersData.ts +0 -33
- package/template/src/screens/Providers/types.ts +0 -7
- package/template/src/screens/ReceiptScreen/ReceiptScreen.tsx +0 -181
- package/template/src/screens/ReceiptScreen/hooks/useReceiptData.ts +0 -46
- package/template/src/screens/ReceiptScreen/utils/utils.tsx +0 -156
- package/template/src/screens/Services/Services.tsx +0 -144
- package/template/src/screens/Services/hooks/useServicesData.ts +0 -41
- package/template/src/screens/SingleService/Components/FawryInputs.tsx +0 -446
- package/template/src/screens/SingleService/SingleService.tsx +0 -229
- package/template/src/screens/SingleService/hooks/useServiceData.ts +0 -164
- package/template/src/services/SunmiPrinterInternal.js +0 -268
- package/template/src/types/sunmiPrepaid.d.ts +0 -20
- package/template/src/utils/SunmiPrinter.ts +0 -442
- package/template/src/utils/feesCalculator.ts +0 -92
|
@@ -1,27 +1,170 @@
|
|
|
1
1
|
import {TextStyle} from 'react-native';
|
|
2
|
+
import {ElevationShadow} from './shadows';
|
|
3
|
+
import {PrimaryColors, NaturalColors, AlertColors} from './colors';
|
|
2
4
|
|
|
3
5
|
export type ThemeMode = 'light' | 'dark';
|
|
4
6
|
|
|
7
|
+
export interface ISize {
|
|
8
|
+
font: {
|
|
9
|
+
// Almarai Design System Typography
|
|
10
|
+
bodySmall: number;
|
|
11
|
+
bodyMedium: number;
|
|
12
|
+
bodyLarge: number;
|
|
13
|
+
bodyXLarge: number;
|
|
14
|
+
heading6: number;
|
|
15
|
+
heading4: number;
|
|
16
|
+
heading3: number;
|
|
17
|
+
heading2: number;
|
|
18
|
+
heading1: number;
|
|
19
|
+
|
|
20
|
+
// Legacy support
|
|
21
|
+
extraSmall: number;
|
|
22
|
+
extraSmallPlus: number;
|
|
23
|
+
small: number;
|
|
24
|
+
smallPlus: number;
|
|
25
|
+
medium: number;
|
|
26
|
+
mediumPlus: number;
|
|
27
|
+
extraMedium: number;
|
|
28
|
+
large: number;
|
|
29
|
+
largePlus: number;
|
|
30
|
+
extraLarge: number;
|
|
31
|
+
extraLargePlus: number;
|
|
32
|
+
};
|
|
33
|
+
letterSpacing: {
|
|
34
|
+
// Almarai Design System
|
|
35
|
+
bodySmall: number;
|
|
36
|
+
bodyMedium: number;
|
|
37
|
+
bodyLarge: number;
|
|
38
|
+
bodyXLarge: number;
|
|
39
|
+
heading6: number;
|
|
40
|
+
heading4: number;
|
|
41
|
+
heading3: number;
|
|
42
|
+
heading2: number;
|
|
43
|
+
heading1: number;
|
|
44
|
+
|
|
45
|
+
// Legacy support
|
|
46
|
+
extraSmall: number;
|
|
47
|
+
extraSmallPlus: number;
|
|
48
|
+
small: number;
|
|
49
|
+
smallPlus: number;
|
|
50
|
+
medium: number;
|
|
51
|
+
mediumPlus: number;
|
|
52
|
+
large: number;
|
|
53
|
+
largePlus: number;
|
|
54
|
+
extraLarge: number;
|
|
55
|
+
extraLargePlus: number;
|
|
56
|
+
};
|
|
57
|
+
lineHeight: {
|
|
58
|
+
// Almarai Design System
|
|
59
|
+
bodySmall: number;
|
|
60
|
+
bodyMedium: number;
|
|
61
|
+
bodyLarge: number;
|
|
62
|
+
bodyXLarge: number;
|
|
63
|
+
heading6: number;
|
|
64
|
+
heading4: number;
|
|
65
|
+
heading3: number;
|
|
66
|
+
heading2: number;
|
|
67
|
+
heading1: number;
|
|
68
|
+
|
|
69
|
+
// Legacy support
|
|
70
|
+
extraSmall: number;
|
|
71
|
+
extraSmallPlus: number;
|
|
72
|
+
small: number;
|
|
73
|
+
smallPlus: number;
|
|
74
|
+
medium: number;
|
|
75
|
+
mediumPlus: number;
|
|
76
|
+
large: number;
|
|
77
|
+
largePlus: number;
|
|
78
|
+
extraLarge: number;
|
|
79
|
+
extraLargePlus: number;
|
|
80
|
+
};
|
|
81
|
+
spacing: {
|
|
82
|
+
// Design System Spacing Scale
|
|
83
|
+
none: number; // space / 0
|
|
84
|
+
xSmall: number; // space / 2
|
|
85
|
+
small: number; // space / 4
|
|
86
|
+
medium: number; // space / 8
|
|
87
|
+
large: number; // space / 12
|
|
88
|
+
xLarge: number; // space / 16
|
|
89
|
+
xxLarge: number; // space / 24 (2X-Large)
|
|
90
|
+
xxxLarge: number; // space / 32 (3X-Large)
|
|
91
|
+
xxxxLarge: number; // space / 48 (4X-Large)
|
|
92
|
+
xxxxxLarge: number; // space / 64 (5X-Large)
|
|
93
|
+
xxxxxxLarge: number; // space / 80 (6X-Large)
|
|
94
|
+
full: number; // space / 100 (Full)
|
|
95
|
+
|
|
96
|
+
// Legacy support
|
|
97
|
+
xs: number;
|
|
98
|
+
sm: number;
|
|
99
|
+
md: number;
|
|
100
|
+
lg: number;
|
|
101
|
+
xl: number;
|
|
102
|
+
};
|
|
103
|
+
borderRadius: {
|
|
104
|
+
// Design System Border Radius Scale
|
|
105
|
+
none: number; // Border / 0
|
|
106
|
+
xSmall: number; // Border / 2
|
|
107
|
+
small: number; // Border / 4
|
|
108
|
+
medium: number; // Border / 8
|
|
109
|
+
large: number; // Border / 12
|
|
110
|
+
xLarge: number; // Border / 16
|
|
111
|
+
xxLarge: number; // Border / 24 (2X-Large)
|
|
112
|
+
full: number; // Border / 1000 (Full)
|
|
113
|
+
|
|
114
|
+
// Legacy support
|
|
115
|
+
xs: number;
|
|
116
|
+
sm: number;
|
|
117
|
+
md: number;
|
|
118
|
+
lg: number;
|
|
119
|
+
xl: number;
|
|
120
|
+
};
|
|
121
|
+
borderWidth: {
|
|
122
|
+
// Design System Stroke Scale
|
|
123
|
+
none: number; // Stroke / 0
|
|
124
|
+
xSmall: number; // Stroke / 0.5
|
|
125
|
+
small: number; // Stroke / 1
|
|
126
|
+
medium: number; // Stroke / 1.5
|
|
127
|
+
large: number; // Stroke / 2
|
|
128
|
+
|
|
129
|
+
// Legacy support
|
|
130
|
+
extraSmall: number;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
5
134
|
export interface Theme {
|
|
6
135
|
mode: ThemeMode;
|
|
7
|
-
colors:
|
|
8
|
-
indigoBlue: string;
|
|
9
|
-
mutedLavender: string;
|
|
10
|
-
tintColor: string;
|
|
11
|
-
mutedLavender30: string;
|
|
12
|
-
balanceBackground: string;
|
|
13
|
-
white: string;
|
|
14
|
-
backgroundOpacity: string;
|
|
15
|
-
black: string;
|
|
16
|
-
background: string;
|
|
17
|
-
surface: string;
|
|
18
|
-
card: string;
|
|
19
|
-
shadow: string;
|
|
20
|
-
red: string;
|
|
21
|
-
};
|
|
136
|
+
colors: typeof PrimaryColors & typeof NaturalColors & typeof AlertColors;
|
|
22
137
|
text: {
|
|
138
|
+
// Almarai Design System Typography
|
|
139
|
+
// Headings
|
|
23
140
|
header1: TextStyle;
|
|
24
141
|
header2: TextStyle;
|
|
142
|
+
header3: TextStyle;
|
|
143
|
+
header4: TextStyle;
|
|
144
|
+
header6: TextStyle;
|
|
145
|
+
|
|
146
|
+
// Body Text with different weights
|
|
147
|
+
bodyXLargeLight: TextStyle;
|
|
148
|
+
bodyXLargeRegular: TextStyle;
|
|
149
|
+
bodyXLargeBold: TextStyle;
|
|
150
|
+
bodyXLargeExtraBold: TextStyle;
|
|
151
|
+
|
|
152
|
+
bodyLargeLight: TextStyle;
|
|
153
|
+
bodyLargeRegular: TextStyle;
|
|
154
|
+
bodyLargeBold: TextStyle;
|
|
155
|
+
bodyLargeExtraBold: TextStyle;
|
|
156
|
+
|
|
157
|
+
bodyMediumLight: TextStyle;
|
|
158
|
+
bodyMediumRegular: TextStyle;
|
|
159
|
+
bodyMediumBold: TextStyle;
|
|
160
|
+
bodyMediumExtraBold: TextStyle;
|
|
161
|
+
|
|
162
|
+
bodySmallLight: TextStyle;
|
|
163
|
+
bodySmallRegular: TextStyle;
|
|
164
|
+
bodySmallBold: TextStyle;
|
|
165
|
+
bodySmallExtraBold: TextStyle;
|
|
166
|
+
|
|
167
|
+
// Legacy styles for backward compatibility
|
|
25
168
|
balanceTitle: TextStyle;
|
|
26
169
|
balanceAmount: TextStyle;
|
|
27
170
|
balanceLabel: TextStyle;
|
|
@@ -35,6 +178,21 @@ export interface Theme {
|
|
|
35
178
|
navBar: TextStyle;
|
|
36
179
|
};
|
|
37
180
|
spacing: {
|
|
181
|
+
// Design System Spacing Scale
|
|
182
|
+
none: number;
|
|
183
|
+
xSmall: number;
|
|
184
|
+
small: number;
|
|
185
|
+
medium: number;
|
|
186
|
+
large: number;
|
|
187
|
+
xLarge: number;
|
|
188
|
+
xxLarge: number;
|
|
189
|
+
xxxLarge: number;
|
|
190
|
+
xxxxLarge: number;
|
|
191
|
+
xxxxxLarge: number;
|
|
192
|
+
xxxxxxLarge: number;
|
|
193
|
+
full: number;
|
|
194
|
+
|
|
195
|
+
// Legacy support
|
|
38
196
|
xs: number;
|
|
39
197
|
sm: number;
|
|
40
198
|
md: number;
|
|
@@ -42,10 +200,38 @@ export interface Theme {
|
|
|
42
200
|
xl: number;
|
|
43
201
|
};
|
|
44
202
|
borderRadius: {
|
|
203
|
+
// Design System Border Radius Scale
|
|
204
|
+
none: number;
|
|
205
|
+
xSmall: number;
|
|
206
|
+
small: number;
|
|
207
|
+
medium: number;
|
|
208
|
+
large: number;
|
|
209
|
+
xLarge: number;
|
|
210
|
+
xxLarge: number;
|
|
211
|
+
full: number;
|
|
212
|
+
|
|
213
|
+
// Legacy support
|
|
45
214
|
xs: number;
|
|
46
215
|
sm: number;
|
|
47
216
|
md: number;
|
|
48
217
|
lg: number;
|
|
49
218
|
xl: number;
|
|
50
219
|
};
|
|
220
|
+
borderWidth: {
|
|
221
|
+
// Design System Stroke Scale
|
|
222
|
+
none: number;
|
|
223
|
+
xSmall: number;
|
|
224
|
+
small: number;
|
|
225
|
+
medium: number;
|
|
226
|
+
large: number;
|
|
227
|
+
|
|
228
|
+
// Legacy support
|
|
229
|
+
extraSmall: number;
|
|
230
|
+
};
|
|
231
|
+
shadows: {
|
|
232
|
+
elevation1: ElevationShadow;
|
|
233
|
+
elevation2: ElevationShadow;
|
|
234
|
+
elevation3: ElevationShadow;
|
|
235
|
+
elevation4: ElevationShadow;
|
|
236
|
+
};
|
|
51
237
|
}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import {NativeStackNavigationProp} from '@react-navigation/native-stack';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import {Image, StyleSheet, TouchableOpacity, View} from 'react-native';
|
|
4
|
-
import {
|
|
4
|
+
import {useRTL} from '../common/localization/LocalizationProvider';
|
|
5
5
|
import {CommonSizes} from '../core/theme/commonSizes';
|
|
6
6
|
import {screenWidth} from '../core/theme/commonStyles';
|
|
7
|
+
import {scaleWidth} from '../core/theme/scaling';
|
|
7
8
|
import {useTheme} from '../core/theme/ThemeProvider';
|
|
8
9
|
import {RootStackParamList} from './types';
|
|
9
|
-
import {useRTL} from '../common/localization/LocalizationProvider';
|
|
10
|
-
import {scaleWidth} from '../core/theme/scaling';
|
|
11
10
|
export function Header() {
|
|
12
11
|
return (
|
|
13
12
|
<View style={styles.headerBase}>
|
|
14
|
-
<Image source={
|
|
13
|
+
<Image source={0} style={styles.logo} />
|
|
15
14
|
</View>
|
|
16
15
|
);
|
|
17
16
|
}
|
|
@@ -20,7 +19,7 @@ export function HeaderBack({onPress}: {onPress: () => void}) {
|
|
|
20
19
|
return (
|
|
21
20
|
<View style={styles.headerWithBack}>
|
|
22
21
|
<BackButton onPress={onPress} />
|
|
23
|
-
<Image source={
|
|
22
|
+
<Image source={0} style={styles.logo} />
|
|
24
23
|
<View style={{width: 40}} />
|
|
25
24
|
</View>
|
|
26
25
|
);
|
|
@@ -36,16 +35,6 @@ export function HeaderButton({onPress}: {onPress: () => void}) {
|
|
|
36
35
|
);
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
export function HomeHeader({onPress}: {onPress: () => void}) {
|
|
40
|
-
return (
|
|
41
|
-
<View style={styles.headerWithBack}>
|
|
42
|
-
<RefreshButton onPress={onPress} />
|
|
43
|
-
<Image source={ImageResources.light_header_logo} style={styles.logo} />
|
|
44
|
-
<View style={{width: 40}} />
|
|
45
|
-
</View>
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
38
|
export function WebViewHeader({
|
|
50
39
|
navigation,
|
|
51
40
|
}: {
|
|
@@ -64,25 +53,12 @@ function BackButton({onPress}: {onPress: () => void}) {
|
|
|
64
53
|
return (
|
|
65
54
|
<TouchableOpacity style={styles.backButton} onPressIn={onPress}>
|
|
66
55
|
<Image
|
|
67
|
-
tintColor={theme.colors.
|
|
56
|
+
tintColor={theme.colors.PlatinateBlue_100}
|
|
68
57
|
style={{
|
|
69
58
|
...styles.backIcon,
|
|
70
59
|
transform: [{rotate: isRTL ? '180deg' : '0deg'}],
|
|
71
60
|
}}
|
|
72
|
-
source={
|
|
73
|
-
/>
|
|
74
|
-
</TouchableOpacity>
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function RefreshButton({onPress}: {onPress: () => void}) {
|
|
79
|
-
const {theme} = useTheme();
|
|
80
|
-
return (
|
|
81
|
-
<TouchableOpacity style={styles.backButton} onPressIn={onPress}>
|
|
82
|
-
<Image
|
|
83
|
-
tintColor={theme.colors.tintColor}
|
|
84
|
-
style={styles.backIcon}
|
|
85
|
-
source={ImageResources.repeat}
|
|
61
|
+
source={0}
|
|
86
62
|
/>
|
|
87
63
|
</TouchableOpacity>
|
|
88
64
|
);
|
|
@@ -4,11 +4,10 @@ import {DefaultTheme, NavigationContainer} from '@react-navigation/native';
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import {useRef} from 'react';
|
|
6
6
|
import {useAppSelector} from '../core/store/reduxHelpers';
|
|
7
|
+
import {NaturalColors} from '../core/theme/colors';
|
|
7
8
|
import {AuthStack} from './AuthStack';
|
|
8
9
|
import {AppMainNavigator} from './MainStack';
|
|
9
10
|
import {navigationRef} from './RootNavigation';
|
|
10
|
-
import {NewColors} from '../core/theme/colors';
|
|
11
|
-
import {Fonts} from '../core/theme/fonts';
|
|
12
11
|
|
|
13
12
|
function AppNavigator() {
|
|
14
13
|
const routeNameRef = useRef<string | undefined>(undefined);
|
|
@@ -24,7 +23,7 @@ function AppNavigator() {
|
|
|
24
23
|
dark: false,
|
|
25
24
|
colors: {
|
|
26
25
|
primary: '#000',
|
|
27
|
-
background:
|
|
26
|
+
background: NaturalColors.background_2,
|
|
28
27
|
card: '#fff',
|
|
29
28
|
text: '#000',
|
|
30
29
|
border: '#000',
|
|
@@ -1,24 +1,11 @@
|
|
|
1
1
|
import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {ImageResources} from '../common/ImageResources.g';
|
|
4
3
|
import {useTranslation} from '../common/localization/LocalizationProvider';
|
|
5
4
|
|
|
6
|
-
import {TabBar} from './TabBar';
|
|
7
5
|
import {createNativeStackNavigator} from '@react-navigation/native-stack';
|
|
8
|
-
import {
|
|
9
|
-
Favorites,
|
|
10
|
-
History,
|
|
11
|
-
Profile,
|
|
12
|
-
Services,
|
|
13
|
-
SingleService,
|
|
14
|
-
InquiredBill,
|
|
15
|
-
PaymentConfirmation,
|
|
16
|
-
Categories,
|
|
17
|
-
Providers,
|
|
18
|
-
ReceiptScreen,
|
|
19
|
-
} from '../screens';
|
|
20
|
-
import {ForceChangePasswordScreen} from '../screens/ForceChangePassword/ForceChangePasswordScreen';
|
|
6
|
+
import {Profile} from '../screens';
|
|
21
7
|
import {HomeScreen} from '../screens/home/HomeScreen';
|
|
8
|
+
import {TabBar} from './TabBar';
|
|
22
9
|
|
|
23
10
|
const Tab = createBottomTabNavigator();
|
|
24
11
|
const Stack = createNativeStackNavigator();
|
|
@@ -33,28 +20,8 @@ export function AppMainNavigator() {
|
|
|
33
20
|
options: {
|
|
34
21
|
tabBarLabel: t('tabs.Main', 'mainNavigation'),
|
|
35
22
|
headerShown: false,
|
|
36
|
-
icon:
|
|
37
|
-
selectedIcon:
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
id: 'Favorites',
|
|
42
|
-
component: Favorites,
|
|
43
|
-
options: {
|
|
44
|
-
tabBarLabel: t('tabs.Favorites', 'mainNavigation'),
|
|
45
|
-
headerShown: false,
|
|
46
|
-
icon: ImageResources.favourites,
|
|
47
|
-
selectedIcon: ImageResources.favourites,
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
id: 'Financials',
|
|
52
|
-
component: History,
|
|
53
|
-
options: {
|
|
54
|
-
tabBarLabel: t('tabs.Financials', 'mainNavigation'),
|
|
55
|
-
headerShown: false,
|
|
56
|
-
icon: ImageResources.financials,
|
|
57
|
-
selectedIcon: ImageResources.financials,
|
|
23
|
+
icon: 0,
|
|
24
|
+
selectedIcon: 0,
|
|
58
25
|
},
|
|
59
26
|
},
|
|
60
27
|
{
|
|
@@ -63,66 +30,8 @@ export function AppMainNavigator() {
|
|
|
63
30
|
options: {
|
|
64
31
|
tabBarLabel: t('tabs.Account', 'mainNavigation'),
|
|
65
32
|
headerShown: false,
|
|
66
|
-
icon:
|
|
67
|
-
selectedIcon:
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
id: 'ForceChangePassword',
|
|
72
|
-
component: ForceChangePasswordScreen,
|
|
73
|
-
options: {
|
|
74
|
-
headerShown: false,
|
|
75
|
-
title: t('screens.ForceChangePassword', 'mainNavigation'),
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
id: 'Services',
|
|
80
|
-
component: Services,
|
|
81
|
-
options: {
|
|
82
|
-
headerShown: false,
|
|
83
|
-
title: t('screens.Services', 'mainNavigation'),
|
|
84
|
-
},
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
id: 'SingleService',
|
|
88
|
-
component: SingleService,
|
|
89
|
-
options: {
|
|
90
|
-
headerShown: false,
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
id: 'InquiredBill',
|
|
95
|
-
component: InquiredBill,
|
|
96
|
-
options: {
|
|
97
|
-
headerShown: false,
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
id: 'PaymentConfirmation',
|
|
102
|
-
component: PaymentConfirmation,
|
|
103
|
-
options: {
|
|
104
|
-
headerShown: false,
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
id: 'ReceiptScreen',
|
|
109
|
-
component: ReceiptScreen,
|
|
110
|
-
options: {
|
|
111
|
-
headerShown: false,
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
id: 'Categories',
|
|
116
|
-
component: Categories,
|
|
117
|
-
options: {
|
|
118
|
-
headerShown: false,
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
id: 'Providers',
|
|
123
|
-
component: Providers,
|
|
124
|
-
options: {
|
|
125
|
-
headerShown: false,
|
|
33
|
+
icon: 0,
|
|
34
|
+
selectedIcon: 0,
|
|
126
35
|
},
|
|
127
36
|
},
|
|
128
37
|
];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {useNavigation} from '@react-navigation/native';
|
|
2
2
|
import type {NativeStackNavigationProp} from '@react-navigation/native-stack';
|
|
3
3
|
import React, {useRef, useState} from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import {StyleSheet} from 'react-native';
|
|
5
5
|
import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view';
|
|
6
6
|
import {ButtonType} from '../../../types';
|
|
7
7
|
import {Container} from '../../common/components/Container';
|
|
@@ -9,10 +9,9 @@ import {PrimaryButton} from '../../common/components/PrimaryButton';
|
|
|
9
9
|
import {PrimaryTextInput} from '../../common/components/PrimaryTextInput';
|
|
10
10
|
import {RTLAwareText} from '../../common/components/RTLAwareText';
|
|
11
11
|
import {RTLAwareView} from '../../common/components/RTLAwareView';
|
|
12
|
-
import {ImageResources} from '../../common/ImageResources.g';
|
|
13
12
|
import {
|
|
14
|
-
useTranslation,
|
|
15
13
|
useRTL,
|
|
14
|
+
useTranslation,
|
|
16
15
|
} from '../../common/localization/LocalizationProvider';
|
|
17
16
|
import {phoneValidations} from '../../common/validations/authValidations';
|
|
18
17
|
import {emptyValidation} from '../../common/validations/commonValidations';
|
|
@@ -24,7 +23,6 @@ import {Fonts} from '../../core/theme/fonts';
|
|
|
24
23
|
import {useTheme} from '../../core/theme/ThemeProvider';
|
|
25
24
|
import {Header} from '../../navigation/HeaderComponents';
|
|
26
25
|
import type {RootStackParamList} from '../../navigation/types';
|
|
27
|
-
import {scaleHeight} from '../../core/theme/scaling';
|
|
28
26
|
|
|
29
27
|
export function Login(): JSX.Element {
|
|
30
28
|
const dispatch = useAppDispatch();
|
|
@@ -82,10 +80,10 @@ export function Login(): JSX.Element {
|
|
|
82
80
|
testID={'LoginScreenID'}
|
|
83
81
|
contentContainerStyle={styles.contentContainer}
|
|
84
82
|
style={styles.container}
|
|
85
|
-
backgroundImage={
|
|
83
|
+
backgroundImage={0}
|
|
86
84
|
withoutPadding
|
|
87
85
|
extendedBackground
|
|
88
|
-
backgroundColor={theme.colors.
|
|
86
|
+
backgroundColor={theme.colors.background_2}>
|
|
89
87
|
<Header />
|
|
90
88
|
<RTLAwareText style={{...theme.text.header1, textAlign: 'center'}}>
|
|
91
89
|
{t('welcome', 'login')}
|
|
@@ -144,7 +142,7 @@ const styles = StyleSheet.create({
|
|
|
144
142
|
},
|
|
145
143
|
title: {
|
|
146
144
|
textAlign: 'center',
|
|
147
|
-
fontSize: CommonSizes.
|
|
145
|
+
fontSize: CommonSizes.font.bodyLarge,
|
|
148
146
|
fontWeight: 'bold',
|
|
149
147
|
fontFamily: Fonts.regular,
|
|
150
148
|
},
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import {useNavigation, useRoute} from '@react-navigation/native';
|
|
2
2
|
import type {NativeStackNavigationProp} from '@react-navigation/native-stack';
|
|
3
3
|
import React, {useRef, useState} from 'react';
|
|
4
|
-
import {StyleSheet,
|
|
4
|
+
import {StyleSheet, View} from 'react-native';
|
|
5
5
|
import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view';
|
|
6
6
|
import {ButtonType} from '../../../types';
|
|
7
7
|
import {Container} from '../../common/components/Container';
|
|
8
|
-
import {PrimaryButton} from '../../common/components/PrimaryButton';
|
|
9
8
|
import {OTPInput} from '../../common/components/OTPInput';
|
|
9
|
+
import {PrimaryButton} from '../../common/components/PrimaryButton';
|
|
10
|
+
import {RTLAwareText} from '../../common/components/RTLAwareText';
|
|
11
|
+
import {RTLAwareView} from '../../common/components/RTLAwareView';
|
|
12
|
+
import {
|
|
13
|
+
useRTL,
|
|
14
|
+
useTranslation,
|
|
15
|
+
} from '../../common/localization/LocalizationProvider';
|
|
10
16
|
import {useInputError} from '../../common/validations/hooks/useInputError';
|
|
11
17
|
import {useAppDispatch} from '../../core/store/reduxHelpers';
|
|
18
|
+
import {verifyOTP} from '../../core/store/user/userActions';
|
|
12
19
|
import {CommonSizes} from '../../core/theme/commonSizes';
|
|
13
20
|
import {useTheme} from '../../core/theme/ThemeProvider';
|
|
14
|
-
import {
|
|
15
|
-
import {Header, HeaderBack} from '../../navigation/HeaderComponents';
|
|
21
|
+
import {HeaderBack} from '../../navigation/HeaderComponents';
|
|
16
22
|
import type {RootStackParamList} from '../../navigation/types';
|
|
17
|
-
import {verifyOTP} from '../../core/store/user/userActions';
|
|
18
|
-
import {
|
|
19
|
-
useTranslation,
|
|
20
|
-
useRTL,
|
|
21
|
-
} from '../../common/localization/LocalizationProvider';
|
|
22
|
-
import {RTLAwareText} from '../../common/components/RTLAwareText';
|
|
23
|
-
import {RTLAwareView} from '../../common/components/RTLAwareView';
|
|
24
23
|
|
|
25
24
|
export function OTPScreen(): JSX.Element {
|
|
26
25
|
const dispatch = useAppDispatch();
|
|
@@ -93,10 +92,10 @@ export function OTPScreen(): JSX.Element {
|
|
|
93
92
|
testID={'OTPScreenID'}
|
|
94
93
|
contentContainerStyle={styles.contentContainer}
|
|
95
94
|
style={styles.container}
|
|
96
|
-
backgroundImage={
|
|
95
|
+
backgroundImage={0}
|
|
97
96
|
withoutPadding
|
|
98
97
|
extendedBackground
|
|
99
|
-
backgroundColor={theme.colors.
|
|
98
|
+
backgroundColor={theme.colors.background_2}>
|
|
100
99
|
<HeaderBack onPress={() => navigation.goBack()} />
|
|
101
100
|
<RTLAwareText style={{...theme.text.header1, textAlign: 'center'}}>
|
|
102
101
|
{t('title', 'otp')}
|