@propel-nsl/propel-react-native-sdk 1.0.0
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/assets/fonts/Lexend-Black.ttf +0 -0
- package/assets/fonts/Lexend-Bold.ttf +0 -0
- package/assets/fonts/Lexend-ExtraBold.ttf +0 -0
- package/assets/fonts/Lexend-ExtraLight.ttf +0 -0
- package/assets/fonts/Lexend-Light.ttf +0 -0
- package/assets/fonts/Lexend-Medium.ttf +0 -0
- package/assets/fonts/Lexend-Regular.ttf +0 -0
- package/assets/fonts/Lexend-SemiBold.ttf +0 -0
- package/assets/fonts/Lexend-Thin.ttf +0 -0
- package/assets/images/HomeGoods.png +0 -0
- package/assets/images/accessories.png +0 -0
- package/assets/images/amazon.png +0 -0
- package/assets/images/apnaClubLogo.png +0 -0
- package/assets/images/apparel.png +0 -0
- package/assets/images/backgroundblue.png +0 -0
- package/assets/images/bannerCard.png +0 -0
- package/assets/images/bottomWave.png +0 -0
- package/assets/images/coin_1_1.png +0 -0
- package/assets/images/flipkart.png +0 -0
- package/assets/images/frame_1171278967.png +0 -0
- package/assets/images/gift.png +0 -0
- package/assets/images/herobanner.png +0 -0
- package/assets/images/hinduPencilsLogo.png +0 -0
- package/assets/images/icons/addwhiteicon.png +0 -0
- package/assets/images/icons/arrow-back.png +0 -0
- package/assets/images/icons/arrowgreen.png +0 -0
- package/assets/images/icons/arrowred.png +0 -0
- package/assets/images/icons/arrowright.png +0 -0
- package/assets/images/icons/arrowup.png +0 -0
- package/assets/images/icons/blackarrowdown.png +0 -0
- package/assets/images/icons/blackarrowup.png +0 -0
- package/assets/images/icons/blackcross.png +0 -0
- package/assets/images/icons/call.png +0 -0
- package/assets/images/icons/camera.png +0 -0
- package/assets/images/icons/cart.png +0 -0
- package/assets/images/icons/chat.png +0 -0
- package/assets/images/icons/circleblack.png +0 -0
- package/assets/images/icons/copy.png +0 -0
- package/assets/images/icons/cross.png +0 -0
- package/assets/images/icons/delete.png +0 -0
- package/assets/images/icons/delivery.png +0 -0
- package/assets/images/icons/eVoucher.png +0 -0
- package/assets/images/icons/editIcon.png +0 -0
- package/assets/images/icons/email.png +0 -0
- package/assets/images/icons/eye.png +0 -0
- package/assets/images/icons/faq.png +0 -0
- package/assets/images/icons/filtericon.png +0 -0
- package/assets/images/icons/greyDownArrow.png +0 -0
- package/assets/images/icons/help.png +0 -0
- package/assets/images/icons/home.png +0 -0
- package/assets/images/icons/homeinactive.png +0 -0
- package/assets/images/icons/i_blackicon.png +0 -0
- package/assets/images/icons/i_icon.png +0 -0
- package/assets/images/icons/location.png +0 -0
- package/assets/images/icons/logout.png +0 -0
- package/assets/images/icons/minus.png +0 -0
- package/assets/images/icons/myOrders.png +0 -0
- package/assets/images/icons/orders.png +0 -0
- package/assets/images/icons/pencillogo.png +0 -0
- package/assets/images/icons/pending.png +0 -0
- package/assets/images/icons/plus.png +0 -0
- package/assets/images/icons/redCross.png +0 -0
- package/assets/images/icons/redCrossicon.png +0 -0
- package/assets/images/icons/redWarningicon.png +0 -0
- package/assets/images/icons/redeem.png +0 -0
- package/assets/images/icons/redeemactive.png +0 -0
- package/assets/images/icons/redemptionHistory.png +0 -0
- package/assets/images/icons/redhelpicon.png +0 -0
- package/assets/images/icons/search.png +0 -0
- package/assets/images/icons/stopwatch.png +0 -0
- package/assets/images/icons/successTick.gif +0 -0
- package/assets/images/icons/tick.png +0 -0
- package/assets/images/icons/tnc.png +0 -0
- package/assets/images/icons/user.png +0 -0
- package/assets/images/icons/userredicon.png +0 -0
- package/assets/images/icons/wavecorner.png +0 -0
- package/assets/images/logo.png +0 -0
- package/assets/images/myntra_copy.png +0 -0
- package/assets/images/nike.png +0 -0
- package/assets/images/oq3p0u0_1.png +0 -0
- package/assets/images/profileicon.png +0 -0
- package/assets/images/topWave.png +0 -0
- package/assets/images/zagglePropelLogo.png +0 -0
- package/index.ts +23 -0
- package/lib/index.ts +25 -0
- package/package.json +70 -0
- package/src/PropelSDKScreen.tsx +98 -0
- package/src/SDKApp.tsx +540 -0
- package/src/bridge/SDKBridge.ts +104 -0
- package/src/bridge/index.ts +3 -0
- package/src/components/SDKBackHandler.tsx +187 -0
- package/src/components/SDKProfile.tsx +87 -0
- package/src/components/SDKProfileWrapper.tsx +51 -0
- package/src/constants.ts +10 -0
- package/src/contexts/SDKContext.tsx +72 -0
- package/src/hooks/useSDKBackNavigation.ts +61 -0
- package/src/navigation/SDKMainTabNavigator.tsx +315 -0
- package/src/navigation/SDKNavigator.tsx +41 -0
- package/src/redux/store.ts +32 -0
- package/src/screens/Dashboard/index.tsx +531 -0
- package/src/screens/Dashboard/styles.ts +512 -0
- package/src/screens/DeliveryAddress/index.tsx +221 -0
- package/src/screens/DeliveryAddress/styles.ts +122 -0
- package/src/screens/E-Vouchers/index.tsx +157 -0
- package/src/screens/E-Vouchers/styles.ts +106 -0
- package/src/screens/Faq/Faq.constants.ts +164 -0
- package/src/screens/Faq/index.tsx +114 -0
- package/src/screens/Faq/styles.ts +131 -0
- package/src/screens/Help/index.tsx +128 -0
- package/src/screens/Help/styles.ts +121 -0
- package/src/screens/Login/index.tsx +215 -0
- package/src/screens/Login/styles.ts +134 -0
- package/src/screens/MyCart/MyCart.constants.ts +13 -0
- package/src/screens/MyCart/index.tsx +318 -0
- package/src/screens/MyCart/styles.ts +249 -0
- package/src/screens/MyOrders/index.tsx +87 -0
- package/src/screens/MyOrders/styles.ts +281 -0
- package/src/screens/MyProfile/index.tsx +72 -0
- package/src/screens/MyProfile/styles.ts +47 -0
- package/src/screens/NewDeliveryAddress/index.tsx +360 -0
- package/src/screens/NewDeliveryAddress/styles.ts +68 -0
- package/src/screens/Onboarding/index.tsx +57 -0
- package/src/screens/Onboarding/styles.ts +60 -0
- package/src/screens/OrdersDetails/index.tsx +333 -0
- package/src/screens/OrdersDetails/styles.ts +262 -0
- package/src/screens/OtpVerification/index.tsx +283 -0
- package/src/screens/OtpVerification/styles.ts +197 -0
- package/src/screens/PaymentMethod/index.tsx +389 -0
- package/src/screens/PaymentMethod/styles.ts +246 -0
- package/src/screens/PointsLog/index.tsx +286 -0
- package/src/screens/PointsLog/styles.ts +156 -0
- package/src/screens/ProductDetails/index.tsx +682 -0
- package/src/screens/ProductDetails/styles.ts +372 -0
- package/src/screens/Profile/index.tsx +368 -0
- package/src/screens/Profile/styles.ts +158 -0
- package/src/screens/RedemptionHistory/RedemptionHistory.constants.ts +4 -0
- package/src/screens/RedemptionHistory/index.tsx +304 -0
- package/src/screens/RedemptionHistory/styles.ts +84 -0
- package/src/screens/Reedem/index.tsx +345 -0
- package/src/screens/Reedem/styles.ts +269 -0
- package/src/screens/TnC/TnC.constants.ts +169 -0
- package/src/screens/TnC/index.tsx +83 -0
- package/src/screens/TnC/styles.ts +88 -0
- package/src/screens/TransactionSuccessful/index.tsx +77 -0
- package/src/screens/TransactionSuccessful/styles.ts +77 -0
- package/src/screens/Verification/index.tsx +58 -0
- package/src/screens/Verification/styles.ts +74 -0
- package/src/screens/index.ts +23 -0
- package/src/types/index.ts +46 -0
- package/src-app/components/AmountBreakDownModal/index.tsx +86 -0
- package/src-app/components/AmountBreakDownModal/styles.ts +110 -0
- package/src-app/components/BottomNavIcons.tsx +125 -0
- package/src-app/components/Button.tsx +120 -0
- package/src-app/components/Card.tsx +47 -0
- package/src-app/components/ConfirmPopup/ConfirmPopup.constants.ts +25 -0
- package/src-app/components/ConfirmPopup/index.tsx +48 -0
- package/src-app/components/ConfirmPopup/styles.ts +167 -0
- package/src-app/components/CustomButton/index.tsx +67 -0
- package/src-app/components/CustomButton/styles.ts +44 -0
- package/src-app/components/CustomCard/index.tsx +221 -0
- package/src-app/components/CustomCard/styles.ts +184 -0
- package/src-app/components/CustomError/index.tsx +54 -0
- package/src-app/components/CustomError/styles.ts +41 -0
- package/src-app/components/CustomImage/index.tsx +37 -0
- package/src-app/components/CustomImage/styles.ts +5 -0
- package/src-app/components/CustomLoader/index.tsx +45 -0
- package/src-app/components/CustomLoader/styles.ts +35 -0
- package/src-app/components/CustomMessagePopUp/index.tsx +51 -0
- package/src-app/components/CustomMessagePopUp/styles.ts +74 -0
- package/src-app/components/CustomProductCard/index.tsx +13 -0
- package/src-app/components/CustomProductCard/styles.ts +5 -0
- package/src-app/components/FilterModal.tsx +372 -0
- package/src-app/components/Footer/index.tsx +23 -0
- package/src-app/components/Footer/styles.ts +37 -0
- package/src-app/components/Icon.tsx +80 -0
- package/src-app/components/Logout/index.tsx +82 -0
- package/src-app/components/Logout/styles.ts +116 -0
- package/src-app/components/MobileHeader.tsx +141 -0
- package/src-app/components/NoDataFound/index.tsx +18 -0
- package/src-app/components/NoDataFound/styles.ts +26 -0
- package/src-app/components/OTPModal.tsx +747 -0
- package/src-app/components/ProfileField.tsx +47 -0
- package/src-app/components/QuantityModal/index.tsx +113 -0
- package/src-app/components/QuantityModal/styles.ts +84 -0
- package/src-app/components/TabBarIcons.tsx +110 -0
- package/src-app/components/TextInput.tsx +79 -0
- package/src-app/components/ToastConfig.tsx +60 -0
- package/src-app/components/index.ts +18 -0
- package/src-app/config/env.ts +22 -0
- package/src-app/constants/Fonts.ts +12 -0
- package/src-app/constants/Formatter.ts +39 -0
- package/src-app/constants/HtmlSanitization.ts +46 -0
- package/src-app/constants/Images.ts +81 -0
- package/src-app/constants/Labels.ts +8 -0
- package/src-app/constants/Messages.ts +108 -0
- package/src-app/constants/Routes.ts +17 -0
- package/src-app/constants/Scaling.ts +5 -0
- package/src-app/constants/Text.ts +8 -0
- package/src-app/constants/offSets.ts +18 -0
- package/src-app/hooks/useAppDispatch.ts +4 -0
- package/src-app/hooks/useAppSelector.ts +4 -0
- package/src-app/hooks/useBackHandler.ts +47 -0
- package/src-app/hooks/useScreenBackHandler.ts +91 -0
- package/src-app/navigation/AppNavigator.tsx +34 -0
- package/src-app/navigation/MainTabNavigator.tsx +294 -0
- package/src-app/redux/authSaga.ts +605 -0
- package/src-app/redux/authSlice.ts +754 -0
- package/src-app/redux/rootSaga.ts +6 -0
- package/src-app/redux/store.ts +25 -0
- package/src-app/services/api.ts +14 -0
- package/src-app/services/endpoints.ts +33 -0
- package/src-app/services/index.ts +574 -0
- package/src-app/services/sdkCredentials.ts +44 -0
- package/src-app/styles/colors.ts +85 -0
- package/src-app/styles/shared.ts +112 -0
- package/src-app/types/authTypes.ts +155 -0
- package/src-app/types/navigation.ts +99 -0
- package/src-app/utils/Validation.ts +48 -0
- package/src-app/utils/filterPins.ts +29 -0
- package/src-app/utils/navigationUtils.ts +43 -0
- package/src-app/utils/useHardwareBack.ts +21 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
Text,
|
|
5
|
+
ScrollView,
|
|
6
|
+
TouchableOpacity,
|
|
7
|
+
SafeAreaView,
|
|
8
|
+
Dimensions,
|
|
9
|
+
TextInput,
|
|
10
|
+
} from 'react-native';
|
|
11
|
+
import Svg, { Path, G, Defs, ClipPath, Rect } from 'react-native-svg';
|
|
12
|
+
import { useFocusEffect, useNavigation } from '@react-navigation/native';
|
|
13
|
+
import { AppStackParamList, ProductData } from '../../../src-app/types/navigation';
|
|
14
|
+
import styles from './styles';
|
|
15
|
+
import { StackNavigationProp } from '@react-navigation/stack';
|
|
16
|
+
import { useAppDispatch } from '../../../src-app/hooks/useAppDispatch';
|
|
17
|
+
import {
|
|
18
|
+
myProductsListRequest,
|
|
19
|
+
productTypesRequest,
|
|
20
|
+
resetAuthState,
|
|
21
|
+
} from '../../../src-app/redux/authSlice';
|
|
22
|
+
import { useAppSelector } from '../../../src-app/hooks/useAppSelector';
|
|
23
|
+
import { RootState } from '../../../src-app/redux/store';
|
|
24
|
+
import {
|
|
25
|
+
CustomImage,
|
|
26
|
+
CustomLoader,
|
|
27
|
+
CustomMessagePopUp,
|
|
28
|
+
FilterModal,
|
|
29
|
+
NoDataFound,
|
|
30
|
+
} from '../../../src-app/components';
|
|
31
|
+
import Images from '../../../src-app/constants/Images';
|
|
32
|
+
import { colors } from '../../../src-app/styles/colors';
|
|
33
|
+
import { CATEGORY_LABELS } from '../../../src-app/constants/Labels';
|
|
34
|
+
import { formatPointsRange } from '../../../src-app/constants/Formatter';
|
|
35
|
+
import { NUMBER } from '../../../src-app/constants/Messages';
|
|
36
|
+
import { MAP, PUSH, REDUCE } from '../../../src-app/utils/filterPins';
|
|
37
|
+
import { ROUTES } from '../../../src-app/constants/Routes';
|
|
38
|
+
|
|
39
|
+
const AmbraneIcon: React.FC = () => (
|
|
40
|
+
<Svg width="45" height="6" viewBox="0 0 46 6" fill="none">
|
|
41
|
+
<G clipPath="url(#clip0_244_4835)">
|
|
42
|
+
<Path
|
|
43
|
+
d="M13.07 1.7372C12.6479 1.40724 12.1502 1.23657 11.5848 1.23657C11.0194 1.23657 10.3704 1.46034 9.90857 1.90029C9.44671 2.34024 9.21179 2.8788 9.21179 3.50079C9.21179 4.12279 9.44671 4.65756 9.90857 5.09751C10.3704 5.53746 10.9358 5.76122 11.5848 5.76122C12.2338 5.76122 12.6479 5.59435 13.07 5.26059V5.76122H13.9579V1.24037H13.07V1.7372ZM12.636 2.49953C12.9226 2.7726 13.07 3.11015 13.07 3.50079C13.07 3.89144 12.9226 4.22519 12.636 4.50206C12.3493 4.77513 11.9949 4.91546 11.5848 4.91546C11.1747 4.91546 10.8243 4.77513 10.5337 4.50206C10.247 4.22519 10.0997 3.88765 10.0997 3.50079C10.0997 3.11394 10.247 2.7726 10.5337 2.49953C10.8243 2.22646 11.1787 2.08613 11.5848 2.08613C11.9909 2.08613 12.3453 2.22646 12.636 2.49953Z"
|
|
44
|
+
fill="#FF5206"
|
|
45
|
+
/>
|
|
46
|
+
<Path
|
|
47
|
+
d="M19.5122 1.24023C18.9309 1.24023 18.4451 1.45642 18.0669 1.88878C17.6926 1.45642 17.2069 1.24023 16.6176 1.24023C16.0283 1.24023 15.9089 1.33505 15.6142 1.52089V1.24023H14.7263V5.76109H15.6142V3.04175C15.6142 2.77626 15.7098 2.55629 15.9049 2.36666C16.104 2.17702 16.3389 2.086 16.6176 2.086C16.8963 2.086 17.1312 2.17702 17.3263 2.37045C17.5254 2.55629 17.6209 2.77626 17.6209 3.04554V5.76489H18.5049V3.04175C18.5049 2.77626 18.6004 2.55629 18.7955 2.36666C18.9946 2.17702 19.2295 2.086 19.5082 2.086C19.7869 2.086 20.0218 2.17702 20.2169 2.37045C20.416 2.55629 20.5116 2.77626 20.5116 3.04554V5.76489H21.3995V3.04175C21.3995 2.54491 21.2123 2.11634 20.846 1.76742C20.4837 1.41849 20.0338 1.24023 19.5122 1.24023Z"
|
|
48
|
+
fill="#FF5206"
|
|
49
|
+
/>
|
|
50
|
+
<Path
|
|
51
|
+
d="M24.4891 1.24032C23.9237 1.24032 23.426 1.40719 23.004 1.74095V0.00390625H22.1161V5.76117H23.004V5.26054C23.426 5.59051 23.9237 5.76117 24.4891 5.76117C25.0545 5.76117 25.7035 5.53741 26.1654 5.09746C26.6272 4.65751 26.8621 4.11895 26.8621 3.50075C26.8621 2.88254 26.6272 2.34019 26.1654 1.90024C25.6995 1.46029 25.1381 1.24032 24.4891 1.24032ZM25.9743 3.50075C25.9743 3.8876 25.8269 4.22514 25.5363 4.50201C25.2496 4.77508 24.8952 4.91541 24.4891 4.91541C24.083 4.91541 23.7247 4.77508 23.438 4.50201C23.1513 4.22514 23.004 3.8876 23.004 3.50075C23.004 3.11389 23.1513 2.77255 23.438 2.49948C23.7247 2.22641 24.079 2.08608 24.4891 2.08608C24.8992 2.08608 25.2496 2.22641 25.5363 2.49948C25.8269 2.77255 25.9743 3.1101 25.9743 3.50075Z"
|
|
52
|
+
fill="#FF5206"
|
|
53
|
+
/>
|
|
54
|
+
<Path
|
|
55
|
+
d="M29.936 1.24023H29.8125C29.2471 1.24023 28.7494 1.40711 28.3274 1.74087V1.24023H27.4435V5.76489H28.3274V3.50066C28.3274 3.11381 28.4747 2.77626 28.7614 2.50319C29.052 2.22633 29.4064 2.086 29.8125 2.086H29.936V1.24023Z"
|
|
56
|
+
fill="#FF5206"
|
|
57
|
+
/>
|
|
58
|
+
<Path
|
|
59
|
+
d="M33.7623 1.7372C33.3403 1.40724 32.8426 1.23657 32.2772 1.23657C31.7118 1.23657 31.0628 1.46034 30.601 1.90029C30.1391 2.34024 29.9042 2.8788 29.9042 3.50079C29.9042 4.12279 30.1391 4.65756 30.601 5.09751C31.0628 5.53746 31.6282 5.76122 32.2772 5.76122C32.9262 5.76122 33.3403 5.59435 33.7623 5.26059V5.76122H34.6502V1.24037H33.7623V1.7372ZM33.3283 2.49953C33.615 2.7726 33.7623 3.11015 33.7623 3.50079C33.7623 3.89144 33.615 4.22519 33.3283 4.50206C33.0417 4.77513 32.6873 4.91546 32.2772 4.91546C31.8671 4.91546 31.5167 4.77513 31.2261 4.50206C30.9394 4.22519 30.7921 3.88765 30.7921 3.50079C30.7921 3.11394 30.9394 2.7726 31.2261 2.49953C31.5167 2.22646 31.8711 2.08613 32.2772 2.08613C32.6833 2.08613 33.0417 2.22646 33.3283 2.49953Z"
|
|
60
|
+
fill="#FF5206"
|
|
61
|
+
/>
|
|
62
|
+
<Path
|
|
63
|
+
d="M37.7599 1.24027C37.1945 1.24027 36.6968 1.40715 36.2747 1.7409V1.2251H35.3868V5.76492H36.2747V3.5007C36.2747 3.11005 36.4221 2.77251 36.7087 2.49943C36.9994 2.22636 37.3537 2.08603 37.7599 2.08603C38.166 2.08603 38.5204 2.22636 38.807 2.49943C39.0977 2.77251 39.245 3.11005 39.245 3.5007V5.76113H40.1329V3.5007C40.1329 2.8787 39.898 2.34014 39.4361 1.90019C38.9743 1.46024 38.4089 1.24027 37.7599 1.24027Z"
|
|
64
|
+
fill="#FF5206"
|
|
65
|
+
/>
|
|
66
|
+
<Path
|
|
67
|
+
d="M44.8033 1.90395C44.3414 1.464 43.7761 1.24023 43.1231 1.24023C42.4701 1.24023 41.9087 1.464 41.4468 1.90395C40.9889 2.3439 40.754 2.88246 40.754 3.50066C40.754 4.11887 40.9889 4.65743 41.4508 5.09738C41.9127 5.53733 42.4781 5.76109 43.1271 5.76109C43.7761 5.76109 44.7277 5.36286 45.2015 4.57778H44.0906C43.8238 4.80534 43.5013 4.91912 43.1271 4.91912C42.7528 4.91912 42.4582 4.81293 42.1874 4.60433C41.9565 4.41849 41.7972 4.19472 41.7096 3.92544H45.4324L45.4603 3.8458C45.4682 3.82304 45.4682 3.80408 45.4722 3.78891C45.4921 3.70168 45.5001 3.60307 45.5001 3.50066C45.5001 2.88246 45.2652 2.3439 44.8033 1.90395ZM41.7136 3.07589C41.8012 2.8104 41.9605 2.58663 42.1874 2.40458C42.4542 2.19219 42.7727 2.08221 43.1271 2.08221C43.4814 2.08221 43.8039 2.1884 44.0667 2.40458C44.2976 2.58284 44.4569 2.80661 44.5445 3.07589H41.7136Z"
|
|
68
|
+
fill="#FF5206"
|
|
69
|
+
/>
|
|
70
|
+
<Path
|
|
71
|
+
d="M5.07485 0.743363C4.88374 0.307206 4.42984 0 3.90427 0C3.37869 0 2.87303 0.345133 2.7058 0.823009C2.61025 1.05057 2.59034 1.31226 2.65803 1.61188C2.87303 2.56764 2.55052 3.14033 1.63874 3.53856C1.54716 3.58028 1.45558 3.61821 1.36002 3.64475H1.35604C1.08131 3.73957 0.850381 3.91403 0.69908 4.14159C0.57565 4.32743 0.5 4.5512 0.5 4.78635C0.5 5.15044 0.667227 5.47661 0.933994 5.69659C1.15696 5.88243 1.44762 5.99241 1.76615 5.99241C2.43506 5.99241 2.98452 5.49558 3.02831 4.86979C3.02831 4.84324 3.02831 4.81669 3.02831 4.79014V4.75601C3.02831 4.54741 2.99646 4.33881 2.9885 4.13022C2.96063 3.24273 3.2473 2.84071 4.07149 2.4842C4.21881 2.41972 4.36613 2.34766 4.50549 2.26043C4.66077 2.18078 4.79614 2.067 4.90365 1.93426C5.06689 1.73325 5.16245 1.47914 5.16245 1.20228C5.16245 0.925411 5.12662 0.883692 5.06689 0.743363H5.07485Z"
|
|
72
|
+
fill="#FF5206"
|
|
73
|
+
/>
|
|
74
|
+
<Path
|
|
75
|
+
d="M6.04239 6.00003C6.74167 6.00003 7.30854 5.46005 7.30854 4.79396C7.30854 4.12787 6.74167 3.58789 6.04239 3.58789C5.34312 3.58789 4.77625 4.12787 4.77625 4.79396C4.77625 5.46005 5.34312 6.00003 6.04239 6.00003Z"
|
|
76
|
+
fill="#FF5206"
|
|
77
|
+
/>
|
|
78
|
+
</G>
|
|
79
|
+
<Defs>
|
|
80
|
+
<ClipPath id="clip0_244_4835">
|
|
81
|
+
<Rect width="45" height="6" fill="white" transform="translate(0.5)" />
|
|
82
|
+
</ClipPath>
|
|
83
|
+
</Defs>
|
|
84
|
+
</Svg>
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
const TitanLogo: React.FC = () => (
|
|
88
|
+
<Svg width="22" height="14" viewBox="0 0 22 14" fill="none">
|
|
89
|
+
<Path
|
|
90
|
+
d="M7.33203 2.98438H9.82812V13H12.8496V2.98438H15.3457V0.351562H7.33203V2.98438ZM17.1348 13H20.1562V0.351562H17.1348V13Z"
|
|
91
|
+
fill="#000000"
|
|
92
|
+
/>
|
|
93
|
+
</Svg>
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
const RayBanLogo: React.FC = () => (
|
|
97
|
+
<Svg width="21" height="11" viewBox="0 0 21 11" fill="none">
|
|
98
|
+
<Path
|
|
99
|
+
d="M3.5 0.5H17.5C18.8807 0.5 20 1.61929 20 3V8C20 9.38071 18.8807 10.5 17.5 10.5H3.5C2.11929 10.5 1 9.38071 1 8V3C1 1.61929 2.11929 0.5 3.5 0.5Z"
|
|
100
|
+
stroke="#000000"
|
|
101
|
+
strokeWidth="1"
|
|
102
|
+
/>
|
|
103
|
+
<Path
|
|
104
|
+
d="M7 3C7 2.44772 7.44772 2 8 2H13C13.5523 2 14 2.44772 14 3V8C14 8.55228 13.5523 9 13 9H8C7.44772 9 7 8.55228 7 8V3Z"
|
|
105
|
+
fill="#000000"
|
|
106
|
+
/>
|
|
107
|
+
</Svg>
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
const getCategoryLabel = (category: string) => CATEGORY_LABELS[category] ?? "";
|
|
111
|
+
|
|
112
|
+
const ProductCard: React.FC<{
|
|
113
|
+
title: string;
|
|
114
|
+
imageUrl: string;
|
|
115
|
+
category: string;
|
|
116
|
+
logo?: React.ReactNode;
|
|
117
|
+
backgroundColor?: string;
|
|
118
|
+
onPress: () => void;
|
|
119
|
+
priceCents: number
|
|
120
|
+
}> = ({
|
|
121
|
+
title,
|
|
122
|
+
imageUrl,
|
|
123
|
+
category,
|
|
124
|
+
logo,
|
|
125
|
+
backgroundColor = colors.orderDetailsBackground,
|
|
126
|
+
onPress,
|
|
127
|
+
priceCents=0,
|
|
128
|
+
}) => (
|
|
129
|
+
<TouchableOpacity style={styles.productCard} onPress={onPress}>
|
|
130
|
+
<View style={[styles.productImageContainer, { backgroundColor }]}>
|
|
131
|
+
{logo && <View style={styles.logoContainer}>{logo}</View>}
|
|
132
|
+
<CustomImage source={{ uri: imageUrl }} imgStyle={styles.productImage} />
|
|
133
|
+
<View style={styles.categoryBadge}>
|
|
134
|
+
<Text style={styles.categoryText}>{getCategoryLabel(category)}</Text>
|
|
135
|
+
</View>
|
|
136
|
+
</View>
|
|
137
|
+
<View style={styles.productInfo}>
|
|
138
|
+
<Text style={styles.productTitle}>{title}</Text>
|
|
139
|
+
<Text style={styles.productPoints}>
|
|
140
|
+
{((priceCents ?? 0) / 100)} Points
|
|
141
|
+
</Text>
|
|
142
|
+
|
|
143
|
+
</View>
|
|
144
|
+
</TouchableOpacity>
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
const Redeem: React.FC = () => {
|
|
148
|
+
type ProductDetailNavigationProp = StackNavigationProp<
|
|
149
|
+
AppStackParamList,
|
|
150
|
+
'ProductDetail'
|
|
151
|
+
>;
|
|
152
|
+
|
|
153
|
+
const navigation = useNavigation<ProductDetailNavigationProp>();
|
|
154
|
+
const dispatch = useAppDispatch();
|
|
155
|
+
const [isFilterModalVisible, setIsFilterModalVisible] = useState(false);
|
|
156
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
157
|
+
const [messagepopUpVisible, setMessagepopUpVisible] = useState(false);
|
|
158
|
+
const DEFAULT_FILTERS = { productType: 'Physical Voucher', categories: [] as string[] };
|
|
159
|
+
const [selectedFilters, setSelectedFilters] = useState(DEFAULT_FILTERS);
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
const { myProductsListError, viewMyCartData } = useAppSelector(
|
|
163
|
+
(state: RootState) => state.auth,
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
const screenWidth = Dimensions.get('window').width;
|
|
167
|
+
const cardWidth = (screenWidth - 60) / 2;
|
|
168
|
+
|
|
169
|
+
const handleProductPress = (product: ProductData) => {
|
|
170
|
+
console.log('🚀 Redeem navigating to ProductDetail with id:', product?.id);
|
|
171
|
+
// In SDK, ProductDetail is a hidden tab, not nested inside DashboardTab
|
|
172
|
+
// Navigate directly to the ProductDetail tab
|
|
173
|
+
navigation.navigate(ROUTES.ProductDetail as any, {
|
|
174
|
+
id: product?.id,
|
|
175
|
+
from: ROUTES.REDEEM
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
const { productTypesData, myProductsListLoading } = useAppSelector(
|
|
180
|
+
(state: RootState) => state.auth,
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
useFocusEffect(
|
|
184
|
+
useCallback(() => {
|
|
185
|
+
console.log('🏪 Redeem Screen: useFocusEffect triggered - refreshing data');
|
|
186
|
+
setSelectedFilters(DEFAULT_FILTERS);
|
|
187
|
+
setSearchQuery('');
|
|
188
|
+
dispatch(myProductsListRequest({}));
|
|
189
|
+
}, [dispatch])
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
useEffect(() => {
|
|
193
|
+
dispatch(productTypesRequest({}));
|
|
194
|
+
}, [dispatch])
|
|
195
|
+
|
|
196
|
+
const { myProductsListData } = useAppSelector(
|
|
197
|
+
(state: RootState) => state.auth,
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
const handleSearch = (text: string) => {
|
|
201
|
+
console.log('🔍 Redeem Screen: Search triggered with text:', text);
|
|
202
|
+
setSearchQuery(text);
|
|
203
|
+
if (text.length >= 3) {
|
|
204
|
+
console.log('🔍 Redeem Screen: Dispatching search request with name:', text);
|
|
205
|
+
dispatch(myProductsListRequest({ name: text }));
|
|
206
|
+
}
|
|
207
|
+
if (text.length === 0) {
|
|
208
|
+
console.log('🔍 Redeem Screen: Dispatching clear search request');
|
|
209
|
+
dispatch(myProductsListRequest({}));
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
const navigateToCart = () => {
|
|
214
|
+
// In SDK, MyCart is a hidden tab screen, navigate directly to it
|
|
215
|
+
navigation.navigate(ROUTES.MyCart as any, { from: ROUTES.REDEEM });
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
return (
|
|
219
|
+
<SafeAreaView style={styles.container}>
|
|
220
|
+
<View style={styles.headerContent}>
|
|
221
|
+
<Text style={styles.headerTitle}>{ROUTES.REDEEM}</Text>
|
|
222
|
+
<TouchableOpacity
|
|
223
|
+
activeOpacity={0.7}
|
|
224
|
+
style={styles.cartBadge}
|
|
225
|
+
onPress={navigateToCart}
|
|
226
|
+
>
|
|
227
|
+
<View style={styles.cartCountContainer}>
|
|
228
|
+
<Text style={styles.cartCountText}>
|
|
229
|
+
{viewMyCartData?.items?.length}
|
|
230
|
+
</Text>
|
|
231
|
+
</View>
|
|
232
|
+
<CustomImage source={Images.cart} imgStyle={styles.cartIcon} />
|
|
233
|
+
</TouchableOpacity>
|
|
234
|
+
</View>
|
|
235
|
+
<View style={styles.searchSection}>
|
|
236
|
+
<View style={styles.searchBar}>
|
|
237
|
+
<View style={styles.searchContainer}>
|
|
238
|
+
<CustomImage source={Images.search} imgStyle={styles.searchIcon} />
|
|
239
|
+
<TextInput
|
|
240
|
+
value={searchQuery}
|
|
241
|
+
onChangeText={handleSearch}
|
|
242
|
+
placeholder="Search"
|
|
243
|
+
placeholderTextColor={colors.onSurfaceVariant}
|
|
244
|
+
style={styles.searchPlaceholder}
|
|
245
|
+
/>
|
|
246
|
+
</View>
|
|
247
|
+
<TouchableOpacity
|
|
248
|
+
activeOpacity={0.7}
|
|
249
|
+
style={styles.filterButton}
|
|
250
|
+
onPress={() => {
|
|
251
|
+
setIsFilterModalVisible(true);
|
|
252
|
+
}}
|
|
253
|
+
>
|
|
254
|
+
<CustomImage
|
|
255
|
+
source={Images.filtericon}
|
|
256
|
+
imgStyle={styles.filterIcon}
|
|
257
|
+
/>
|
|
258
|
+
</TouchableOpacity>
|
|
259
|
+
</View>
|
|
260
|
+
</View>
|
|
261
|
+
|
|
262
|
+
{myProductsListLoading ? (
|
|
263
|
+
<CustomLoader loading={myProductsListLoading} />
|
|
264
|
+
) : (
|
|
265
|
+
<ScrollView
|
|
266
|
+
style={styles.scrollContainer}
|
|
267
|
+
showsVerticalScrollIndicator={false}
|
|
268
|
+
>
|
|
269
|
+
{Array.isArray(myProductsListData) &&
|
|
270
|
+
myProductsListData?.length > 0 ? (
|
|
271
|
+
<View style={styles.productsGrid}>
|
|
272
|
+
{myProductsListData
|
|
273
|
+
?.[REDUCE]((rows: any[], product, index) => {
|
|
274
|
+
if (index % 2 === 0) {
|
|
275
|
+
rows?.[PUSH]([product]);
|
|
276
|
+
} else {
|
|
277
|
+
rows?.[rows.length - 1]?.[PUSH](product);
|
|
278
|
+
}
|
|
279
|
+
return rows;
|
|
280
|
+
}, [])
|
|
281
|
+
?.[MAP]((row: any[], rowIndex: number) => (
|
|
282
|
+
<View key={rowIndex} style={styles.productRow}>
|
|
283
|
+
{row?.[MAP]((product, productIndex) => (
|
|
284
|
+
<ProductCard
|
|
285
|
+
key={`${rowIndex}-${productIndex}`}
|
|
286
|
+
title={product?.name}
|
|
287
|
+
priceCents={product?.price?.price_cents} imageUrl={product?.image?.url}
|
|
288
|
+
category={product?.product_type}
|
|
289
|
+
logo={
|
|
290
|
+
product?.logo === 'titan' ? (
|
|
291
|
+
<TitanLogo />
|
|
292
|
+
) : product?.logo === 'ambrane' ? (
|
|
293
|
+
<AmbraneIcon />
|
|
294
|
+
) : product?.logo === 'rayban' ? (
|
|
295
|
+
<RayBanLogo />
|
|
296
|
+
) : undefined
|
|
297
|
+
}
|
|
298
|
+
backgroundColor={product?.backgroundColor}
|
|
299
|
+
onPress={() => handleProductPress(product)}
|
|
300
|
+
/>
|
|
301
|
+
))}
|
|
302
|
+
{row?.length === 1 && <View style={{ width: cardWidth }} />}
|
|
303
|
+
</View>
|
|
304
|
+
))}
|
|
305
|
+
</View>
|
|
306
|
+
) : (
|
|
307
|
+
<NoDataFound containerstyle={styles.nodataFound} />
|
|
308
|
+
)}
|
|
309
|
+
</ScrollView>
|
|
310
|
+
)}
|
|
311
|
+
|
|
312
|
+
<FilterModal
|
|
313
|
+
key={`${selectedFilters.productType}|${[...selectedFilters.categories].sort().join(',')}`}
|
|
314
|
+
visible={isFilterModalVisible}
|
|
315
|
+
data={productTypesData}
|
|
316
|
+
initialFilters={selectedFilters}
|
|
317
|
+
onClose={() => setIsFilterModalVisible(false)}
|
|
318
|
+
onApply={(filters) => {
|
|
319
|
+
setSelectedFilters(filters);
|
|
320
|
+
setIsFilterModalVisible(false);
|
|
321
|
+
}}
|
|
322
|
+
onClear={() => {
|
|
323
|
+
setSelectedFilters(DEFAULT_FILTERS);
|
|
324
|
+
setIsFilterModalVisible(false);
|
|
325
|
+
dispatch(myProductsListRequest({}));
|
|
326
|
+
}}
|
|
327
|
+
/>
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
<CustomMessagePopUp
|
|
332
|
+
title="Error"
|
|
333
|
+
message={myProductsListError || ''}
|
|
334
|
+
visible={messagepopUpVisible}
|
|
335
|
+
onClose={() => {
|
|
336
|
+
setMessagepopUpVisible(false);
|
|
337
|
+
dispatch(resetAuthState('myProductsListError'));
|
|
338
|
+
}}
|
|
339
|
+
icon={Images?.pendingIcon}
|
|
340
|
+
/>
|
|
341
|
+
</SafeAreaView>
|
|
342
|
+
);
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
export default Redeem;
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { StyleSheet } from 'react-native';
|
|
2
|
+
import FontFamily from '../../../src-app/constants/Fonts';
|
|
3
|
+
import { colors } from '../../../src-app/styles/colors';
|
|
4
|
+
import { SCALE, VSCALE } from '../../../src-app/constants/Scaling';
|
|
5
|
+
|
|
6
|
+
const styles = StyleSheet.create({
|
|
7
|
+
container: {
|
|
8
|
+
flex: 1,
|
|
9
|
+
backgroundColor: colors.background,
|
|
10
|
+
},
|
|
11
|
+
header: {
|
|
12
|
+
backgroundColor: colors.background,
|
|
13
|
+
paddingHorizontal: SCALE(20),
|
|
14
|
+
paddingTop: VSCALE(20),
|
|
15
|
+
paddingBottom: VSCALE(28),
|
|
16
|
+
},
|
|
17
|
+
statusBar: {
|
|
18
|
+
flexDirection: 'row',
|
|
19
|
+
justifyContent: 'space-between',
|
|
20
|
+
alignItems: 'center',
|
|
21
|
+
marginBottom: VSCALE(28),
|
|
22
|
+
},
|
|
23
|
+
timeText: {
|
|
24
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
25
|
+
fontSize: SCALE(16),
|
|
26
|
+
fontWeight: '600',
|
|
27
|
+
color: colors.onSurface,
|
|
28
|
+
textAlign: 'center',
|
|
29
|
+
width: SCALE(95),
|
|
30
|
+
},
|
|
31
|
+
statusIcons: {
|
|
32
|
+
flexDirection: 'row',
|
|
33
|
+
alignItems: 'center',
|
|
34
|
+
gap: SCALE(6),
|
|
35
|
+
width: SCALE(77),
|
|
36
|
+
height: VSCALE(13),
|
|
37
|
+
},
|
|
38
|
+
headerContent: {
|
|
39
|
+
marginTop: VSCALE(30),
|
|
40
|
+
},
|
|
41
|
+
headerTitle: {
|
|
42
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
43
|
+
fontSize: SCALE(18),
|
|
44
|
+
fontWeight: '600',
|
|
45
|
+
color: colors.onSurface,
|
|
46
|
+
textTransform: 'capitalize',
|
|
47
|
+
textAlign: 'center',
|
|
48
|
+
},
|
|
49
|
+
cartButton: {
|
|
50
|
+
width: SCALE(42),
|
|
51
|
+
height: SCALE(42),
|
|
52
|
+
borderRadius: SCALE(100),
|
|
53
|
+
backgroundColor: 'rgba(255, 255, 255, 0.45)',
|
|
54
|
+
justifyContent: 'center',
|
|
55
|
+
alignItems: 'center',
|
|
56
|
+
position: 'relative',
|
|
57
|
+
},
|
|
58
|
+
cartBadge: {
|
|
59
|
+
position: 'absolute',
|
|
60
|
+
top: VSCALE(0),
|
|
61
|
+
right: SCALE(25),
|
|
62
|
+
width: SCALE(20),
|
|
63
|
+
height: VSCALE(20),
|
|
64
|
+
justifyContent: 'center',
|
|
65
|
+
alignItems: 'center',
|
|
66
|
+
},
|
|
67
|
+
cartBadgeText: {
|
|
68
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
69
|
+
fontSize: SCALE(10),
|
|
70
|
+
fontWeight: '600',
|
|
71
|
+
color: colors.primary,
|
|
72
|
+
textTransform: 'capitalize',
|
|
73
|
+
},
|
|
74
|
+
searchSection: {
|
|
75
|
+
flexDirection: 'row',
|
|
76
|
+
paddingHorizontal: SCALE(20),
|
|
77
|
+
paddingTop: VSCALE(20),
|
|
78
|
+
gap: SCALE(16),
|
|
79
|
+
alignItems: 'center',
|
|
80
|
+
},
|
|
81
|
+
searchBar: {
|
|
82
|
+
flex: 1,
|
|
83
|
+
flexDirection: 'row',
|
|
84
|
+
alignItems: 'center',
|
|
85
|
+
paddingHorizontal: SCALE(16),
|
|
86
|
+
paddingVertical: VSCALE(14),
|
|
87
|
+
borderRadius: SCALE(12),
|
|
88
|
+
borderWidth: 1,
|
|
89
|
+
borderColor: colors.outline,
|
|
90
|
+
gap: SCALE(12),
|
|
91
|
+
height: VSCALE(48),
|
|
92
|
+
justifyContent: 'space-between',
|
|
93
|
+
},
|
|
94
|
+
searchPlaceholder: {
|
|
95
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
96
|
+
fontSize: SCALE(12),
|
|
97
|
+
color: colors.onSurfaceVariant,
|
|
98
|
+
width: '85%',
|
|
99
|
+
minHeight: VSCALE(40),
|
|
100
|
+
},
|
|
101
|
+
filterButton: {
|
|
102
|
+
width: SCALE(48),
|
|
103
|
+
height: VSCALE(48),
|
|
104
|
+
justifyContent: 'center',
|
|
105
|
+
alignItems: 'center',
|
|
106
|
+
},
|
|
107
|
+
scrollContainer: {
|
|
108
|
+
flex: 1,
|
|
109
|
+
paddingTop: VSCALE(20),
|
|
110
|
+
},
|
|
111
|
+
productsGrid: {
|
|
112
|
+
paddingHorizontal: SCALE(20),
|
|
113
|
+
flexDirection: 'column',
|
|
114
|
+
gap: VSCALE(28),
|
|
115
|
+
paddingBottom: VSCALE(100),
|
|
116
|
+
},
|
|
117
|
+
productRow: {
|
|
118
|
+
flexDirection: 'row',
|
|
119
|
+
justifyContent: 'space-between',
|
|
120
|
+
alignItems: 'flex-start',
|
|
121
|
+
},
|
|
122
|
+
productCard: {
|
|
123
|
+
flexDirection: 'column',
|
|
124
|
+
alignItems: 'flex-start',
|
|
125
|
+
gap: VSCALE(12),
|
|
126
|
+
flex: 1,
|
|
127
|
+
marginHorizontal: SCALE(8),
|
|
128
|
+
},
|
|
129
|
+
productImageContainer: {
|
|
130
|
+
width: '100%',
|
|
131
|
+
height: VSCALE(112),
|
|
132
|
+
shadowColor: colors.shadow,
|
|
133
|
+
shadowOffset: { width: 0, height: 2 },
|
|
134
|
+
shadowOpacity: 0.25,
|
|
135
|
+
shadowRadius: 3.84,
|
|
136
|
+
backgroundColor: colors.background,
|
|
137
|
+
borderRadius: SCALE(12),
|
|
138
|
+
borderWidth: 0.25,
|
|
139
|
+
borderColor: colors.outline,
|
|
140
|
+
},
|
|
141
|
+
logoContainer: {
|
|
142
|
+
position: 'absolute',
|
|
143
|
+
top: VSCALE(12),
|
|
144
|
+
right: SCALE(12),
|
|
145
|
+
zIndex: 10,
|
|
146
|
+
},
|
|
147
|
+
productImage: {
|
|
148
|
+
width: '100%',
|
|
149
|
+
height: '100%',
|
|
150
|
+
resizeMode: 'contain',
|
|
151
|
+
},
|
|
152
|
+
categoryBadge: {
|
|
153
|
+
position: 'absolute',
|
|
154
|
+
top: 0,
|
|
155
|
+
left: 0,
|
|
156
|
+
borderTopLeftRadius: SCALE(12),
|
|
157
|
+
borderBottomRightRadius: SCALE(12),
|
|
158
|
+
backgroundColor: colors.surface,
|
|
159
|
+
padding: SCALE(10),
|
|
160
|
+
},
|
|
161
|
+
categoryText: {
|
|
162
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
163
|
+
fontSize: SCALE(8),
|
|
164
|
+
fontWeight: '400',
|
|
165
|
+
color: colors.onSurface,
|
|
166
|
+
textAlign: 'center',
|
|
167
|
+
},
|
|
168
|
+
productInfo: {
|
|
169
|
+
flexDirection: 'column',
|
|
170
|
+
alignItems: 'flex-start',
|
|
171
|
+
gap: VSCALE(4),
|
|
172
|
+
width: '100%',
|
|
173
|
+
},
|
|
174
|
+
productTitle: {
|
|
175
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
176
|
+
fontSize: SCALE(12),
|
|
177
|
+
fontWeight: '500',
|
|
178
|
+
color: colors.onSurface,
|
|
179
|
+
},
|
|
180
|
+
productPoints: {
|
|
181
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
182
|
+
fontSize: SCALE(10),
|
|
183
|
+
fontWeight: '400',
|
|
184
|
+
color: colors.onSurfaceVariant,
|
|
185
|
+
},
|
|
186
|
+
footer: {
|
|
187
|
+
position: 'absolute',
|
|
188
|
+
bottom: 0,
|
|
189
|
+
left: 0,
|
|
190
|
+
right: 0,
|
|
191
|
+
height: VSCALE(48),
|
|
192
|
+
backgroundColor: colors.background,
|
|
193
|
+
shadowColor: 'rgba(0, 0, 0, 0.04)',
|
|
194
|
+
shadowOffset: {
|
|
195
|
+
width: 0,
|
|
196
|
+
height: -2,
|
|
197
|
+
},
|
|
198
|
+
shadowOpacity: 1,
|
|
199
|
+
shadowRadius: SCALE(10),
|
|
200
|
+
elevation: 5,
|
|
201
|
+
paddingHorizontal: SCALE(120),
|
|
202
|
+
paddingVertical: VSCALE(14),
|
|
203
|
+
},
|
|
204
|
+
footerContent: {
|
|
205
|
+
flexDirection: 'row',
|
|
206
|
+
alignItems: 'center',
|
|
207
|
+
justifyContent: 'center',
|
|
208
|
+
gap: SCALE(4),
|
|
209
|
+
},
|
|
210
|
+
poweredByText: {
|
|
211
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
212
|
+
fontSize: SCALE(8),
|
|
213
|
+
fontWeight: '400',
|
|
214
|
+
color: colors.onSurfaceVariant,
|
|
215
|
+
textTransform: 'capitalize',
|
|
216
|
+
},
|
|
217
|
+
footerLogo: {
|
|
218
|
+
width: SCALE(103),
|
|
219
|
+
height: VSCALE(20),
|
|
220
|
+
resizeMode: 'contain',
|
|
221
|
+
},
|
|
222
|
+
filterIcon: {
|
|
223
|
+
width: SCALE(16),
|
|
224
|
+
height: SCALE(16),
|
|
225
|
+
resizeMode: 'contain',
|
|
226
|
+
right: SCALE(30),
|
|
227
|
+
},
|
|
228
|
+
searchIcon: {
|
|
229
|
+
width: SCALE(14),
|
|
230
|
+
height: SCALE(14),
|
|
231
|
+
resizeMode: 'contain',
|
|
232
|
+
},
|
|
233
|
+
searchContainer: {
|
|
234
|
+
flexDirection: 'row',
|
|
235
|
+
gap: SCALE(10),
|
|
236
|
+
alignItems: 'center',
|
|
237
|
+
},
|
|
238
|
+
cartIcon: {
|
|
239
|
+
width: SCALE(24),
|
|
240
|
+
height: VSCALE(26),
|
|
241
|
+
resizeMode: 'contain',
|
|
242
|
+
},
|
|
243
|
+
emptyText: {
|
|
244
|
+
textAlign: 'center',
|
|
245
|
+
marginTop: VSCALE(20),
|
|
246
|
+
fontSize: SCALE(16),
|
|
247
|
+
color: colors.onSurface,
|
|
248
|
+
},
|
|
249
|
+
cartCountContainer: {
|
|
250
|
+
position: 'absolute',
|
|
251
|
+
right: SCALE(0),
|
|
252
|
+
width: SCALE(16),
|
|
253
|
+
height: VSCALE(14),
|
|
254
|
+
justifyContent: 'center',
|
|
255
|
+
alignItems: 'center',
|
|
256
|
+
top: VSCALE(-5),
|
|
257
|
+
},
|
|
258
|
+
cartCountText: {
|
|
259
|
+
fontFamily: FontFamily.LEXEND_REGULAR,
|
|
260
|
+
fontSize: SCALE(10),
|
|
261
|
+
fontWeight: '700',
|
|
262
|
+
color: colors.red,
|
|
263
|
+
},
|
|
264
|
+
nodataFound:{
|
|
265
|
+
minHeight:450
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
export default styles;
|