ordering-ui-react-native 0.21.15 → 0.21.16-release

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 (240) hide show
  1. package/package.json +7 -6
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/PaymentOptionsWebView/index.tsx +1 -0
  5. package/src/components/StripeMethodForm/index.tsx +4 -4
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/types/index.tsx +2 -1
  8. package/src/utils/index.tsx +2 -2
  9. package/themes/business/index.tsx +4 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -2
  11. package/themes/business/src/components/BusinessController/index.tsx +19 -17
  12. package/themes/business/src/components/BusinessProductList/AccordionDropdown.tsx +63 -0
  13. package/themes/business/src/components/BusinessProductList/IterateCategories.tsx +108 -0
  14. package/themes/business/src/components/BusinessProductList/ProductList.tsx +196 -0
  15. package/themes/business/src/components/BusinessProductList/index.tsx +196 -0
  16. package/themes/business/src/components/BusinessProductList/styles.tsx +10 -0
  17. package/themes/business/src/components/Chat/index.tsx +41 -13
  18. package/themes/business/src/components/DriverMap/index.tsx +4 -3
  19. package/themes/business/src/components/DriverSchedule/index.tsx +5 -5
  20. package/themes/business/src/components/FloatingButton/index.tsx +34 -31
  21. package/themes/business/src/components/Home/index.tsx +5 -1
  22. package/themes/business/src/components/MapView/index.tsx +11 -7
  23. package/themes/business/src/components/MessagesOption/index.tsx +22 -94
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +163 -113
  25. package/themes/business/src/components/OrderDetails/Business.tsx +50 -2
  26. package/themes/business/src/components/OrderDetails/Delivery.tsx +23 -11
  27. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +60 -53
  28. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +54 -23
  29. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +6 -1
  31. package/themes/business/src/components/OrderSummary/index.tsx +240 -76
  32. package/themes/business/src/components/OrdersListManager/index.tsx +7 -2
  33. package/themes/business/src/components/OrdersListManager/utils.tsx +1 -1
  34. package/themes/business/src/components/OrdersOption/index.tsx +125 -48
  35. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  36. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  37. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +26 -34
  38. package/themes/business/src/components/PreviousOrders/OrderList.tsx +93 -0
  39. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  40. package/themes/business/src/components/PreviousOrders/index.tsx +194 -220
  41. package/themes/business/src/components/PreviousOrders/styles.tsx +10 -0
  42. package/themes/business/src/components/PrinterSettings/index.tsx +279 -0
  43. package/themes/business/src/components/PrinterSettings/styles.tsx +17 -0
  44. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  45. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  46. package/themes/business/src/components/SearchBar/index.tsx +2 -1
  47. package/themes/business/src/components/Sessions/index.tsx +187 -0
  48. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  49. package/themes/business/src/components/StoresList/index.tsx +5 -3
  50. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  51. package/themes/business/src/components/UserProfileForm/index.tsx +98 -43
  52. package/themes/business/src/components/WebsocketStatus/index.tsx +171 -0
  53. package/themes/business/src/components/WebsocketStatus/styles.tsx +28 -0
  54. package/themes/business/src/components/shared/OInput.tsx +2 -0
  55. package/themes/business/src/hooks/useLocation.tsx +5 -4
  56. package/themes/business/src/types/index.tsx +21 -1
  57. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  58. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  59. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  60. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  61. package/themes/kiosk/src/components/LoginForm/index.tsx +124 -96
  62. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  63. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  64. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  65. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  66. package/themes/original/index.tsx +9 -4
  67. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  68. package/themes/original/src/components/AddressForm/index.tsx +10 -6
  69. package/themes/original/src/components/AddressForm/styles.tsx +1 -1
  70. package/themes/original/src/components/AddressList/index.tsx +4 -7
  71. package/themes/original/src/components/AddressList/styles.tsx +4 -4
  72. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  73. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  74. package/themes/original/src/components/BusinessBasicInformation/index.tsx +4 -4
  75. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +1 -1
  76. package/themes/original/src/components/BusinessController/index.tsx +20 -12
  77. package/themes/original/src/components/BusinessController/styles.tsx +8 -7
  78. package/themes/original/src/components/BusinessInformation/styles.tsx +2 -2
  79. package/themes/original/src/components/BusinessItemAccordion/index.tsx +11 -7
  80. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +317 -0
  81. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +96 -0
  82. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +1 -1
  83. package/themes/original/src/components/BusinessListingSearch/index.tsx +56 -361
  84. package/themes/original/src/components/BusinessListingSearch/styles.tsx +1 -1
  85. package/themes/original/src/components/BusinessPreorder/index.tsx +2 -3
  86. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -1
  87. package/themes/original/src/components/BusinessProductsList/index.tsx +3 -3
  88. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  89. package/themes/original/src/components/BusinessProductsListing/index.tsx +51 -20
  90. package/themes/original/src/components/BusinessProductsListing/styles.tsx +3 -4
  91. package/themes/original/src/components/BusinessReviews/index.tsx +1 -1
  92. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  93. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +5 -5
  94. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
  95. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
  96. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
  97. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +24 -404
  98. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  99. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  100. package/themes/original/src/components/Cart/index.tsx +32 -9
  101. package/themes/original/src/components/CartContent/index.tsx +96 -58
  102. package/themes/original/src/components/CartStoresListing/styles.tsx +2 -2
  103. package/themes/original/src/components/Checkout/index.tsx +190 -66
  104. package/themes/original/src/components/Checkout/styles.tsx +17 -0
  105. package/themes/original/src/components/CitiesControl/styles.tsx +1 -1
  106. package/themes/original/src/components/DatePicker/index.tsx +33 -0
  107. package/themes/original/src/components/DatePicker/styles.tsx +20 -0
  108. package/themes/original/src/components/Favorite/index.tsx +4 -9
  109. package/themes/original/src/components/Favorite/styles.tsx +0 -2
  110. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  111. package/themes/original/src/components/GPSButton/index.tsx +1 -1
  112. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  113. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  114. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
  115. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +36 -3
  116. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +1 -1
  117. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +67 -4
  118. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +1 -1
  119. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +2 -2
  120. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +1 -1
  121. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  122. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  123. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +83 -0
  124. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  125. package/themes/original/src/components/GoogleMap/index.tsx +6 -5
  126. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +2 -2
  127. package/themes/original/src/components/HighestRatedBusinesses/styles.tsx +1 -1
  128. package/themes/original/src/components/Home/index.tsx +2 -1
  129. package/themes/original/src/components/LastOrder/index.tsx +2 -1
  130. package/themes/original/src/components/LastOrders/index.tsx +2 -1
  131. package/themes/original/src/components/LoginForm/Otp/index.tsx +48 -39
  132. package/themes/original/src/components/LoginForm/index.tsx +5 -0
  133. package/themes/original/src/components/Messages/index.tsx +9 -4
  134. package/themes/original/src/components/Messages/styles.tsx +1 -1
  135. package/themes/original/src/components/MomentOption/index.tsx +3 -3
  136. package/themes/original/src/components/MultiCart/index.tsx +1 -1
  137. package/themes/original/src/components/MultiCheckout/index.tsx +208 -21
  138. package/themes/original/src/components/MultiCheckout/styles.tsx +17 -0
  139. package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -15
  140. package/themes/original/src/components/MyOrders/index.tsx +24 -29
  141. package/themes/original/src/components/NavBar/index.tsx +3 -1
  142. package/themes/original/src/components/NetworkError/index.tsx +2 -3
  143. package/themes/original/src/components/NetworkError/styles.tsx +2 -2
  144. package/themes/original/src/components/Notifications/index.tsx +4 -8
  145. package/themes/original/src/components/Notifications/styles.tsx +0 -1
  146. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +1 -1
  147. package/themes/original/src/components/OrderDetails/index.tsx +716 -668
  148. package/themes/original/src/components/OrderDetails/styles.tsx +24 -8
  149. package/themes/original/src/components/OrderProgress/index.tsx +28 -6
  150. package/themes/original/src/components/OrderProgress/styles.tsx +1 -1
  151. package/themes/original/src/components/OrderSummary/index.tsx +3 -1
  152. package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -6
  153. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +1 -1
  154. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +1 -1
  155. package/themes/original/src/components/OrdersOption/index.tsx +3 -5
  156. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  157. package/themes/original/src/components/PageBanner/index.tsx +3 -0
  158. package/themes/original/src/components/PaymentOptionCard/index.tsx +4 -2
  159. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
  160. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  161. package/themes/original/src/components/PaymentOptions/index.tsx +72 -6
  162. package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -1
  163. package/themes/original/src/components/ProductForm/ActionButton.tsx +120 -0
  164. package/themes/original/src/components/ProductForm/ExtraOptions.tsx +56 -0
  165. package/themes/original/src/components/ProductForm/index.tsx +74 -165
  166. package/themes/original/src/components/ProductItemAccordion/index.tsx +54 -44
  167. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  168. package/themes/original/src/components/ProductOptionSubOption/index.tsx +123 -82
  169. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +6 -1
  170. package/themes/original/src/components/ProfessionalProfile/styles.tsx +3 -3
  171. package/themes/original/src/components/Promotions/index.tsx +4 -4
  172. package/themes/original/src/components/Promotions/styles.tsx +0 -2
  173. package/themes/original/src/components/ReviewDriver/styles.tsx +1 -1
  174. package/themes/original/src/components/ReviewOrder/styles.tsx +1 -1
  175. package/themes/original/src/components/ReviewProducts/styles.tsx +1 -1
  176. package/themes/original/src/components/ServiceForm/index.tsx +2 -2
  177. package/themes/original/src/components/ServiceForm/styles.tsx +4 -4
  178. package/themes/original/src/components/SingleOrderCard/index.tsx +5 -4
  179. package/themes/original/src/components/SingleProductCard/index.tsx +2 -2
  180. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  181. package/themes/original/src/components/StripeCardsList/index.tsx +17 -36
  182. package/themes/original/src/components/StripeElementsForm/index.tsx +9 -4
  183. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +170 -0
  184. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +86 -0
  185. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -199
  186. package/themes/original/src/components/UpsellingProducts/styles.tsx +19 -0
  187. package/themes/original/src/components/UserFormDetails/index.tsx +54 -8
  188. package/themes/original/src/components/UserFormDetails/styles.tsx +7 -0
  189. package/themes/original/src/components/UserProfile/index.tsx +3 -2
  190. package/themes/original/src/components/UserProfileForm/index.tsx +30 -36
  191. package/themes/original/src/components/UserVerification/index.tsx +3 -1
  192. package/themes/original/src/components/WalletTransactions/styles.tsx +1 -0
  193. package/themes/original/src/components/Wallets/index.tsx +8 -9
  194. package/themes/original/src/components/Wallets/styles.tsx +1 -1
  195. package/themes/original/src/components/WebsocketStatus/index.tsx +172 -0
  196. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  197. package/themes/original/src/components/shared/HeaderTitle.tsx +1 -1
  198. package/themes/original/src/components/shared/OButton.tsx +5 -5
  199. package/themes/original/src/components/shared/OInput.tsx +1 -4
  200. package/themes/original/src/components/shared/OModal.tsx +12 -14
  201. package/themes/original/src/layouts/Container.tsx +5 -3
  202. package/themes/original/src/types/index.tsx +4 -0
  203. package/themes/original/src/utils/index.tsx +124 -0
  204. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  205. package/src/navigators/BottomNavigator.tsx +0 -117
  206. package/src/navigators/CheckoutNavigator.tsx +0 -66
  207. package/src/navigators/HomeNavigator.tsx +0 -202
  208. package/src/navigators/NavigationRef.tsx +0 -7
  209. package/src/navigators/RootNavigator.tsx +0 -269
  210. package/src/pages/Account.tsx +0 -34
  211. package/src/pages/AddressForm.tsx +0 -62
  212. package/src/pages/AddressList.tsx +0 -24
  213. package/src/pages/BusinessProductsList.tsx +0 -81
  214. package/src/pages/BusinessesListing.tsx +0 -43
  215. package/src/pages/CartList.tsx +0 -49
  216. package/src/pages/Checkout.tsx +0 -101
  217. package/src/pages/ForgotPassword.tsx +0 -24
  218. package/src/pages/Help.tsx +0 -23
  219. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  220. package/src/pages/HelpGuide.tsx +0 -23
  221. package/src/pages/HelpOrder.tsx +0 -23
  222. package/src/pages/Home.tsx +0 -36
  223. package/src/pages/IntroductoryTutorial.tsx +0 -170
  224. package/src/pages/Login.tsx +0 -47
  225. package/src/pages/MomentOption.tsx +0 -30
  226. package/src/pages/MultiCheckout.tsx +0 -31
  227. package/src/pages/MultiOrdersDetails.tsx +0 -27
  228. package/src/pages/MyOrders.tsx +0 -40
  229. package/src/pages/NetworkError.tsx +0 -24
  230. package/src/pages/NotFound.tsx +0 -22
  231. package/src/pages/OrderDetails.tsx +0 -25
  232. package/src/pages/ProductDetails.tsx +0 -55
  233. package/src/pages/Profile.tsx +0 -36
  234. package/src/pages/ReviewDriver.tsx +0 -30
  235. package/src/pages/ReviewOrder.tsx +0 -32
  236. package/src/pages/ReviewProducts.tsx +0 -30
  237. package/src/pages/Sessions.tsx +0 -22
  238. package/src/pages/Signup.tsx +0 -53
  239. package/src/pages/SpinnerLoader.tsx +0 -10
  240. package/src/pages/Splash.tsx +0 -21
@@ -1,4 +1,4 @@
1
- import React, { useState, useEffect } from 'react'
1
+ import React, { useState, useEffect, useCallback } from 'react'
2
2
  import {
3
3
  useLanguage,
4
4
  useConfig,
@@ -10,11 +10,12 @@ import {
10
10
  ToastType,
11
11
  MultiCheckout as MultiCheckoutController
12
12
  } from 'ordering-components/native'
13
- import { View, StyleSheet, Platform } from 'react-native'
13
+ import { View, StyleSheet, Platform, ScrollView, SafeAreaView } from 'react-native'
14
14
  import { useTheme } from 'styled-components/native';
15
+ import IconAntDesign from 'react-native-vector-icons/AntDesign';
15
16
  import { Container } from '../../layouts/Container';
16
17
  import NavBar from '../NavBar';
17
- import { OText, OIcon, OModal } from '../shared';
18
+ import { OText, OIcon, OModal, OButton } from '../shared';
18
19
  import { getTypesText } from '../../utils';
19
20
  import { UserDetails } from '../UserDetails'
20
21
  import { AddressDetails } from '../AddressDetails'
@@ -26,8 +27,12 @@ import { DriverTips } from '../DriverTips'
26
27
  import { CouponControl } from '../CouponControl';
27
28
  import { DriverTipsContainer } from '../Cart/styles'
28
29
  import { OSTable, OSCoupon } from '../OrderSummary/styles';
30
+ import { SignupForm } from '../SignupForm'
31
+ import { LoginForm } from '../LoginForm'
29
32
 
30
33
  import {
34
+ TopHeader,
35
+ TopActions,
31
36
  ChContainer,
32
37
  ChSection,
33
38
  ChHeader,
@@ -71,10 +76,18 @@ const MultiCheckoutUI = (props: any) => {
71
76
  const theme = useTheme();
72
77
  const styles = StyleSheet.create({
73
78
  pagePadding: {
74
- paddingLeft: 40,
75
- paddingRight: 40
79
+ paddingLeft: 20,
80
+ paddingRight: 20
81
+ },
82
+ wrapperNavbar: {
83
+ paddingHorizontal: 20,
84
+ backgroundColor: theme?.colors?.white,
85
+ borderWidth: 0
86
+ },
87
+ detailWrapper: {
88
+ paddingHorizontal: 20,
89
+ width: '100%'
76
90
  },
77
- wrapperNavbar: { paddingHorizontal: 40 }
78
91
  })
79
92
 
80
93
  const [, { showToast }] = useToast();
@@ -83,7 +96,7 @@ const MultiCheckoutUI = (props: any) => {
83
96
  const [{ parsePrice, parseDate }] = useUtils();
84
97
  const [{ options, carts, loading }, { confirmCart }] = useOrder();
85
98
  const [validationFields] = useValidationFields();
86
- const [{ user }] = useSession()
99
+ const [{ user }, { login }] = useSession()
87
100
 
88
101
  const configTypes = configs?.order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
89
102
  const isPreOrder = configs?.preorder_status_enabled?.value === '1'
@@ -130,13 +143,20 @@ const MultiCheckoutUI = (props: any) => {
130
143
  ?.reduce((sum: any, cart: any) => sum + clearAmount((cart?.subtotal + getIncludedTaxes(cart)) * accumulationRateBusiness(cart?.business_id)), 0)
131
144
  ?.toFixed(configs.format_number_decimal_length?.value ?? 2)
132
145
 
146
+ const [showTitle, setShowTitle] = useState(false)
133
147
  const [isUserDetailsEdit, setIsUserDetailsEdit] = useState(false);
134
148
  const [phoneUpdate, setPhoneUpdate] = useState(false);
135
149
  const [userErrors, setUserErrors] = useState<any>([]);
150
+ const [cartsOpened, setCartsOpened] = useState([])
136
151
  const [placeByMethodPay, setPlaceByMethodPay] = useState(false)
152
+ const [allowedGuest, setAllowedGuest] = useState(false)
153
+ const [isOpen, setIsOpen] = useState(false)
154
+ const [requiredFields, setRequiredFields] = useState<any>([])
155
+ const stripePaymethods: any = ['stripe', 'stripe_direct', 'stripe_connect', 'stripe_redirect']
156
+ const [openModal, setOpenModal] = useState({ login: false, signup: false, isGuest: false })
137
157
  const [methodPaySupported, setMethodPaySupported] = useState({ enabled: false, message: null, loading: true })
138
158
  const methodsPay = ['global_google_pay', 'global_apple_pay']
139
- const isDisablePlaceOrderButton = cartGroup?.loading || (!(paymethodSelected?.paymethod_id || paymethodSelected?.wallet_id) && cartGroup?.result?.balance > 0) ||
159
+ const isDisablePlaceOrderButton = cartGroup?.loading || placing || (!(paymethodSelected?.paymethod_id || paymethodSelected?.wallet_id) && cartGroup?.result?.balance > 0) ||
140
160
  (paymethodSelected?.paymethod?.gateway === 'stripe' && !paymethodSelected?.paymethod_data) ||
141
161
  walletCarts.length > 0
142
162
  || (methodsPay.includes(paymethodSelected?.gateway) && (!methodPaySupported.enabled || methodPaySupported.loading)) || openCarts?.length === 0
@@ -151,11 +171,12 @@ const MultiCheckoutUI = (props: any) => {
151
171
  setUserErrors([])
152
172
  const errors = []
153
173
  const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes']
174
+ const _requiredFields: any = []
154
175
 
155
176
  Object.values(validationFields?.fields?.checkout).map((field: any) => {
156
177
  if (field?.required && !notFields.includes(field.code)) {
157
178
  if (!user[field?.code]) {
158
- errors.push(t(`VALIDATION_ERROR_${field.code.toUpperCase()}_REQUIRED`, `The field ${field?.name} is required`))
179
+ _requiredFields.push(field?.code)
159
180
  }
160
181
  }
161
182
  })
@@ -166,8 +187,9 @@ const MultiCheckoutUI = (props: any) => {
166
187
  validationFields?.fields?.checkout?.cellphone?.required) ||
167
188
  configs?.verification_phone_required?.value === '1')
168
189
  ) {
169
- errors.push(t('VALIDATION_ERROR_MOBILE_PHONE_REQUIRED', 'The field Phone number is required'))
190
+ _requiredFields.push('cellphone')
170
191
  }
192
+ setRequiredFields(_requiredFields)
171
193
 
172
194
  if (phoneUpdate) {
173
195
  errors.push(t('NECESSARY_UPDATE_COUNTRY_PHONE_CODE', 'It is necessary to update your phone number'))
@@ -181,10 +203,19 @@ const MultiCheckoutUI = (props: any) => {
181
203
  }
182
204
 
183
205
  const handlePlaceOrder = (confirmPayment?: any) => {
184
- if (!userErrors.length) {
206
+ if (stripePaymethods.includes(paymethodSelected?.gateway) && user?.guest_id) {
207
+ setOpenModal({ ...openModal, signup: true, isGuest: true })
208
+ return
209
+ }
210
+
211
+ if (!userErrors.length && (!requiredFields?.length || allowedGuest)) {
185
212
  handleGroupPlaceOrder && handleGroupPlaceOrder(confirmPayment)
186
213
  return
187
214
  }
215
+ if (requiredFields?.length) {
216
+ setIsOpen(true)
217
+ return
218
+ }
188
219
  let stringError = ''
189
220
  Object.values(userErrors).map((item: any, i: number) => {
190
221
  stringError += (i + 1) === userErrors.length ? `- ${item?.message || item}` : `- ${item?.message || item}\n`
@@ -193,6 +224,36 @@ const MultiCheckoutUI = (props: any) => {
193
224
  setIsUserDetailsEdit(true)
194
225
  }
195
226
 
227
+ const handlePlaceOrderAsGuest = () => {
228
+ setIsOpen(false)
229
+ handleGroupPlaceOrder && handleGroupPlaceOrder()
230
+ }
231
+
232
+ const handleSuccessSignup = (user: any) => {
233
+ login({
234
+ user,
235
+ token: user?.session?.access_token
236
+ })
237
+ openModal?.isGuest && handlePlaceOrderAsGuest()
238
+ setOpenModal({ ...openModal, signup: false, isGuest: false })
239
+ }
240
+
241
+ const handleSuccessLogin = (user: any) => {
242
+ if (user) setOpenModal({ ...openModal, login: false })
243
+ }
244
+
245
+ const handleScroll = ({ nativeEvent: { contentOffset } }: any) => {
246
+ setShowTitle(contentOffset.y > 30)
247
+ }
248
+
249
+ const handleGoBack = () => {
250
+ if (navigation?.canGoBack()) {
251
+ navigation.goBack()
252
+ } else {
253
+ navigation.navigate('BottomTab', { screen: 'Cart' })
254
+ }
255
+ }
256
+
196
257
  useEffect(() => {
197
258
  if (validationFields && validationFields?.fields?.checkout) {
198
259
  checkValidationFields()
@@ -231,17 +292,58 @@ const MultiCheckoutUI = (props: any) => {
231
292
  }
232
293
  }, [paymethodSelected])
233
294
 
295
+ const changeActiveState = useCallback((isClosed: boolean, uuid: string) => {
296
+ const isActive = cartsOpened?.includes?.(uuid)
297
+ if (isActive || !isClosed) {
298
+ setCartsOpened(cartsOpened?.filter?.((_uuid) => _uuid !== uuid))
299
+ } else {
300
+ setCartsOpened([
301
+ ...cartsOpened,
302
+ uuid
303
+ ])
304
+ }
305
+ }, [cartsOpened])
306
+
234
307
  return (
235
308
  <>
236
- <Container noPadding>
309
+ <SafeAreaView style={{ backgroundColor: theme.colors.backgroundPage }}>
310
+ <View style={styles.wrapperNavbar}>
311
+ <TopHeader>
312
+ <>
313
+ <TopActions onPress={() => handleGoBack()}>
314
+ <IconAntDesign
315
+ name='arrowleft'
316
+ size={26}
317
+ />
318
+ </TopActions>
319
+ {showTitle && (
320
+ <OText
321
+ size={16}
322
+ style={{ flex: 1, textAlign: 'center', right: 15 }}
323
+ weight={Platform.OS === 'ios' ? '600' : 'bold'}
324
+ numberOfLines={2}
325
+ ellipsizeMode='tail'
326
+ >
327
+ {t('CHECKOUT', 'Checkout')}
328
+ </OText>
329
+ )}
330
+ </>
331
+ </TopHeader>
332
+ </View>
333
+ </SafeAreaView>
334
+ <Container pt={0} noPadding onScroll={handleScroll} showsVerticalScrollIndicator={false}>
237
335
  <View style={styles.wrapperNavbar}>
238
336
  <NavBar
337
+ hideArrowLeft
239
338
  title={t('CHECKOUT', 'Checkout')}
240
339
  titleAlign={'center'}
241
340
  onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
242
341
  showCall={false}
243
342
  paddingTop={Platform.OS === 'ios' ? 0 : 4}
244
343
  btnStyle={{ paddingLeft: 0 }}
344
+ titleWrapStyle={{ paddingHorizontal: 0 }}
345
+ titleStyle={{ marginRight: 0, marginLeft: 0 }}
346
+ style={{ marginTop: 20 }}
245
347
  />
246
348
  </View>
247
349
  <ChContainer style={styles.pagePadding}>
@@ -285,15 +387,45 @@ const MultiCheckoutUI = (props: any) => {
285
387
 
286
388
  <ChSection>
287
389
  <ChUserDetails>
288
- <UserDetails
289
- isUserDetailsEdit={isUserDetailsEdit}
290
- useValidationFields
291
- useDefualtSessionManager
292
- useSessionUser
293
- isCheckout
294
- phoneUpdate={phoneUpdate}
295
- togglePhoneUpdate={togglePhoneUpdate}
296
- />
390
+ {(user?.guest_id && !allowedGuest) ? (
391
+ <View>
392
+ <OText size={14} numberOfLines={1} ellipsizeMode='tail' color={theme.colors.textNormal}>
393
+ {t('CUSTOMER_DETAILS', 'Customer details')}
394
+ </OText>
395
+ <OButton
396
+ text={t('SIGN_UP', 'Sign up')}
397
+ textStyle={{ color: theme.colors.white }}
398
+ style={{ borderRadius: 7.6, marginTop: 20 }}
399
+ onClick={() => setOpenModal({ ...openModal, signup: true })}
400
+ />
401
+ <OButton
402
+ text={t('LOGIN', 'Login')}
403
+ textStyle={{ color: theme.colors.primary }}
404
+ bgColor={theme.colors.white}
405
+ borderColor={theme.colors.primary}
406
+ style={{ borderRadius: 7.6, marginTop: 20 }}
407
+ onClick={() => setOpenModal({ ...openModal, login: true })}
408
+ />
409
+ <OButton
410
+ text={t('CONTINUE_AS_GUEST', 'Continue as guest')}
411
+ textStyle={{ color: theme.colors.black }}
412
+ bgColor={theme.colors.white}
413
+ borderColor={theme.colors.black}
414
+ style={{ borderRadius: 7.6, marginTop: 20 }}
415
+ onClick={() => setAllowedGuest(true)}
416
+ />
417
+ </View>
418
+ ) : (
419
+ <UserDetails
420
+ isUserDetailsEdit={isUserDetailsEdit}
421
+ useValidationFields
422
+ useDefualtSessionManager
423
+ useSessionUser
424
+ isCheckout
425
+ phoneUpdate={phoneUpdate}
426
+ togglePhoneUpdate={togglePhoneUpdate}
427
+ />
428
+ )}
297
429
  </ChUserDetails>
298
430
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
299
431
  </ChSection>
@@ -403,6 +535,9 @@ const MultiCheckoutUI = (props: any) => {
403
535
  hideDriverTip={configs?.multi_business_checkout_show_combined_driver_tip?.value === '1'}
404
536
  onNavigationRedirect={(route: string, params: any) => props.navigation.navigate(route, params)}
405
537
  businessConfigs={cart?.business?.configs}
538
+ cartsOpened={cartsOpened}
539
+ changeActiveState={changeActiveState}
540
+ isActive={cartsOpened?.includes?.(cart?.uuid)}
406
541
  />
407
542
  {openCarts.length > 1 && (
408
543
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 13, marginHorizontal: -40 }} />
@@ -484,6 +619,58 @@ const MultiCheckoutUI = (props: any) => {
484
619
  </OText>
485
620
  )}
486
621
  </ChContainer>
622
+ <OModal
623
+ open={openModal.signup}
624
+ onClose={() => setOpenModal({ ...openModal, signup: false, isGuest: false })}
625
+ >
626
+ <ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
627
+ <SignupForm
628
+ handleSuccessSignup={handleSuccessSignup}
629
+ isGuest
630
+ signupButtonText={t('SIGNUP', 'Signup')}
631
+ useSignupByEmail
632
+ useChekoutFileds
633
+ />
634
+ </ScrollView>
635
+ </OModal>
636
+ <OModal
637
+ open={openModal.login}
638
+ onClose={() => setOpenModal({ ...openModal, login: false })}
639
+ >
640
+ <ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
641
+ <LoginForm
642
+ handleSuccessLogin={handleSuccessLogin}
643
+ isGuest
644
+ loginButtonText={t('LOGIN', 'Login')}
645
+ loginButtonBackground={theme.colors.primary}
646
+ />
647
+ </ScrollView>
648
+ </OModal>
649
+ <OModal
650
+ open={isOpen}
651
+ onClose={() => setIsOpen(false)}
652
+ >
653
+ <View style={styles.detailWrapper}>
654
+ <UserDetails
655
+ isUserDetailsEdit
656
+ useValidationFields
657
+ useDefualtSessionManager
658
+ useSessionUser
659
+ isCheckout
660
+ isEdit
661
+ phoneUpdate={phoneUpdate}
662
+ togglePhoneUpdate={togglePhoneUpdate}
663
+ requiredFields={requiredFields}
664
+ hideUpdateButton
665
+ handlePlaceOrderAsGuest={handlePlaceOrderAsGuest}
666
+ onClose={() => {
667
+ setIsOpen(false)
668
+ handlePlaceOrder()
669
+ }}
670
+ setIsOpen={setIsOpen}
671
+ />
672
+ </View>
673
+ </OModal>
487
674
  </Container>
488
675
 
489
676
  <FloatingButton
@@ -1,5 +1,22 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
+ export const TopActions = styled.TouchableOpacity`
4
+ height: 60px;
5
+ justify-content: center;
6
+ min-width: 30px;
7
+ padding-right: 15px;
8
+ `;
9
+
10
+ export const TopHeader = styled.View`
11
+ width: 100%;
12
+ flex-direction: row;
13
+ align-items: center;
14
+ justify-content: space-between;
15
+ z-index: 1;
16
+ height: 60px;
17
+ min-height: 60px;
18
+ `
19
+
3
20
  export const ChContainer = styled.View`
4
21
  margin-bottom: 60px;
5
22
  `
@@ -53,6 +53,7 @@ export const MultiOrdersDetailsUI = (props: any) => {
53
53
  const [{ configs }] = useConfig()
54
54
 
55
55
  const isTaxIncludedOnPrice = orders.every((_order: any) => _order.taxes?.length ? _order.taxes?.every((_tax: any) => _tax.type === 1) : true)
56
+ const deliveryType = orders.find((order: any) => order.delivery_type)?.delivery_type
56
57
  const progressBarStyle = configs.multi_business_checkout_progress_bar_style?.value
57
58
  const showBarInOrder = ['group', 'both']
58
59
  const showBarInIndividual = ['individual', 'both']
@@ -71,7 +72,7 @@ export const MultiOrdersDetailsUI = (props: any) => {
71
72
  navigation?.canGoBack() && navigation.goBack();
72
73
  return;
73
74
  }
74
- navigation.navigate('BusinessList');
75
+ navigation.navigate('BottomTab');
75
76
  return true
76
77
  }
77
78
 
@@ -93,7 +94,7 @@ export const MultiOrdersDetailsUI = (props: any) => {
93
94
  }, [])
94
95
 
95
96
  return (
96
- <OrdersDetailsContainer keyboardShouldPersistTaps="handled" contentContainerStyle={{ paddingHorizontal: 40 }}>
97
+ <OrdersDetailsContainer keyboardShouldPersistTaps="handled" contentContainerStyle={{ paddingHorizontal: 20 }}>
97
98
  <View style={{ flexDirection: 'row' }}>
98
99
  <OButton
99
100
  imgRightSrc={null}
@@ -171,19 +172,23 @@ export const MultiOrdersDetailsUI = (props: any) => {
171
172
  ))}
172
173
  </Section>
173
174
  <Divider />
174
- <Section>
175
- <OText size={16} lineHeight={24} weight={'500'} color={theme.colors.textNormal} mBottom={20}>
176
- {t('DELIVERYA_V21', 'Delivery address')}
177
- </OText>
178
- {loading ? (
179
- <PlaceholderLine height={18} noMargin style={{ borderRadius: 2 }} />
180
- ) : (
181
- <OText size={12} lineHeight={18} color={theme.colors.textNormal} mBottom={2}>
182
- {customer?.address}
183
- </OText>
184
- )}
185
- </Section>
186
- <Divider />
175
+ {deliveryType === 1 && (
176
+ <>
177
+ <Section>
178
+ <OText size={16} lineHeight={24} weight={'500'} color={theme.colors.textNormal} mBottom={20}>
179
+ {t('DELIVERYA_V21', 'Delivery address')}
180
+ </OText>
181
+ {loading ? (
182
+ <PlaceholderLine height={18} noMargin style={{ borderRadius: 2 }} />
183
+ ) : (
184
+ <OText size={12} lineHeight={18} color={theme.colors.textNormal} mBottom={2}>
185
+ {customer?.address}
186
+ </OText>
187
+ )}
188
+ </Section>
189
+ <Divider />
190
+ </>
191
+ )}
187
192
  {loading ? (
188
193
  <Placeholder Animation={Fade}>
189
194
  <PlaceholderLine
@@ -2,13 +2,14 @@ import React, { useState, useEffect } from 'react'
2
2
  import { useLanguage } from 'ordering-components/native';
3
3
  import { View, StyleSheet, RefreshControl, Platform } from 'react-native';
4
4
  import AntDesignIcon from 'react-native-vector-icons/AntDesign'
5
-
5
+ import { GiftCardOrdersList } from '../GiftCard/GiftCardOrdersList'
6
6
  import { OrdersOption } from '../OrdersOption'
7
7
  import { HeaderTitle, OButton, OText } from '../shared'
8
8
  import { ScrollView } from 'react-native-gesture-handler';
9
9
  import { Tab } from './styles'
10
10
  import { useTheme } from 'styled-components/native';
11
11
  import { Container } from '../../layouts/Container';
12
+ import NavBar from '../NavBar'
12
13
 
13
14
  export const MyOrders = (props: any) => {
14
15
  const {
@@ -40,7 +41,8 @@ export const MyOrders = (props: any) => {
40
41
  const MyOrdersMenu = [
41
42
  { key: 'orders', value: t('ORDERS', 'Orders'), disabled: false },
42
43
  { key: 'business', value: t('BUSINESS', 'Business'), disabled: hideBusinessTab },
43
- { key: 'products', value: t('PRODUCTS', 'Products'), disabled: hideProductsTab }
44
+ { key: 'products', value: t('PRODUCTS', 'Products'), disabled: hideProductsTab },
45
+ { key: 'giftCards', value: t('GIFT_CARD', 'Gift card'), disabled: false }
44
46
  ]
45
47
  const goToBack = () => navigation?.canGoBack() && navigation.goBack()
46
48
 
@@ -87,34 +89,20 @@ export const MyOrders = (props: any) => {
87
89
  display: 'flex',
88
90
  flexDirection: 'row',
89
91
  alignItems: 'center',
90
- paddingHorizontal: isChewLayout ? 20 : 40,
92
+ paddingHorizontal: 20,
91
93
  },
92
94
  ...props.titleStyle
93
95
  }}>
94
96
  {!props.hideBackBtn && (!isChewLayout || (isChewLayout && hideOrdersTheme)) && (
95
- <OButton
96
- imgLeftStyle={{ width: 18 }}
97
- imgRightSrc={null}
98
- style={{
99
- borderWidth: 0,
100
- width: 26,
101
- height: 26,
102
- backgroundColor: '#FFF',
103
- borderColor: '#FFF',
104
- shadowColor: '#FFF',
105
- paddingLeft: 0,
106
- paddingRight: 0,
107
- marginTop: 30,
108
- }}
109
- onClick={goToBack}
110
- icon={AntDesignIcon}
111
- iconProps={{
112
- name: 'arrowleft',
113
- size: 26
114
- }}
97
+ <NavBar
98
+ title={t('MY_ORDERS', 'My Orders')}
99
+ titleAlign={'center'}
100
+ onActionLeft={goToBack}
101
+ showCall={false}
102
+ paddingTop={30}
103
+ btnStyle={{ paddingLeft: 0 }}
115
104
  />
116
105
  )}
117
- <HeaderTitle ph={10} text={t('MY_ORDERS', 'My Orders')} />
118
106
  </View>
119
107
  )}
120
108
  {!hideOrders && !isChewLayout && !showNavbar && (
@@ -124,7 +112,7 @@ export const MyOrders = (props: any) => {
124
112
  <ScrollView
125
113
  horizontal
126
114
  style={{ ...styles.container, borderBottomWidth: 1 }}
127
- contentContainerStyle={{ paddingHorizontal: !!businessesSearchList ? 0 : isChewLayout ? 20 : 40 }}
115
+ contentContainerStyle={{ paddingHorizontal: !!businessesSearchList ? 0 : 20 }}
128
116
  showsHorizontalScrollIndicator={false}
129
117
  scrollEventThrottle={16}
130
118
  >
@@ -148,7 +136,7 @@ export const MyOrders = (props: any) => {
148
136
  )}
149
137
  {selectedOption === 'orders' && (
150
138
  <>
151
- <View style={{ paddingHorizontal: isChewLayout ? 20 : 40 }}>
139
+ <View style={{ paddingHorizontal: 20 }}>
152
140
  <OrdersOption
153
141
  {...props}
154
142
  preOrders
@@ -158,7 +146,7 @@ export const MyOrders = (props: any) => {
158
146
  refreshOrders={refreshOrders}
159
147
  />
160
148
  </View>
161
- <View style={{ paddingHorizontal: isChewLayout ? 20 : 40 }}>
149
+ <View style={{ paddingHorizontal: 20 }}>
162
150
  <OrdersOption
163
151
  {...props}
164
152
  activeOrders
@@ -168,7 +156,7 @@ export const MyOrders = (props: any) => {
168
156
  refreshOrders={refreshOrders}
169
157
  />
170
158
  </View>
171
- <View style={{ paddingHorizontal: isChewLayout ? 20 : 40 }}>
159
+ <View style={{ paddingHorizontal: 20 }}>
172
160
  <OrdersOption
173
161
  {...props}
174
162
  ordersLength={ordersLength}
@@ -215,7 +203,14 @@ export const MyOrders = (props: any) => {
215
203
  setOrdersLength={setOrdersLength}
216
204
  />
217
205
  )}
206
+
207
+ {selectedOption === 'giftCards' && (
208
+ <View style={{ paddingHorizontal: 20 }}>
209
+ <GiftCardOrdersList
210
+ onNavigationRedirect={props?.onNavigationRedirect}
211
+ />
212
+ </View>
213
+ )}
218
214
  </Container>
219
-
220
215
  )
221
216
  }
@@ -1,3 +1,6 @@
1
+
2
+
3
+
1
4
  import * as React from 'react'
2
5
  import styled, { useTheme } from 'styled-components/native'
3
6
  import { OButton, OIcon, OText } from '../shared'
@@ -92,7 +95,6 @@ const NavBar = (props: Props) => {
92
95
  <TitleWrapper style={{ ...{ paddingHorizontal: props.isVertical ? 0 : 10 }, ...props.titleWrapStyle }}>
93
96
  <OText
94
97
  size={20}
95
- lineHeight={36}
96
98
  weight={Platform.OS === 'ios' ? '600' : 'bold'}
97
99
  style={
98
100
  {
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { useLanguage, useOrderingTheme } from 'ordering-components/native'
2
+ import { useLanguage } from 'ordering-components/native'
3
3
  import { Dimensions } from 'react-native'
4
4
  import RNRestart from 'react-native-restart'
5
5
  import { OText, OIcon, OButton } from '../shared'
@@ -16,8 +16,7 @@ export const NetworkError = (props: NoNetworkParams) => {
16
16
  } = props
17
17
  const theme = useTheme()
18
18
  const [, t] = useLanguage()
19
- const [orderingTheme] = useOrderingTheme()
20
- const urlimage = orderingTheme?.theme?.no_internet?.components?.image
19
+ const urlimage = theme?.no_internet?.components?.image
21
20
  const noNetworkImage = image || theme.images.general.noNetwork
22
21
  const deviceWidth = Dimensions.get('screen').width
23
22
 
@@ -2,10 +2,10 @@ import styled from 'styled-components/native'
2
2
 
3
3
  export const Container = styled.View`
4
4
  flex: 1;
5
- padding: 20px 40px;
5
+ padding: 20px;
6
6
  `
7
7
  export const ImageContainer = styled.View`
8
8
  flex: 1;
9
9
  align-items: center;
10
10
  justify-content: center;
11
- `
11
+ `
@@ -3,7 +3,6 @@ import {
3
3
  UserFormDetails as NotificationsController,
4
4
  useLanguage,
5
5
  useSession,
6
- useOrderingTheme,
7
6
  useToast,
8
7
  ToastType,
9
8
  } from 'ordering-components/native'
@@ -28,7 +27,6 @@ const NotificationsUI = (props: any) => {
28
27
  const [{ user: userSession }] = useSession()
29
28
  const [, t] = useLanguage();
30
29
  const [, { showToast }] = useToast();
31
- const [orderingTheme] = useOrderingTheme()
32
30
 
33
31
  const user = userData || userSession
34
32
 
@@ -45,8 +43,8 @@ const NotificationsUI = (props: any) => {
45
43
  })
46
44
 
47
45
  const goToBack = () => navigation?.canGoBack() && navigation.goBack()
48
- const showCustomerPromotions = !orderingTheme?.theme?.profile?.components?.promotions?.hidden
49
- const showNotifications = !orderingTheme?.theme?.profile?.components?.notification_settings?.hidden
46
+ const showCustomerPromotions = !theme?.profile?.components?.promotions?.hidden
47
+ const showNotifications = !theme?.profile?.components?.notification_settings?.hidden
50
48
 
51
49
  const handleEditNotifications = (key: any, value: any) => {
52
50
  setNotificationsList({
@@ -75,10 +73,8 @@ const NotificationsUI = (props: any) => {
75
73
  titleAlign={'center'}
76
74
  onActionLeft={goToBack}
77
75
  showCall={false}
78
- style={{
79
- paddingHorizontal: 40,
80
- paddingVertical: 0,
81
- }}
76
+ style={{ paddingVertical: 0 }}
77
+ btnStyle={{ paddingLeft: 0 }}
82
78
  />
83
79
  {showCustomerPromotions && showNotifications && (
84
80
  <>
@@ -9,7 +9,6 @@ export const Container = styled.ScrollView`
9
9
  export const NotificationsGroupSwitchWrapper = styled.View`
10
10
  flex-grow: 1;
11
11
  justify-content: space-between;
12
- padding: 0 20px;
13
12
  `
14
13
 
15
14
  export const SwitchWrapper = styled.View`
@@ -33,7 +33,7 @@ export const OrderHistory = (props: any) => {
33
33
  paddingVertical: 16
34
34
  },
35
35
  container: {
36
- paddingHorizontal: 40,
36
+ paddingHorizontal: 20,
37
37
  paddingVertical: 15
38
38
  }
39
39
  });