create-react-native-starter-kit 0.0.0-stage → 1.0.1

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.
Files changed (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +378 -2
  3. package/bin/create-react-native-starter-kit.js +95 -0
  4. package/lib/copy-src.js +127 -0
  5. package/lib/creator.js +211 -0
  6. package/lib/deps.js +58 -0
  7. package/lib/patch-configs.js +318 -0
  8. package/lib/patch-native.js +588 -0
  9. package/package.json +47 -4
  10. package/scripts/sync-template.js +52 -0
  11. package/template/.env.example +3 -0
  12. package/template/patches/react-native-element-dropdown+2.12.4.patch +67 -0
  13. package/template/src/app/App.tsx +25 -0
  14. package/template/src/app/navigation/root.tsx +24 -0
  15. package/template/src/app/navigation/stacks/app.stack.tsx +67 -0
  16. package/template/src/app/navigation/stacks/app.tab.tsx +72 -0
  17. package/template/src/app/navigation/stacks/auth.stack.tsx +56 -0
  18. package/template/src/app/providers.tsx +43 -0
  19. package/template/src/assets/fonts/InterTight-Black.ttf +0 -0
  20. package/template/src/assets/fonts/InterTight-BlackItalic.ttf +0 -0
  21. package/template/src/assets/fonts/InterTight-Bold.ttf +0 -0
  22. package/template/src/assets/fonts/InterTight-BoldItalic.ttf +0 -0
  23. package/template/src/assets/fonts/InterTight-ExtraBold.ttf +0 -0
  24. package/template/src/assets/fonts/InterTight-ExtraBoldItalic.ttf +0 -0
  25. package/template/src/assets/fonts/InterTight-ExtraLight.ttf +0 -0
  26. package/template/src/assets/fonts/InterTight-ExtraLightItalic.ttf +0 -0
  27. package/template/src/assets/fonts/InterTight-Italic.ttf +0 -0
  28. package/template/src/assets/fonts/InterTight-Light.ttf +0 -0
  29. package/template/src/assets/fonts/InterTight-LightItalic.ttf +0 -0
  30. package/template/src/assets/fonts/InterTight-Medium.ttf +0 -0
  31. package/template/src/assets/fonts/InterTight-MediumItalic.ttf +0 -0
  32. package/template/src/assets/fonts/InterTight-Regular.ttf +0 -0
  33. package/template/src/assets/fonts/InterTight-SemiBold.ttf +0 -0
  34. package/template/src/assets/fonts/InterTight-SemiBoldItalic.ttf +0 -0
  35. package/template/src/assets/fonts/InterTight-Thin.ttf +0 -0
  36. package/template/src/assets/fonts/InterTight-ThinItalic.ttf +0 -0
  37. package/template/src/assets/icons/back.svg +3 -0
  38. package/template/src/assets/icons/calendar.svg +3 -0
  39. package/template/src/assets/icons/claim_upload.svg +3 -0
  40. package/template/src/assets/icons/clock.svg +1 -0
  41. package/template/src/assets/icons/downArrow.svg +3 -0
  42. package/template/src/assets/icons/edit.svg +3 -0
  43. package/template/src/assets/icons/eye.svg +4 -0
  44. package/template/src/assets/icons/eyeClose.svg +7 -0
  45. package/template/src/assets/icons/folder.svg +5 -0
  46. package/template/src/assets/icons/home.svg +4 -0
  47. package/template/src/assets/icons/index.ts +35 -0
  48. package/template/src/assets/icons/log_out.svg +4 -0
  49. package/template/src/assets/icons/setting.svg +4 -0
  50. package/template/src/assets/icons/tabs/home/filled_dark.svg +3 -0
  51. package/template/src/assets/icons/tabs/home/filled_light.svg +3 -0
  52. package/template/src/assets/icons/tabs/home/outline.svg +4 -0
  53. package/template/src/assets/icons/tabs/index.ts +31 -0
  54. package/template/src/assets/icons/tabs/profile/filled_dark.svg +6 -0
  55. package/template/src/assets/icons/tabs/profile/filled_light.svg +6 -0
  56. package/template/src/assets/icons/tabs/profile/outline.svg +3 -0
  57. package/template/src/assets/icons/tooltip_dark.svg +1 -0
  58. package/template/src/assets/icons/tooltip_light.svg +1 -0
  59. package/template/src/assets/icons/upArrow.svg +3 -0
  60. package/template/src/assets/images/back.png +0 -0
  61. package/template/src/assets/images/index.ts +7 -0
  62. package/template/src/assets/images/placeholder/profile.png +0 -0
  63. package/template/src/components/shared/AppImage.tsx +190 -0
  64. package/template/src/components/shared/AvatarPicker.tsx +175 -0
  65. package/template/src/components/shared/CustomButton.tsx +273 -0
  66. package/template/src/components/shared/DocumentPicker.tsx +86 -0
  67. package/template/src/components/shared/GlobalLoader.tsx +47 -0
  68. package/template/src/components/shared/Icon.tsx +28 -0
  69. package/template/src/components/shared/PressableIcon.tsx +104 -0
  70. package/template/src/components/shared/bottom-sheet/BaseBottomSheet.tsx +30 -0
  71. package/template/src/components/shared/bottom-sheet/BaseBottomSheetModal.tsx +50 -0
  72. package/template/src/components/shared/bottom-sheet/sheets/ImagePickerSheet.tsx +310 -0
  73. package/template/src/components/shared/bottom-sheet/types.ts +4 -0
  74. package/template/src/components/shared/form-input/FormInput.tsx +140 -0
  75. package/template/src/components/shared/form-input/FormInputRenderer.tsx +82 -0
  76. package/template/src/components/shared/form-input/FullNameInput.tsx +243 -0
  77. package/template/src/components/shared/form-input/formFieldStyles.ts +43 -0
  78. package/template/src/components/shared/form-input/type.ts +188 -0
  79. package/template/src/components/shared/form-input/variants/CountryPhoneVariant.tsx +289 -0
  80. package/template/src/components/shared/form-input/variants/DateTimeVariant.tsx +280 -0
  81. package/template/src/components/shared/form-input/variants/DropdownVariant.tsx +221 -0
  82. package/template/src/components/shared/form-input/variants/TextInputVariant.tsx +300 -0
  83. package/template/src/components/shared/form-input/variants/ToggleVariant.tsx +194 -0
  84. package/template/src/components/shared/modal/BaseModal.tsx +83 -0
  85. package/template/src/components/shared/modal/common/AlertModal.tsx +173 -0
  86. package/template/src/components/shared/navigation/AnimatedTabIcon.tsx +37 -0
  87. package/template/src/components/shared/navigation/HeaderActionButton.tsx +70 -0
  88. package/template/src/components/shared/navigation/HeaderBackButton.tsx +38 -0
  89. package/template/src/components/shared/navigation/StackHeader.tsx +105 -0
  90. package/template/src/components/shared/navigation/tabIconRender.tsx +14 -0
  91. package/template/src/components/shared/offline/OfflineQueryBoundary.tsx +25 -0
  92. package/template/src/components/shared/offline/OfflineState.tsx +229 -0
  93. package/template/src/components/shared/offline/index.ts +6 -0
  94. package/template/src/components/shared/offline/types.ts +15 -0
  95. package/template/src/components/shared/offline/wifi-icon-animation/BrokenWifiAnimation.tsx +116 -0
  96. package/template/src/components/shared/offline/wifi-icon-animation/WifiPiece.tsx +80 -0
  97. package/template/src/components/shared/offline/wifi-icon-animation/geometry.ts +163 -0
  98. package/template/src/components/shared/offline/wifi-icon-animation/useWifiIconAnimationActive.ts +37 -0
  99. package/template/src/components/shared/skelton/BaseSkelton.tsx +71 -0
  100. package/template/src/components/shared/skelton/ShimmerHolder.ts +6 -0
  101. package/template/src/components/shared/skelton/holders/HomeShimmer.tsx +25 -0
  102. package/template/src/components/shared/skelton/holders/index.ts +1 -0
  103. package/template/src/components/shared/skelton/layouts/avatar.layout.ts +18 -0
  104. package/template/src/components/shared/skelton/layouts/home.layout.ts +16 -0
  105. package/template/src/components/shared/skelton/layouts/index.ts +3 -0
  106. package/template/src/components/shared/skelton/layouts/text.layout.ts +18 -0
  107. package/template/src/components/shared/text/CustomText.tsx +85 -0
  108. package/template/src/components/shared/text/ShimmerText.tsx +159 -0
  109. package/template/src/components/shared/text/types.ts +40 -0
  110. package/template/src/constants/device.ts +12 -0
  111. package/template/src/constants/endpoint.ts +11 -0
  112. package/template/src/constants/keyExtractor.ts +6 -0
  113. package/template/src/constants/limits.ts +9 -0
  114. package/template/src/constants/queryKey.ts +3 -0
  115. package/template/src/constants/regex.ts +7 -0
  116. package/template/src/context/NetworkContext.tsx +102 -0
  117. package/template/src/context/ThemeContext.tsx +56 -0
  118. package/template/src/hooks/app/index.ts +2 -0
  119. package/template/src/hooks/app/useGetProfile.ts +38 -0
  120. package/template/src/hooks/app/useUpdateProfile.ts +21 -0
  121. package/template/src/hooks/useAppDispatch.ts +6 -0
  122. package/template/src/hooks/useAppSelector.ts +4 -0
  123. package/template/src/hooks/useDebounce.ts +15 -0
  124. package/template/src/hooks/useDocumentPicker.ts +102 -0
  125. package/template/src/hooks/useImagePicker.ts +83 -0
  126. package/template/src/i18n/i18next.d.ts +9 -0
  127. package/template/src/i18n/index.ts +16 -0
  128. package/template/src/i18n/locales/en.json +274 -0
  129. package/template/src/i18n/locales/ru.json +165 -0
  130. package/template/src/i18n/resources.ts +11 -0
  131. package/template/src/redux/selectors/auth.selectors.ts +4 -0
  132. package/template/src/redux/slice/auth.slice.ts +23 -0
  133. package/template/src/redux/slice/loader.slice.ts +25 -0
  134. package/template/src/redux/slice/settings.slice.ts +26 -0
  135. package/template/src/redux/slice/user.slice.ts +25 -0
  136. package/template/src/screens/app/main-tab/index.tsx +73 -0
  137. package/template/src/screens/app/main-tab/style.ts +0 -0
  138. package/template/src/screens/app/profile-setup/index.tsx +162 -0
  139. package/template/src/screens/app/profile-setup/styles.ts +3 -0
  140. package/template/src/screens/auth/forgot-password/index.tsx +59 -0
  141. package/template/src/screens/auth/forgot-password/styles.ts +0 -0
  142. package/template/src/screens/auth/index.ts +4 -0
  143. package/template/src/screens/auth/login/index.tsx +138 -0
  144. package/template/src/screens/auth/login/styles.ts +3 -0
  145. package/template/src/screens/auth/signup/index.tsx +111 -0
  146. package/template/src/screens/auth/signup/styles.ts +3 -0
  147. package/template/src/screens/auth/verify-email/index.tsx +15 -0
  148. package/template/src/screens/auth/verify-email/styles.ts +3 -0
  149. package/template/src/screens/tab/home/index.tsx +49 -0
  150. package/template/src/screens/tab/home/styles.ts +3 -0
  151. package/template/src/screens/tab/index.ts +2 -0
  152. package/template/src/screens/tab/profile/index.tsx +50 -0
  153. package/template/src/screens/tab/profile/styles.ts +3 -0
  154. package/template/src/services/api/auth/auth.api.ts +22 -0
  155. package/template/src/services/api/auth/auth.endpoints.ts +7 -0
  156. package/template/src/services/api/auth/auth.types.ts +9 -0
  157. package/template/src/services/api/auth/index.ts +3 -0
  158. package/template/src/services/api/axios/axios.instance.ts +15 -0
  159. package/template/src/services/api/axios/axios.interceptors.ts +43 -0
  160. package/template/src/services/api/axios/index.ts +2 -0
  161. package/template/src/services/api/mock/mockAdapter.ts +97 -0
  162. package/template/src/services/api/user/index.ts +2 -0
  163. package/template/src/services/api/user/user.api.ts +67 -0
  164. package/template/src/services/api/user/user.endpoints.ts +0 -0
  165. package/template/src/services/api/user/user.types.ts +0 -0
  166. package/template/src/services/errors/backendErrorCodes.ts +7 -0
  167. package/template/src/services/errors/errorHandler.ts +94 -0
  168. package/template/src/services/errors/firebaseErrorMap.ts +61 -0
  169. package/template/src/services/errors/httpStatusMap.ts +47 -0
  170. package/template/src/services/errors/index.ts +4 -0
  171. package/template/src/services/network/index.ts +1 -0
  172. package/template/src/services/network/onlineManager.ts +22 -0
  173. package/template/src/services/query/index.ts +1 -0
  174. package/template/src/services/query/queryClient.ts +23 -0
  175. package/template/src/services/toast/ToastCard.tsx +137 -0
  176. package/template/src/services/toast/ToastConfig.tsx +32 -0
  177. package/template/src/services/toast/index.ts +3 -0
  178. package/template/src/services/toast/toast.ts +68 -0
  179. package/template/src/storage/mmkvAdapter.ts +3 -0
  180. package/template/src/storage/mmkvInstance.ts +16 -0
  181. package/template/src/store/index.ts +15 -0
  182. package/template/src/store/mmkv.ts +6 -0
  183. package/template/src/store/persist.ts +10 -0
  184. package/template/src/store/rootReducer.ts +26 -0
  185. package/template/src/theme/dark.ts +40 -0
  186. package/template/src/theme/fonts.ts +20 -0
  187. package/template/src/theme/index.ts +6 -0
  188. package/template/src/theme/layout.ts +23 -0
  189. package/template/src/theme/light.ts +41 -0
  190. package/template/src/theme/palette.ts +32 -0
  191. package/template/src/theme/spacing.ts +7 -0
  192. package/template/src/theme/typography.ts +80 -0
  193. package/template/src/types/api.types.ts +34 -0
  194. package/template/src/types/env.d.ts +6 -0
  195. package/template/src/types/index.ts +2 -0
  196. package/template/src/types/navigation.types.ts +94 -0
  197. package/template/src/utils/clearAppSession.ts +10 -0
  198. package/template/src/utils/date.ts +19 -0
  199. package/template/src/utils/documentPickerHandler.ts +96 -0
  200. package/template/src/utils/getFileNameFromUri.ts +18 -0
  201. package/template/src/utils/getInitials.ts +13 -0
  202. package/template/src/utils/hindiText.ts +33 -0
  203. package/template/src/utils/imageCompress.ts +97 -0
  204. package/template/src/utils/imagePickerHandler.ts +200 -0
  205. package/template/src/utils/maskPhone.ts +17 -0
  206. package/template/src/utils/normalize.ts +12 -0
  207. package/template/src/validation/messages.ts +11 -0
  208. package/template/src/validation/rules.ts +44 -0
  209. package/template/src/validation/schema/auth.schema.ts +53 -0
  210. package/template/src/validation/schema/user.schema.ts +46 -0
  211. package/template/src/validation/tValError.ts +13 -0
@@ -0,0 +1,67 @@
1
+ diff --git a/node_modules/react-native-element-dropdown/lib/commonjs/components/Dropdown/index.js b/node_modules/react-native-element-dropdown/lib/commonjs/components/Dropdown/index.js
2
+ index 3166ef9..cdbc26d 100644
3
+ --- a/node_modules/react-native-element-dropdown/lib/commonjs/components/Dropdown/index.js
4
+ +++ b/node_modules/react-native-element-dropdown/lib/commonjs/components/Dropdown/index.js
5
+ @@ -167,14 +167,14 @@ const DropdownComponent = /*#__PURE__*/_react.default.forwardRef((props, current
6
+ if (mode === 'auto') {
7
+ isFull = false;
8
+ }
9
+ - const top = isFull ? 20 : height + pageY + 2;
10
+ + const top = isFull ? 20 : height + pageY;
11
+ const bottom = H - top + height;
12
+ const left = _reactNative.I18nManager.isRTL ? W - width - pageX : pageX;
13
+ setPosition({
14
+ isFull,
15
+ width: Math.floor(width),
16
+ - top: Math.floor(top + statusBarHeight),
17
+ - bottom: Math.floor(bottom - statusBarHeight),
18
+ + top: Math.floor(top),
19
+ + bottom: Math.floor(bottom),
20
+ left: Math.floor(left),
21
+ height: Math.floor(height)
22
+ });
23
+ diff --git a/node_modules/react-native-element-dropdown/lib/module/components/Dropdown/index.js b/node_modules/react-native-element-dropdown/lib/module/components/Dropdown/index.js
24
+ index 914d4d1..213f70b 100644
25
+ --- a/node_modules/react-native-element-dropdown/lib/module/components/Dropdown/index.js
26
+ +++ b/node_modules/react-native-element-dropdown/lib/module/components/Dropdown/index.js
27
+ @@ -159,14 +159,14 @@ const DropdownComponent = /*#__PURE__*/React.forwardRef((props, currentRef) => {
28
+ if (mode === 'auto') {
29
+ isFull = false;
30
+ }
31
+ - const top = isFull ? 20 : height + pageY + 2;
32
+ + const top = isFull ? 20 : height + pageY;
33
+ const bottom = H - top + height;
34
+ const left = I18nManager.isRTL ? W - width - pageX : pageX;
35
+ setPosition({
36
+ isFull,
37
+ width: Math.floor(width),
38
+ - top: Math.floor(top + statusBarHeight),
39
+ - bottom: Math.floor(bottom - statusBarHeight),
40
+ + top: Math.floor(top),
41
+ + bottom: Math.floor(bottom),
42
+ left: Math.floor(left),
43
+ height: Math.floor(height)
44
+ });
45
+ diff --git a/node_modules/react-native-element-dropdown/src/components/Dropdown/index.tsx b/node_modules/react-native-element-dropdown/src/components/Dropdown/index.tsx
46
+ index 2a73f2f..55d0da5 100644
47
+ --- a/node_modules/react-native-element-dropdown/src/components/Dropdown/index.tsx
48
+ +++ b/node_modules/react-native-element-dropdown/src/components/Dropdown/index.tsx
49
+ @@ -201,15 +201,15 @@ const DropdownComponent = React.forwardRef<IDropdownRef, DropdownProps<any>>(
50
+ isFull = false;
51
+ }
52
+
53
+ - const top = isFull ? 20 : height + pageY + 2;
54
+ + const top = isFull ? 20 : height + pageY;
55
+ const bottom = H - top + height;
56
+ const left = I18nManager.isRTL ? W - width - pageX : pageX;
57
+
58
+ setPosition({
59
+ isFull,
60
+ width: Math.floor(width),
61
+ - top: Math.floor(top + statusBarHeight),
62
+ - bottom: Math.floor(bottom - statusBarHeight),
63
+ + top: Math.floor(top),
64
+ + bottom: Math.floor(bottom),
65
+ left: Math.floor(left),
66
+ height: Math.floor(height),
67
+ });
@@ -0,0 +1,25 @@
1
+ import { StatusBar } from 'react-native';
2
+ import { AppProviders } from './providers';
3
+ import { RootNavigator } from './navigation/root';
4
+ import '@/i18n';
5
+ import Toast from 'react-native-toast-message';
6
+ import { useAppTheme } from '@/context/ThemeContext';
7
+ import { toastConfig } from '@/services/toast';
8
+ import { GestureHandlerRootView } from 'react-native-gesture-handler';
9
+
10
+ const App = () => {
11
+ const { theme, mode } = useAppTheme();
12
+ const isDark = mode === 'dark';
13
+
14
+ return (
15
+ <GestureHandlerRootView>
16
+ <AppProviders>
17
+ <StatusBar barStyle={isDark ? 'light-content' : 'dark-content'} />
18
+ <RootNavigator />
19
+ <Toast config={toastConfig} />
20
+ </AppProviders>
21
+ </GestureHandlerRootView>
22
+ );
23
+ };
24
+
25
+ export default App;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { NavigationContainer } from '@react-navigation/native';
3
+ import { navigationRef } from '@/types';
4
+ import { useAppSelector } from '@/hooks/useAppSelector';
5
+ import { selectIsAuthenticated } from '@/redux/selectors/auth.selectors';
6
+ import AppStack from './stacks/app.stack';
7
+ import AuthStack from './stacks/auth.stack';
8
+ import GlobalLoader from '@/components/shared/GlobalLoader';
9
+
10
+ interface RootNavigatorProps {
11
+ onReady?: () => void;
12
+ }
13
+
14
+ export const RootNavigator: React.FC<RootNavigatorProps> = ({ onReady }) => {
15
+ const isAuthenticated = useAppSelector(selectIsAuthenticated);
16
+ return (
17
+ <>
18
+ <NavigationContainer ref={navigationRef} onReady={onReady}>
19
+ {isAuthenticated ? <AppStack /> : <AuthStack />}
20
+ </NavigationContainer>
21
+ <GlobalLoader />
22
+ </>
23
+ );
24
+ };
@@ -0,0 +1,67 @@
1
+ import { useAppTheme } from '@/context/ThemeContext';
2
+ import MainTabs from '@/screens/app/main-tab';
3
+ import ProfileSetup from '@/screens/app/profile-setup';
4
+ import { FontFamily } from '@/theme';
5
+ import { layout } from '@/theme/layout';
6
+ import { AppStackParamList } from '@/types';
7
+ import { createNativeStackNavigator } from '@react-navigation/native-stack';
8
+ import AppBottomTabs from './app.tab';
9
+ import { useAppSelector } from '@/hooks/useAppSelector';
10
+ import { StyleSheet } from 'react-native';
11
+
12
+ const Stack = createNativeStackNavigator<AppStackParamList>();
13
+
14
+ const AppStack = () => {
15
+ const { color } = useAppTheme();
16
+ const { isProfileSetup } = useAppSelector(state => state.user);
17
+ return (
18
+ <Stack.Navigator
19
+ initialRouteName={isProfileSetup ? 'BottomTabs' : 'ProfileSetup'}
20
+ screenOptions={{
21
+ headerTitleAlign: 'center',
22
+ headerShown: true,
23
+ headerTitleStyle: [
24
+ styles.headerTitle,
25
+ { color: color.text_primary },
26
+ ],
27
+ contentStyle: [
28
+ { backgroundColor: color.background_primary },
29
+ layout.flex,
30
+ ],
31
+ headerStyle: { backgroundColor: color.background_secondary },
32
+ headerBackVisible: false,
33
+ animation: 'slide_from_right',
34
+ // headerShadowVisible: false,
35
+ }}
36
+ >
37
+ <Stack.Screen
38
+ name="ProfileSetup"
39
+ component={ProfileSetup}
40
+ options={{
41
+ headerTitle: 'Profile Setup',
42
+ }}
43
+ />
44
+ <Stack.Screen
45
+ component={AppBottomTabs}
46
+ name="BottomTabs"
47
+ options={{ headerShown: false }}
48
+ />
49
+ <Stack.Screen
50
+ name="MainTabs"
51
+ component={MainTabs}
52
+ options={{
53
+ headerTitle: 'Main Tab',
54
+ }}
55
+ />
56
+ </Stack.Navigator>
57
+ );
58
+ };
59
+
60
+ export default AppStack;
61
+
62
+ const styles = StyleSheet.create({
63
+ headerTitle: {
64
+ fontFamily: FontFamily.InterTightMedium,
65
+ fontSize: 20,
66
+ },
67
+ });
@@ -0,0 +1,72 @@
1
+ import {
2
+ renderHomeIcon,
3
+ renderProfileIcon,
4
+ } from '@/components/shared/navigation/tabIconRender';
5
+ import { useAppTheme } from '@/context/ThemeContext';
6
+ import { Home, Profile } from '@/screens/tab';
7
+ import { FontFamily } from '@/theme';
8
+ import { layout } from '@/theme/layout';
9
+ import { BottomTabParamList } from '@/types';
10
+ import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
11
+ import { Pressable, StyleSheet } from 'react-native';
12
+
13
+ const Tabs = createBottomTabNavigator<BottomTabParamList>();
14
+
15
+ const AppBottomTabs = () => {
16
+ const { color } = useAppTheme();
17
+
18
+ return (
19
+ <Tabs.Navigator
20
+ initialRouteName="Home"
21
+ screenOptions={{
22
+ headerTitleAlign: 'center',
23
+ headerShown: false,
24
+ headerTitleStyle: [styles.tabbarHeaderTitle,{ color: color.text_primary,}],
25
+ sceneStyle: [
26
+ { backgroundColor: color.background_primary },
27
+ layout.flex,
28
+ ],
29
+ headerStyle: { backgroundColor: color.background_secondary },
30
+ tabBarStyle: [styles.tabbarStyle, {backgroundColor: color.background_secondary}],
31
+ tabBarButton: ({ ref: _ref, ...props }) => <Pressable {...props} android_ripple={{color:'transparent',foreground:true}} />,
32
+ tabBarAllowFontScaling: false,
33
+ tabBarActiveTintColor: color.secondary,
34
+ tabBarInactiveTintColor: color.text_secondary,
35
+ tabBarLabelStyle: styles.tabbarLabel
36
+ }}
37
+ >
38
+ <Tabs.Screen
39
+ name="Home"
40
+ component={Home}
41
+ options={{
42
+ tabBarIcon: renderHomeIcon,
43
+ }}
44
+ />
45
+ <Tabs.Screen
46
+ name="Profile"
47
+ component={Profile}
48
+ options={{
49
+ tabBarIcon: renderProfileIcon,
50
+ }}
51
+ />
52
+ </Tabs.Navigator>
53
+ );
54
+ };
55
+
56
+ export default AppBottomTabs;
57
+
58
+
59
+ const styles = StyleSheet.create({
60
+ tabbarStyle: {
61
+ height: 80,
62
+ paddingTop: 8,
63
+ },
64
+ tabbarLabel:{
65
+ fontFamily: FontFamily.InterTightRegular,
66
+ fontSize: 12,
67
+ },
68
+ tabbarHeaderTitle:{
69
+ fontFamily: FontFamily.InterTightMedium,
70
+ fontSize: 20,
71
+ }
72
+ })
@@ -0,0 +1,56 @@
1
+ import { createNativeStackNavigator } from '@react-navigation/native-stack';
2
+ import { ForgotPassword, Login, Signup } from '@/screens/auth';
3
+ import HeaderBackButton from '@/components/shared/navigation/HeaderBackButton';
4
+ import { FontFamily } from '@/theme';
5
+ import { useAppTheme } from '@/context/ThemeContext';
6
+ import { layout } from '@/theme/layout';
7
+ import { AuthStackParamList } from '@/types';
8
+ import { StyleSheet } from 'react-native';
9
+
10
+ const Stack = createNativeStackNavigator<AuthStackParamList>();
11
+
12
+ const AuthStack = () => {
13
+ const { color } = useAppTheme();
14
+ return (
15
+ <Stack.Navigator
16
+ initialRouteName="Login"
17
+ screenOptions={{
18
+ headerShown: false,
19
+ contentStyle: [
20
+ { backgroundColor: color.background_primary },
21
+ layout.flex,
22
+ ],
23
+ headerStyle: { backgroundColor: color.background_secondary },
24
+ animation: 'slide_from_right',
25
+ }}
26
+ >
27
+ <Stack.Screen name="Login" component={Login} />
28
+ <Stack.Screen name="Signup" component={Signup} />
29
+
30
+ <Stack.Screen
31
+ name="ForgotPassword"
32
+ component={ForgotPassword}
33
+ options={({ navigation }) => ({
34
+ headerShown: true,
35
+ headerTitle: 'Forgot Password?',
36
+ headerTitleAlign: 'center',
37
+ // eslint-disable-next-line react/no-unstable-nested-components
38
+ headerLeft: () => <HeaderBackButton onPress={navigation.goBack} />,
39
+ headerTitleStyle: [
40
+ styles.headerTitle,
41
+ { color: color.text_primary },
42
+ ],
43
+ })}
44
+ />
45
+ </Stack.Navigator>
46
+ );
47
+ };
48
+
49
+ export default AuthStack;
50
+
51
+ const styles = StyleSheet.create({
52
+ headerTitle: {
53
+ fontFamily: FontFamily.InterTightMedium,
54
+ fontSize: 20,
55
+ },
56
+ });
@@ -0,0 +1,43 @@
1
+ import { NetworkProvider } from '@/context/NetworkContext';
2
+ import { ThemeProvider } from '@/context/ThemeContext';
3
+ import i18n from '@/i18n';
4
+ import { persistor, store } from '@/store';
5
+ import '@/services/api/axios';
6
+ import { queryClient } from '@/services/query/queryClient';
7
+ import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
8
+ import { QueryClientProvider } from '@tanstack/react-query';
9
+ import React, { ReactNode } from 'react';
10
+ import { SafeAreaProvider } from 'react-native-safe-area-context';
11
+ import { Provider } from 'react-redux';
12
+ import { PersistGate } from 'redux-persist/integration/react';
13
+
14
+ type Props = {
15
+ children: ReactNode;
16
+ };
17
+
18
+ const applyPersistedLanguage = async (): Promise<void> => {
19
+ const language = store.getState().settings?.language || 'en';
20
+ await i18n.changeLanguage(language);
21
+ };
22
+
23
+ export const AppProviders = ({ children }: Props) => {
24
+ return (
25
+ <SafeAreaProvider>
26
+ <Provider store={store}>
27
+ <PersistGate
28
+ loading={null}
29
+ persistor={persistor}
30
+ onBeforeLift={applyPersistedLanguage}
31
+ >
32
+ <QueryClientProvider client={queryClient}>
33
+ <ThemeProvider>
34
+ <NetworkProvider>
35
+ <BottomSheetModalProvider>{children}</BottomSheetModalProvider>
36
+ </NetworkProvider>
37
+ </ThemeProvider>
38
+ </QueryClientProvider>
39
+ </PersistGate>
40
+ </Provider>
41
+ </SafeAreaProvider>
42
+ );
43
+ };
@@ -0,0 +1,3 @@
1
+ <svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11.57 7.92999L5.5 14M5.5 14L11.57 20.07M5.5 14L22.4999 14.0001" stroke="#2D2D2D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M14 2H13.3334V0.666626C13.3334 0.298706 13.0347 0 12.6666 0H12C11.632 0 11.3334 0.298706 11.3334 0.666626V2H4.66663V0.666626C4.66663 0.298706 4.36804 0 4 0H3.33337C2.96533 0 2.66663 0.298706 2.66663 0.666626V2H2C0.897339 2 0 2.89734 0 4V14C0 15.1027 0.897339 16 2 16H14C15.1027 16 16 15.1027 16 14V4C16 2.89734 15.1027 2 14 2ZM14.6666 14C14.6666 14.3673 14.3673 14.6666 14 14.6666H2C1.63269 14.6666 1.33337 14.3673 1.33337 14V6.69336H14.6666V14Z" fill="#A6ADB9"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M7 1.75V8.75M4.08333 4.66667L7 1.75L9.91667 4.66667M12.25 8.75V11.0833C12.25 11.3928 12.1271 11.6895 11.9083 11.9083C11.6895 12.1271 11.3928 12.25 11.0833 12.25H2.91667C2.60725 12.25 2.3105 12.1271 2.09171 11.9083C1.87292 11.6895 1.75 11.3928 1.75 11.0833V8.75" stroke="#00A8E8" stroke-width="2" stroke-linecap="round"/>
3
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0,0,256,256" width="104px" height="104px" fill-rule="nonzero"><g fill="#a6adb9" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(9.84615,9.84615)"><path d="M13,0.15625c-7.09766,0 -12.84375,5.74609 -12.84375,12.84375c0,7.09766 5.74609,12.84375 12.84375,12.84375c7.09766,0 12.84375,-5.74609 12.84375,-12.84375c0,-7.09766 -5.74609,-12.84375 -12.84375,-12.84375zM11.96875,3c0.03906,-0.00391 0.08594,0.00391 0.125,0v0.5c0,0.5 0.40625,0.90625 0.90625,0.90625c0.5,0 0.90625,-0.40625 0.90625,-0.90625v-0.5c4.82031,0.42969 8.66406,4.27344 9.09375,9.09375h-0.5c-0.03125,0 -0.0625,0 -0.09375,0c-0.5,0.02734 -0.88672,0.45313 -0.85937,0.95313c0.02734,0.5 0.45313,0.88672 0.95313,0.85938h0.5c-0.42969,4.82031 -4.27344,8.66406 -9.09375,9.09375v-0.5c0.00391,-0.25781 -0.10156,-0.50781 -0.29297,-0.67969c-0.19141,-0.17578 -0.44922,-0.25781 -0.70703,-0.22656c-0.46484,0.04297 -0.82031,0.4375 -0.8125,0.90625v0.5c-4.82031,-0.42969 -8.66406,-4.27344 -9.09375,-9.09375h0.5c0.5,0 0.90625,-0.40625 0.90625,-0.90625c0,-0.5 -0.40625,-0.90625 -0.90625,-0.90625h-0.5c0.42969,-4.78125 4.20313,-8.60937 8.96875,-9.09375zM13,5.4375c-0.49219,0 -0.70312,0.4375 -0.71875,0.6875l-0.28125,5.28125c-0.53516,0.33594 -0.90625,0.91406 -0.90625,1.59375c0,1.04688 0.85938,1.90625 1.90625,1.90625c0.05469,0 0.10156,-0.02734 0.15625,-0.03125l4.25,3.8125c0.19531,0.17188 0.70313,0.32813 1.15625,-0.125c0.45703,-0.45312 0.32422,-0.99219 0.15625,-1.1875l-3.8125,-4.34375c0,-0.01172 0,-0.01953 0,-0.03125c0,-0.70312 -0.39844,-1.29687 -0.96875,-1.625l-0.21875,-5.25c-0.01172,-0.25 -0.23047,-0.6875 -0.71875,-0.6875z"></path></g></g></svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="8" viewBox="0 0 14 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0.625 0.625069L6.695 6.69507L12.765 0.625069" stroke="#A6ADB9" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 9.99738V12.0988C0 12.2924 0.152078 12.4444 0.345631 12.4444H2.44707C2.53693 12.4444 2.6268 12.4099 2.68901 12.3408L10.2376 4.79909L7.64536 2.20685L0.103689 9.74852C0.0345632 9.81765 0 9.9006 0 9.99738ZM12.2423 2.79443C12.5118 2.52483 12.5118 2.08934 12.2423 1.81975L10.6247 0.202194C10.3551 -0.067398 9.91961 -0.067398 9.65002 0.202194L8.38501 1.4672L10.9772 4.05944L12.2423 2.79443Z" fill="white"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="512" height="439" viewBox="0 0 512 439" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M492.8 146.432C433.664 53.504 347.136 0 256 0C210.432 0 166.144 13.312 125.696 38.144C85.248 63.232 48.896 99.84 19.2 146.432C-6.4 186.624 -6.4 251.904 19.2 292.096C78.336 385.28 164.864 438.528 256 438.528C301.568 438.528 345.856 425.216 386.304 400.384C426.752 375.296 463.104 338.688 492.8 292.096C518.4 252.16 518.4 186.624 492.8 146.432ZM256 322.816C198.656 322.816 152.576 276.48 152.576 219.392C152.576 162.304 198.656 115.968 256 115.968C313.344 115.968 359.424 162.304 359.424 219.392C359.424 276.48 313.344 322.816 256 322.816Z" fill="#A6ADB9"/>
3
+ <path d="M255.96 146.2C215.768 146.2 183 178.968 183 219.416C183 259.608 215.768 292.376 255.96 292.376C296.152 292.376 329.176 259.608 329.176 219.416C329.176 179.224 296.152 146.2 255.96 146.2Z" fill="#A6ADB9"/>
4
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M17.3361 6.45396C17.0752 6.04015 16.7964 5.65333 16.5085 5.2935C16.1757 4.8707 15.546 4.83472 15.1681 5.21254L12.4694 7.91127C12.6673 8.50499 12.7033 9.18867 12.5234 9.89933C12.2085 11.1677 11.183 12.1933 9.91461 12.5081C9.20394 12.688 8.52026 12.652 7.92654 12.4541C7.92654 12.4541 6.64015 13.7405 5.71358 14.6671C5.2638 15.1169 5.40773 15.9085 6.01045 16.1424C6.97299 16.5112 7.97152 16.7001 8.99704 16.7001C10.5983 16.7001 12.1546 16.2324 13.5759 15.3598C15.0242 14.4602 16.3286 13.1378 17.3811 11.4556C18.2357 10.0972 18.1907 7.81232 17.3361 6.45396Z" fill="#A6ADB9"/>
3
+ <path d="M10.8135 7.17567L7.17919 10.81C6.7204 10.3422 6.42354 9.69449 6.42354 8.99282C6.42354 7.58048 7.575 6.42003 8.99633 6.42003C9.698 6.42003 10.3457 6.71689 10.8135 7.17567Z" fill="#A6ADB9"/>
4
+ <path d="M14.6181 3.36962L11.5686 6.41918C10.9119 5.7535 10.0033 5.35768 8.99577 5.35768C6.98072 5.35768 5.36148 6.98592 5.36148 8.99197C5.36148 9.9995 5.76629 10.9081 6.42298 11.5648L3.38241 14.6143H3.37341C2.37488 13.8047 1.45731 12.7702 0.674683 11.5468C-0.224894 10.1344 -0.224894 7.84051 0.674683 6.42818C1.71819 4.79095 2.99559 3.50455 4.41692 2.62297C5.83825 1.75938 7.39452 1.2826 8.99577 1.2826C11.0018 1.2826 12.9449 2.02025 14.6181 3.36962Z" fill="#A6ADB9"/>
5
+ <path d="M11.5669 8.99057C11.5669 10.4029 10.4154 11.5634 8.99408 11.5634C8.94011 11.5634 8.89513 11.5634 8.84115 11.5454L11.5489 8.83764C11.5669 8.89161 11.5669 8.93659 11.5669 8.99057Z" fill="#A6ADB9"/>
6
+ <path d="M17.7837 0.202405C17.5138 -0.0674683 17.073 -0.0674683 16.8031 0.202405L0.205919 16.8086C-0.0639543 17.0785 -0.0639543 17.5193 0.205919 17.7891C0.340855 17.9151 0.511775 17.987 0.69169 17.987C0.871606 17.987 1.04253 17.9151 1.17746 17.7801L17.7837 1.17395C18.0625 0.904075 18.0625 0.472278 17.7837 0.202405Z" fill="#A6ADB9"/>
7
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="folder">
3
+ <path id="Vector" d="M15.1689 13.7512C14.9032 14.0169 14.5429 14.1661 14.1671 14.1661H2.83288C2.45713 14.1661 2.09676 14.0169 1.83107 13.7512C1.56537 13.4855 1.4161 13.1252 1.4161 12.7495V3.5416C1.4161 3.16589 1.56537 2.80558 1.83107 2.53991C2.09676 2.27425 2.45713 2.125 2.83288 2.125H5.61685C5.85141 2.12504 6.08228 2.1833 6.28876 2.29456C6.49524 2.40583 6.67086 2.5666 6.79986 2.76247L7.37366 3.61243C7.50398 3.81031 7.68185 3.97235 7.891 4.08372C8.10015 4.19509 8.33389 4.25222 8.57084 4.2499H14.1671C14.5429 4.2499 14.9032 4.39915 15.1689 4.66481C15.4346 4.93048 15.5839 5.29079 15.5839 5.6665V12.7495C15.5839 13.1252 15.4346 13.4855 15.1689 13.7512Z" stroke="#172B4D" stroke-linecap="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M6.818 1.24033L1.967 5.02033C1.157 5.65033 0.5 6.99133 0.5 8.00833V14.6773C0.5 16.7653 2.201 18.4753 4.289 18.4753H14.711C16.799 18.4753 18.5 16.7653 18.5 14.6863V8.13433C18.5 7.04533 17.771 5.65033 16.88 5.02933L11.318 1.13233C10.058 0.250326 8.033 0.295326 6.818 1.24033Z" stroke="#89909D" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M9.5 14.8753V12.1753" stroke="#89909D" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,35 @@
1
+ import Back from './back.svg';
2
+ import Calendar from './calendar.svg';
3
+ import Claim_upload from './claim_upload.svg';
4
+ import Clock from './clock.svg';
5
+ import DownArrow from './downArrow.svg';
6
+ import Edit from './edit.svg';
7
+ import Eye from './eye.svg';
8
+ import EyeClose from './eyeClose.svg';
9
+ import Folder from './folder.svg';
10
+ import Home from './home.svg';
11
+ import Log_out from './log_out.svg';
12
+ import Setting from './setting.svg';
13
+ import Tooltip_dark from './tooltip_dark.svg';
14
+ import Tooltip_light from './tooltip_light.svg';
15
+ import UpArrow from './upArrow.svg';
16
+
17
+ export const Icons = {
18
+ back: Back,
19
+ calendar: Calendar,
20
+ claim_upload: Claim_upload,
21
+ clock: Clock,
22
+ downArrow: DownArrow,
23
+ edit: Edit,
24
+ eye: Eye,
25
+ eyeClose: EyeClose,
26
+ folder: Folder,
27
+ home: Home,
28
+ log_out: Log_out,
29
+ setting: Setting,
30
+ tooltip_dark: Tooltip_dark,
31
+ tooltip_light: Tooltip_light,
32
+ upArrow: UpArrow,
33
+ } as const;
34
+
35
+ export type IconName = keyof typeof Icons;
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M10 4H6C4.89543 4 4 4.89543 4 6V18C4 19.1046 4.89543 20 6 20H10" stroke="#F2574C" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M16 8L20 12M20 12L16 16M20 12H10" stroke="#F2574C" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11.9956 14.6987C13.4861 14.6987 14.6943 13.4905 14.6943 12.0001C14.6943 10.5096 13.4861 9.30142 11.9956 9.30142C10.5052 9.30142 9.297 10.5096 9.297 12.0001C9.297 13.4905 10.5052 14.6987 11.9956 14.6987Z" stroke="#89909D" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M3 12.7916V11.2084C3 10.2729 3.76462 9.49926 4.70915 9.49926C6.33733 9.49926 7.003 8.34784 6.18441 6.93554C5.71664 6.12595 5.9955 5.07348 6.81409 4.60571L8.37031 3.71516C9.08096 3.29237 9.9985 3.54424 10.4213 4.25489L10.5202 4.4258C11.3298 5.83809 12.6612 5.83809 13.4798 4.4258L13.5787 4.25489C14.0015 3.54424 14.919 3.29237 15.6297 3.71516L17.1859 4.60571C18.0045 5.07348 18.2834 6.12595 17.8156 6.93554C16.997 8.34784 17.6627 9.49926 19.2909 9.49926C20.2264 9.49926 21 10.2639 21 11.2084V12.7916C21 13.7271 20.2354 14.5008 19.2909 14.5008C17.6627 14.5008 16.997 15.6522 17.8156 17.0645C18.2834 17.8831 18.0045 18.9265 17.1859 19.3943L15.6297 20.2849C14.919 20.7077 14.0015 20.4558 13.5787 19.7451L13.4798 19.5742C12.6702 18.1619 11.3388 18.1619 10.5202 19.5742L10.4213 19.7451C9.9985 20.4558 9.08096 20.7077 8.37031 20.2849L6.81409 19.3943C5.9955 18.9265 5.71664 17.8741 6.18441 17.0645C7.003 15.6522 6.33733 14.5008 4.70915 14.5008C3.76462 14.5008 3 13.7271 3 12.7916Z" stroke="#89909D" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11.5391 2.51342C12.4407 2.49227 13.3718 2.7223 14.1045 3.2351L19.666 7.13158L19.8604 7.27904C20.3057 7.64429 20.6879 8.15107 20.9678 8.68725C21.2876 9.29998 21.5 10.0013 21.5 10.6472V17.199C21.4999 19.5532 19.5758 21.488 17.2109 21.488H6.78906C4.42353 21.488 2.50025 19.5526 2.5 17.1902V10.5212C2.5 9.91594 2.69194 9.25009 2.98047 8.66185C3.26923 8.07332 3.67938 7.51239 4.16016 7.13842L9.01074 3.35814L9.14648 3.25853C9.83349 2.77527 10.6938 2.53329 11.5391 2.51342ZM12 14.1872C11.724 14.1872 11.5002 14.4113 11.5 14.6872V17.3874C11.5001 17.6635 11.7239 17.8874 12 17.8874C12.2761 17.8874 12.4999 17.6635 12.5 17.3874V14.6872C12.4998 14.4113 12.276 14.1872 12 14.1872Z" fill="#0597FF"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9.31836 3.75233C10.5334 2.80752 12.5584 2.76199 13.8184 3.64394L19.3799 7.5414C20.2708 8.1623 20.9998 9.55696 21 10.6459V17.1986C20.9999 19.2775 19.2989 20.9877 17.2109 20.9877H6.78906C4.70122 20.9877 3.00025 19.2776 3 17.1898V10.5199C3.0002 9.50307 3.65703 8.16259 4.4668 7.53261L9.31836 3.75233ZM12 14.1869C11.724 14.1869 11.5002 14.411 11.5 14.6869V17.3871C11.5001 17.6632 11.7239 17.8871 12 17.8871C12.2761 17.8871 12.4999 17.6632 12.5 17.3871V14.6869C12.4998 14.411 12.276 14.1869 12 14.1869Z" fill="#082B60"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9.318 3.75265L4.467 7.53265C3.657 8.16265 3 9.50365 3 10.5207V17.1897C3 19.2777 4.701 20.9877 6.789 20.9877H17.211C19.299 20.9877 21 19.2777 21 17.1987V10.6467C21 9.55765 20.271 8.16266 19.38 7.54166L13.818 3.64466C12.558 2.76266 10.533 2.80766 9.318 3.75265Z" stroke="#89909D" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M12 17.3877V14.6877" stroke="#89909D" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,31 @@
1
+ import HomeFilledLight from './home/filled_light.svg';
2
+ import HomeFilledDark from './home/filled_dark.svg';
3
+ import HomeOutline from './home/outline.svg';
4
+ import ProfileFilledLight from './profile/filled_light.svg';
5
+ import ProfileFilledDark from './profile/filled_dark.svg';
6
+ import ProfileOutline from './profile/outline.svg';
7
+
8
+ export const TabIcons = {
9
+ home: {
10
+ active: {
11
+ light: HomeFilledLight,
12
+ dark: HomeFilledDark,
13
+ },
14
+ inactive: {
15
+ light: HomeOutline,
16
+ dark: HomeOutline,
17
+ },
18
+ },
19
+ profile: {
20
+ active: {
21
+ light: ProfileFilledLight,
22
+ dark: ProfileFilledDark,
23
+ },
24
+ inactive: {
25
+ light: ProfileOutline,
26
+ dark: ProfileOutline,
27
+ },
28
+ },
29
+ } as const;
30
+
31
+ export type TabIconName = keyof typeof TabIcons;
@@ -0,0 +1,6 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9.32306 3.0177C6.96956 3.0177 5.05622 4.93104 5.05622 7.28454C5.05622 9.59312 6.86177 11.4616 9.21527 11.5424C9.28713 11.5334 9.35899 11.5334 9.41289 11.5424C9.43086 11.5424 9.43984 11.5424 9.45781 11.5424C9.46679 11.5424 9.46679 11.5424 9.47577 11.5424C11.7754 11.4616 13.5809 9.59312 13.5899 7.28454C13.5899 4.93104 11.6766 3.0177 9.32306 3.0177Z" fill="#0597FF"/>
3
+ <path d="M13.8872 13.9308C11.381 12.26 7.29379 12.26 4.76962 13.9308C3.6288 14.6944 3 15.7274 3 16.8323C3 17.9372 3.6288 18.9612 4.76063 19.7158C6.01823 20.5602 7.67107 20.9824 9.32391 20.9824C10.9767 20.9824 12.6296 20.5602 13.8872 19.7158C15.019 18.9522 15.6478 17.9282 15.6478 16.8143C15.6388 15.7094 15.019 14.6854 13.8872 13.9308Z" fill="#0597FF"/>
4
+ <path d="M19.1946 7.81286C19.3383 9.55553 18.0987 11.0826 16.383 11.2892C16.374 11.2892 16.374 11.2892 16.365 11.2892H16.3381C16.2842 11.2892 16.2303 11.2892 16.1854 11.3072C15.314 11.3521 14.5146 11.0736 13.9127 10.5616C14.838 9.73518 15.3679 8.49556 15.2601 7.14813C15.1973 6.42052 14.9457 5.7558 14.5685 5.18988C14.9098 5.0192 15.3051 4.91141 15.7093 4.87548C17.4699 4.72277 19.0419 6.03426 19.1946 7.81286Z" fill="#0597FF"/>
5
+ <path d="M20.9902 16.124C20.9183 16.9953 20.3614 17.7499 19.4272 18.2619C18.5289 18.756 17.3971 18.9895 16.2742 18.9626C16.921 18.3787 17.2983 17.6511 17.3701 16.8785C17.46 15.7647 16.93 14.6957 15.87 13.8424C15.2681 13.3663 14.5675 12.989 13.8039 12.7105C15.7892 12.1356 18.2864 12.5219 19.8224 13.7615C20.6489 14.4262 21.071 15.2616 20.9902 16.124Z" fill="#0597FF"/>
6
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9.32306 3.01758C6.96956 3.01758 5.05622 4.93092 5.05622 7.28442C5.05622 9.593 6.86177 11.4614 9.21527 11.5423C9.28713 11.5333 9.35899 11.5333 9.41289 11.5423C9.43086 11.5423 9.43984 11.5423 9.45781 11.5423C9.46679 11.5423 9.46679 11.5423 9.47577 11.5423C11.7754 11.4614 13.5809 9.593 13.5899 7.28442C13.5899 4.93092 11.6766 3.01758 9.32306 3.01758Z" fill="#082B60"/>
3
+ <path d="M13.8872 13.9307C11.381 12.2599 7.29379 12.2599 4.76962 13.9307C3.6288 14.6943 3 15.7273 3 16.8322C3 17.9371 3.6288 18.9611 4.76063 19.7157C6.01823 20.56 7.67107 20.9822 9.32391 20.9822C10.9767 20.9822 12.6296 20.56 13.8872 19.7157C15.019 18.9521 15.6478 17.9281 15.6478 16.8142C15.6388 15.7093 15.019 14.6853 13.8872 13.9307Z" fill="#082B60"/>
4
+ <path d="M19.1946 7.81274C19.3383 9.55541 18.0987 11.0825 16.383 11.2891C16.374 11.2891 16.374 11.2891 16.365 11.2891H16.3381C16.2842 11.2891 16.2303 11.2891 16.1854 11.3071C15.314 11.352 14.5146 11.0735 13.9127 10.5615C14.838 9.73506 15.3679 8.49543 15.2601 7.14801C15.1973 6.4204 14.9457 5.75567 14.5685 5.18976C14.9098 5.01908 15.3051 4.91129 15.7093 4.87536C17.4699 4.72265 19.0419 6.03414 19.1946 7.81274Z" fill="#082B60"/>
5
+ <path d="M20.9902 16.1239C20.9183 16.9952 20.3614 17.7498 19.4272 18.2618C18.5289 18.7558 17.3971 18.9894 16.2742 18.9624C16.921 18.3786 17.2983 17.6509 17.3701 16.8784C17.46 15.7646 16.93 14.6956 15.87 13.8422C15.2681 13.3661 14.5675 12.9889 13.8039 12.7104C15.7892 12.1355 18.2864 12.5218 19.8224 13.7614C20.6489 14.4261 21.071 15.2615 20.9902 16.1239Z" fill="#082B60"/>
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M16.0911 4.81726C17.8539 4.81726 19.2713 6.24382 19.2713 7.99748C19.2713 9.71479 17.9084 11.1141 16.2092 11.1777C16.1366 11.1686 16.0548 11.1686 15.973 11.1777M17.8448 19.3554C18.499 19.2191 19.1169 18.9556 19.6257 18.5649C21.0432 17.5018 21.0432 15.7481 19.6257 14.685C19.1259 14.3034 18.5172 14.049 17.872 13.9036M9.50351 11.0596C9.41265 11.0505 9.30361 11.0505 9.20366 11.0596C7.04112 10.9869 5.3238 9.21504 5.3238 7.03433C5.3238 4.80818 7.12289 3 9.35813 3C11.5843 3 13.3925 4.80818 13.3925 7.03433C13.3834 9.21504 11.6661 10.9869 9.50351 11.0596ZM4.96032 14.4124C2.76143 15.8844 2.76143 18.2832 4.96032 19.7461C7.45906 21.418 11.557 21.418 14.0557 19.7461C16.2546 18.2741 16.2546 15.8753 14.0557 14.4124C11.5661 12.7496 7.46815 12.7496 4.96032 14.4124Z" stroke="#89909D" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0,0,256,256" width="96px" height="96px" fill-rule="nonzero"><g fill="#ffffff" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="translate(256,256) rotate(-180) scale(10.66667,10.66667)"><path d="M12,0c-6.62891,0 -12,5.37109 -12,12c0,6.62891 5.37109,12 12,12c6.62891,0 12,-5.37109 12,-12c0,-6.62891 -5.37109,-12 -12,-12zM12,2c5.52344,0 10,4.47656 10,10c0,5.52344 -4.47656,10 -10,10c-5.52344,0 -10,-4.47656 -10,-10c0,-5.52344 4.47656,-10 10,-10zM12,5.8125c-0.18359,0 -0.33594,-0.00391 -0.5,0.03125c-0.16406,0.03516 -0.31641,0.125 -0.4375,0.21875c-0.12109,0.09375 -0.21094,0.22266 -0.28125,0.375c-0.07031,0.15234 -0.09375,0.33203 -0.09375,0.5625c0,0.22656 0.02344,0.40625 0.09375,0.5625c0.07031,0.15625 0.16016,0.28125 0.28125,0.375c0.12109,0.09375 0.27344,0.14844 0.4375,0.1875c0.16406,0.03906 0.31641,0.0625 0.5,0.0625c0.17969,0 0.37109,-0.02344 0.53125,-0.0625c0.16016,-0.03906 0.28516,-0.09375 0.40625,-0.1875c0.12109,-0.09375 0.21094,-0.21875 0.28125,-0.375c0.07031,-0.15234 0.125,-0.33594 0.125,-0.5625c0,-0.23047 -0.05469,-0.41016 -0.125,-0.5625c-0.07031,-0.15234 -0.16016,-0.28125 -0.28125,-0.375c-0.12109,-0.09375 -0.24609,-0.18359 -0.40625,-0.21875c-0.16016,-0.03516 -0.35156,-0.03125 -0.53125,-0.03125zM10.78125,9.15625v8.96875h2.4375v-8.96875z"></path></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0,0,256,256" width="96px" height="96px" fill-rule="nonzero"><g fill="#000000" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="translate(256,256) rotate(-180) scale(10.66667,10.66667)"><path d="M12,0c-6.62891,0 -12,5.37109 -12,12c0,6.62891 5.37109,12 12,12c6.62891,0 12,-5.37109 12,-12c0,-6.62891 -5.37109,-12 -12,-12zM12,2c5.52344,0 10,4.47656 10,10c0,5.52344 -4.47656,10 -10,10c-5.52344,0 -10,-4.47656 -10,-10c0,-5.52344 4.47656,-10 10,-10zM12,5.8125c-0.18359,0 -0.33594,-0.00391 -0.5,0.03125c-0.16406,0.03516 -0.31641,0.125 -0.4375,0.21875c-0.12109,0.09375 -0.21094,0.22266 -0.28125,0.375c-0.07031,0.15234 -0.09375,0.33203 -0.09375,0.5625c0,0.22656 0.02344,0.40625 0.09375,0.5625c0.07031,0.15625 0.16016,0.28125 0.28125,0.375c0.12109,0.09375 0.27344,0.14844 0.4375,0.1875c0.16406,0.03906 0.31641,0.0625 0.5,0.0625c0.17969,0 0.37109,-0.02344 0.53125,-0.0625c0.16016,-0.03906 0.28516,-0.09375 0.40625,-0.1875c0.12109,-0.09375 0.21094,-0.21875 0.28125,-0.375c0.07031,-0.15234 0.125,-0.33594 0.125,-0.5625c0,-0.23047 -0.05469,-0.41016 -0.125,-0.5625c-0.07031,-0.15234 -0.16016,-0.28125 -0.28125,-0.375c-0.12109,-0.09375 -0.24609,-0.18359 -0.40625,-0.21875c-0.16016,-0.03516 -0.35156,-0.03125 -0.53125,-0.03125zM10.78125,9.15625v8.96875h2.4375v-8.96875z"></path></g></g></svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="8" viewBox="0 0 14 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0.625 7.37493L6.695 1.30493L12.765 7.37493" stroke="#A6ADB9" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,7 @@
1
+ export const GlobalImage = {
2
+ //Placeholders
3
+ profilePlaceholder: require('./placeholder/profile.png'),
4
+
5
+ //Icon Images
6
+ back: require('./back.png'),
7
+ };