ordering-ui-react-native 0.17.76 → 0.17.77-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 (225) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessInformation/index.tsx +10 -9
  4. package/src/components/BusinessesListing/index.tsx +1 -1
  5. package/src/components/OrderCreating/index.tsx +1 -21
  6. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  7. package/src/components/PhoneInputNumber/index.tsx +6 -2
  8. package/src/components/StripeMethodForm/index.tsx +136 -102
  9. package/src/components/VerifyPhone/styles.tsx +1 -2
  10. package/src/components/shared/OToast.tsx +3 -2
  11. package/src/types/index.tsx +5 -0
  12. package/src/utils/index.tsx +5 -0
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +28 -25
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +149 -118
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  19. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  20. package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
  21. package/themes/business/src/components/LoginForm/index.tsx +15 -22
  22. package/themes/business/src/components/MapView/index.tsx +10 -10
  23. package/themes/business/src/components/MessagesOption/index.tsx +20 -93
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +128 -96
  25. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +102 -40
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +70 -67
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  32. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  33. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  34. package/themes/business/src/components/OrdersOption/index.tsx +20 -22
  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 +17 -12
  38. package/themes/business/src/components/PreviousOrders/OrderList.tsx +88 -0
  39. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  40. package/themes/business/src/components/PreviousOrders/index.tsx +139 -174
  41. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  42. package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
  43. package/themes/business/src/components/StoresList/index.tsx +3 -4
  44. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  45. package/themes/business/src/components/shared/OLink.tsx +9 -2
  46. package/themes/business/src/components/shared/OModal.tsx +16 -9
  47. package/themes/business/src/components/shared/OText.tsx +6 -1
  48. package/themes/business/src/types/index.tsx +25 -10
  49. package/themes/business/src/utils/index.tsx +29 -2
  50. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  52. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  53. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  54. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  55. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
  56. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  57. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  58. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  59. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +1 -1
  62. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  63. package/themes/original/src/components/AddressForm/index.tsx +61 -39
  64. package/themes/original/src/components/AddressList/index.tsx +11 -6
  65. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  66. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  67. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  68. package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
  69. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  70. package/themes/original/src/components/BusinessController/index.tsx +81 -68
  71. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  72. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  73. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  74. package/themes/original/src/components/BusinessInformation/index.tsx +140 -85
  75. package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
  76. package/themes/original/src/components/BusinessListingSearch/index.tsx +348 -340
  77. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  78. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  79. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  80. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  81. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  82. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  83. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -559
  84. package/themes/original/src/components/BusinessProductsListing/styles.tsx +1 -1
  85. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  86. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +70 -39
  87. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
  88. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  89. package/themes/original/src/components/Cart/index.tsx +76 -79
  90. package/themes/original/src/components/CartContent/index.tsx +112 -19
  91. package/themes/original/src/components/CartContent/styles.tsx +16 -6
  92. package/themes/original/src/components/Checkout/index.tsx +294 -56
  93. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  94. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  95. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  96. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  97. package/themes/original/src/components/Favorite/index.tsx +2 -6
  98. package/themes/original/src/components/FavoriteList/index.tsx +1 -35
  99. package/themes/original/src/components/FloatingButton/index.tsx +10 -13
  100. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  101. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +7 -3
  102. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
  103. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +19 -6
  104. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  105. package/themes/original/src/components/GoogleMap/index.tsx +60 -5
  106. package/themes/original/src/components/Help/index.tsx +2 -2
  107. package/themes/original/src/components/HelpGuide/index.tsx +2 -2
  108. package/themes/original/src/components/HelpGuide/styles.tsx +1 -0
  109. package/themes/original/src/components/Home/index.tsx +13 -4
  110. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  111. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
  112. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  113. package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
  114. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  115. package/themes/original/src/components/Messages/index.tsx +14 -7
  116. package/themes/original/src/components/MomentOption/index.tsx +193 -90
  117. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  118. package/themes/original/src/components/MultiCart/index.tsx +41 -54
  119. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -50
  120. package/themes/original/src/components/MultiCheckout/index.tsx +329 -100
  121. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  122. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  123. package/themes/original/src/components/MultiOrdersDetails/index.tsx +54 -21
  124. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  125. package/themes/original/src/components/MyOrders/index.tsx +37 -24
  126. package/themes/original/src/components/NavBar/index.tsx +20 -12
  127. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  128. package/themes/original/src/components/Notifications/styles.tsx +1 -5
  129. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  130. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
  131. package/themes/original/src/components/OrderDetails/index.tsx +139 -306
  132. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  133. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  134. package/themes/original/src/components/OrderProgress/index.tsx +33 -57
  135. package/themes/original/src/components/OrderSummary/index.tsx +83 -57
  136. package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
  137. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  138. package/themes/original/src/components/OrdersOption/index.tsx +61 -81
  139. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  140. package/themes/original/src/components/PageBanner/index.tsx +98 -38
  141. package/themes/original/src/components/PageBanner/styles.tsx +0 -10
  142. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  143. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  144. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  145. package/themes/original/src/components/PaymentOptions/index.tsx +95 -33
  146. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  147. package/themes/original/src/components/ProductForm/index.tsx +103 -40
  148. package/themes/original/src/components/ProductForm/styles.tsx +3 -3
  149. package/themes/original/src/components/ProductItemAccordion/index.tsx +8 -6
  150. package/themes/original/src/components/ProductOptionSubOption/index.tsx +50 -21
  151. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -9
  152. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  153. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  154. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  155. package/themes/original/src/components/Promotions/index.tsx +2 -2
  156. package/themes/original/src/components/Promotions/styles.tsx +3 -1
  157. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  158. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  159. package/themes/original/src/components/ServiceForm/index.tsx +63 -20
  160. package/themes/original/src/components/Sessions/index.tsx +11 -8
  161. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  162. package/themes/original/src/components/SignupForm/index.tsx +43 -27
  163. package/themes/original/src/components/SingleOrderCard/index.tsx +102 -63
  164. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  165. package/themes/original/src/components/SingleProductCard/index.tsx +72 -31
  166. package/themes/original/src/components/SingleProductCard/styles.tsx +20 -4
  167. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  168. package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
  169. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  170. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  171. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  172. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  173. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  174. package/themes/original/src/components/UserFormDetails/index.tsx +78 -9
  175. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  176. package/themes/original/src/components/UserProfile/index.tsx +87 -76
  177. package/themes/original/src/components/UserProfileForm/index.tsx +10 -3
  178. package/themes/original/src/components/UserProfileForm/styles.tsx +1 -1
  179. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  180. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  181. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  182. package/themes/original/src/components/Wallets/index.tsx +56 -33
  183. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  184. package/themes/original/src/components/shared/OButton.tsx +6 -2
  185. package/themes/original/src/components/shared/OInput.tsx +6 -1
  186. package/themes/original/src/components/shared/OModal.tsx +3 -3
  187. package/themes/original/src/types/index.tsx +39 -10
  188. package/themes/original/src/utils/index.tsx +386 -1
  189. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  190. package/src/navigators/BottomNavigator.tsx +0 -117
  191. package/src/navigators/CheckoutNavigator.tsx +0 -66
  192. package/src/navigators/HomeNavigator.tsx +0 -202
  193. package/src/navigators/NavigationRef.tsx +0 -7
  194. package/src/navigators/RootNavigator.tsx +0 -269
  195. package/src/pages/Account.tsx +0 -34
  196. package/src/pages/AddressForm.tsx +0 -62
  197. package/src/pages/AddressList.tsx +0 -24
  198. package/src/pages/BusinessProductsList.tsx +0 -81
  199. package/src/pages/BusinessesListing.tsx +0 -43
  200. package/src/pages/CartList.tsx +0 -49
  201. package/src/pages/Checkout.tsx +0 -101
  202. package/src/pages/ForgotPassword.tsx +0 -24
  203. package/src/pages/Help.tsx +0 -23
  204. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  205. package/src/pages/HelpGuide.tsx +0 -23
  206. package/src/pages/HelpOrder.tsx +0 -23
  207. package/src/pages/Home.tsx +0 -36
  208. package/src/pages/IntroductoryTutorial.tsx +0 -170
  209. package/src/pages/Login.tsx +0 -47
  210. package/src/pages/MomentOption.tsx +0 -30
  211. package/src/pages/MultiCheckout.tsx +0 -31
  212. package/src/pages/MultiOrdersDetails.tsx +0 -27
  213. package/src/pages/MyOrders.tsx +0 -40
  214. package/src/pages/NetworkError.tsx +0 -24
  215. package/src/pages/NotFound.tsx +0 -22
  216. package/src/pages/OrderDetails.tsx +0 -25
  217. package/src/pages/ProductDetails.tsx +0 -55
  218. package/src/pages/Profile.tsx +0 -36
  219. package/src/pages/ReviewDriver.tsx +0 -30
  220. package/src/pages/ReviewOrder.tsx +0 -32
  221. package/src/pages/ReviewProducts.tsx +0 -30
  222. package/src/pages/Sessions.tsx +0 -22
  223. package/src/pages/Signup.tsx +0 -53
  224. package/src/pages/SpinnerLoader.tsx +0 -10
  225. package/src/pages/Splash.tsx +0 -21
@@ -1,11 +1,11 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { StyleSheet, View, TouchableOpacity, Linking, Pressable } from 'react-native';
2
+ import { StyleSheet, View, TouchableOpacity, Linking, Pressable, Image } from 'react-native';
3
3
  import FastImage from 'react-native-fast-image'
4
4
  import { useUtils, useOrder, useLanguage } from 'ordering-components/native';
5
5
  import { useTheme } from 'styled-components/native';
6
6
  import { OIcon, OText, OModal } from '../shared';
7
7
  import { BusinessBasicInformationParams } from '../../types';
8
- import { convertHoursToMinutes, shape } from '../../utils';
8
+ import { convertHoursToMinutes, lightenDarkenColor, shape } from '../../utils';
9
9
  import MaterialComIcon from 'react-native-vector-icons/MaterialCommunityIcons'
10
10
  import dayjs from 'dayjs';
11
11
  import timezone from 'dayjs/plugin/timezone';
@@ -21,7 +21,6 @@ import {
21
21
  BusinessInfo,
22
22
  BusinessInfoItem,
23
23
  WrapReviews,
24
- WrapBusinessInfo,
25
24
  TitleWrapper,
26
25
  RibbonBox,
27
26
  SocialListWrapper
@@ -46,15 +45,24 @@ export const BusinessBasicInformation = (
46
45
  const [openBusinessReviews, setOpenBusinessReviews] = useState(false);
47
46
  const [businessInformationObtained, setBusinessInformationObtained] = useState(false)
48
47
  const [businessReviewsObtained, setBusinessReviewsObtainedbtained] = useState(false)
49
- const isChewLayout = theme?.header?.components?.layout?.type === 'chew'
50
- const showLogo = !theme?.business_view?.components?.header?.components?.business?.components?.logo?.hidden
48
+ const [imageRealSize, setImageRealSize] = useState({ width: 16, height: 9, loading: true })
49
+ const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
50
+ const hideLogo = theme?.business_view?.components?.header?.components?.business?.components?.logo?.hidden
51
+ const hideDeliveryFee = theme?.business_view?.components?.header?.components?.business?.components?.fee?.hidden
52
+ const hideTime = theme?.business_view?.components?.header?.components?.business?.components?.time?.hidden
53
+ const hideReviews = theme?.business_view?.components?.header?.components?.business?.components?.reviews?.hidden
54
+ const hideReviewsPopup = theme?.business_view?.components?.header?.components?.reviews?.hidden
55
+ const hideDistance = theme?.business_view?.components?.header?.components?.business?.components?.distance?.hidden
56
+ const hideInfoIcon = theme?.business_view?.components?.header?.components?.business?.components?.business_info?.hidden
57
+ const hideCity = theme?.business_view?.components?.header?.components?.business?.components?.city?.hidden
58
+ const hideHeader = theme?.business_view?.components?.header?.hidden
51
59
 
52
60
  const styles = StyleSheet.create({
53
61
  businesInfoheaderStyle: {
54
62
  height: 150,
55
63
  },
56
64
  headerStyle: {
57
- height: isChewLayout ? 170 : 260,
65
+ aspectRatio: imageRealSize?.width / imageRealSize?.height
58
66
  },
59
67
  logoStyle: {
60
68
  width: 72,
@@ -93,11 +101,11 @@ export const BusinessBasicInformation = (
93
101
  borderRadius: 3,
94
102
  borderColor: theme.colors.border,
95
103
  borderWidth: isChewLayout ? 0 : 1,
96
- width: 20,
97
- height: 20,
104
+ width: 30,
105
+ height: 30,
98
106
  justifyContent: 'center',
99
107
  alignItems: 'center',
100
- marginRight: 5,
108
+ marginRight: 10,
101
109
  marginBottom: 7
102
110
  },
103
111
  tiktokIcon: {
@@ -138,7 +146,7 @@ export const BusinessBasicInformation = (
138
146
  }
139
147
 
140
148
  const getBusinessType = () => {
141
- if (Object.keys(business).length <= 0) return t('GENERAL', 'General');
149
+ if (Object.keys(business || {}).length <= 0) return t('GENERAL', 'General');
142
150
  const _types: any = [];
143
151
  types.forEach(
144
152
  (type) =>
@@ -158,7 +166,7 @@ export const BusinessBasicInformation = (
158
166
  <MaterialComIcon
159
167
  name={iconTitle}
160
168
  color={isChewLayout ? theme.colors.black : theme.colors.textNormal}
161
- size={isChewLayout ? 18 : 14}
169
+ size={isChewLayout ? 25 : 22}
162
170
  />
163
171
  </TouchableOpacity>
164
172
  )
@@ -188,6 +196,20 @@ export const BusinessBasicInformation = (
188
196
  }
189
197
  }, [businessState?.business])
190
198
 
199
+ useEffect(() => {
200
+ const bannerImage = header || businessState?.business?.header
201
+ if (!bannerImage) {
202
+ setImageRealSize({ width: 16, height: 9, loading: false })
203
+ return
204
+ }
205
+ Image.getSize(bannerImage, (width: number, height: number) => {
206
+ setImageRealSize({ width: width, height: height, loading: false });
207
+ }, (error: any) => {
208
+ setImageRealSize({ ...imageRealSize, loading: false });
209
+ console.log(error);
210
+ });
211
+ }, [header, businessState?.business?.header])
212
+
191
213
  const SocialIcons = () => {
192
214
  return (
193
215
  <>
@@ -249,9 +271,9 @@ export const BusinessBasicInformation = (
249
271
  iconTitle='snapchat'
250
272
  />
251
273
  )}
252
- {isChewLayout && (
274
+ {isChewLayout && !hideInfoIcon && (
253
275
  <TouchableOpacity onPress={() => handleClickBusinessInformation()}>
254
- <OText
276
+ <OText
255
277
  color={theme.colors.primary}
256
278
  style={{ textDecorationColor: theme.colors.primary, textDecorationLine: 'underline' }}
257
279
  size={12}
@@ -267,61 +289,68 @@ export const BusinessBasicInformation = (
267
289
  }
268
290
 
269
291
  return (
270
- <BusinessContainer isChewLayout={isChewLayout && !showLogo}>
271
- <BusinessHeader
272
- isChewLayout={isChewLayout}
273
- style={
274
- isBusinessInfoShow
275
- ? styles.businesInfoheaderStyle
276
- : { ...styles.headerStyle, backgroundColor: theme.colors.backgroundGray }
277
- }
278
- {...(!loading && {
279
- source: (header || businessState?.business?.header) ? {
280
- uri: header || optimizeImage(businessState?.business?.header, 'h_250,c_limit')
281
- } : theme?.images?.dummies?.businessHeader
282
- })}
283
- imageStyle={{ opacity: isChewLayout ? 0.5 : 1 }}
284
- >
285
- {!isBusinessInfoShow && !isChewLayout && (
286
- <WrapBusinessInfo onPress={() => handleClickBusinessInformation()}>
287
- <OIcon src={theme.images.general.info} width={24} />
288
- </WrapBusinessInfo>
289
- )}
290
- {isChewLayout && !loading && (
291
- <View style={styles.headerChewStyle}>
292
- <OText size={24} weight={'600'} mBottom={-5}>
293
- {business?.name}
294
- </OText>
295
- {business?.city?.name && (
296
- <OText>
297
- {business?.city?.name}
292
+ <BusinessContainer isChewLayout={isChewLayout && hideLogo}>
293
+ {!hideHeader && (
294
+ <BusinessHeader
295
+ isChewLayout={isChewLayout}
296
+ style={
297
+ isBusinessInfoShow
298
+ ? styles.businesInfoheaderStyle
299
+ : { ...styles.headerStyle, backgroundColor: theme.colors.backgroundGray }
300
+ }
301
+ {...(!loading && !imageRealSize?.loading && {
302
+ source: (header || businessState?.business?.header || typeof theme?.images?.dummies?.businessHeader === 'string') ? {
303
+ uri: optimizeImage(businessState?.business?.header, 'h_250,c_limit') || header || theme?.images?.dummies?.businessHeader
304
+ } : theme?.images?.dummies?.businessHeader
305
+ })}
306
+ imageStyle={{ opacity: isChewLayout ? 0.5 : 1 }}
307
+ >
308
+ {isChewLayout && !loading && (
309
+ <View style={styles.headerChewStyle}>
310
+ <OText size={24} weight={'600'} mBottom={-5}>
311
+ {business?.name}
298
312
  </OText>
299
- )}
300
- <View style={styles.socialIconsChewContainer}>
301
- <SocialIcons />
313
+ {business?.city?.name && !hideCity && (
314
+ <OText>
315
+ {business?.city?.name}
316
+ </OText>
317
+ )}
318
+ <View style={styles.socialIconsChewContainer}>
319
+ <SocialIcons />
320
+ </View>
302
321
  </View>
303
- </View>
304
- )}
305
- </BusinessHeader>
322
+ )}
323
+ </BusinessHeader>
324
+ )}
306
325
  <BusinessInfo style={styles.businessInfo}>
307
- {showLogo && (
326
+ {!hideLogo && (
308
327
  <BusinessLogo isChewLayout={isChewLayout}>
309
328
  {!isBusinessInfoShow && (
310
- logo || businessState?.business?.logo ?
311
- <FastImage
312
- style={styles.logoStyle}
313
- source={{
314
- uri: logo || optimizeImage(businessState?.business?.logo, 'h_70,c_limit'),
315
- priority: FastImage.priority.high,
316
- cache: FastImage.cacheControl.web
317
- }}
318
- resizeMode={FastImage.resizeMode.contain}
319
- />
320
- :
321
- <OIcon
322
- src={theme?.images?.dummies?.businessLogo}
323
- style={styles.logoStyle}
324
- />
329
+ <>
330
+ {loading ? (
331
+ <View style={styles.logoStyle}>
332
+ <Placeholder Animation={Fade}>
333
+ <PlaceholderLine height={72} style={{ borderRadius: 8 }} />
334
+ </Placeholder>
335
+ </View>
336
+ ) : (
337
+ logo || businessState?.business?.logo || typeof theme.images.dummies.businessLogo === 'string' ?
338
+ <FastImage
339
+ style={styles.logoStyle}
340
+ source={{
341
+ uri: logo || optimizeImage(businessState?.business?.logo, 'h_70,c_limit') || theme.images.dummies.businessLogo,
342
+ priority: FastImage.priority.high,
343
+ cache: FastImage.cacheControl.web
344
+ }}
345
+ resizeMode={FastImage.resizeMode.contain}
346
+ />
347
+ :
348
+ <OIcon
349
+ src={theme?.images?.dummies?.businessLogo}
350
+ style={styles.logoStyle}
351
+ />
352
+ )}
353
+ </>
325
354
  )}
326
355
  </BusinessLogo>
327
356
  )}
@@ -341,13 +370,15 @@ export const BusinessBasicInformation = (
341
370
  {business?.ribbon?.enabled && (
342
371
  <RibbonBox
343
372
  bgColor={business?.ribbon?.color}
373
+ colorText={lightenDarkenColor(business?.ribbon?.color)}
374
+ borderRibbon={lightenDarkenColor(business?.ribbon?.color)}
344
375
  isRoundRect={business?.ribbon?.shape === shape?.rectangleRound}
345
376
  isCapsule={business?.ribbon?.shape === shape?.capsuleShape}
346
377
  >
347
378
  <OText
348
379
  size={10}
349
380
  weight={'400'}
350
- color={theme.colors.white}
381
+ color={lightenDarkenColor(business?.ribbon?.color) ? theme.colors.black : theme.colors.white}
351
382
  numberOfLines={2}
352
383
  ellipsizeMode='tail'
353
384
  lineHeight={13}
@@ -384,34 +415,43 @@ export const BusinessBasicInformation = (
384
415
  </Placeholder>
385
416
  )}
386
417
  <View style={styles.bullet}>
387
- <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
388
- {`${t('DELIVERY_FEE', 'Delivery fee')} ${business && parsePrice(business?.delivery_price || 0)} \u2022 `}
389
- </OText>
390
- {orderState?.options?.type === 1 ? (
418
+ {!hideDeliveryFee && (
391
419
  <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
392
- {convertHoursToMinutes(business?.delivery_time) + ` \u2022 `}
420
+ {`${t('DELIVERY_FEE', 'Delivery fee')} ${business && parsePrice(business?.delivery_price || 0)} \u2022 `}
393
421
  </OText>
394
- ) : (
422
+ )}
423
+ {!hideTime && (
424
+ <>
425
+ {orderState?.options?.type === 1 ? (
426
+ <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
427
+ {convertHoursToMinutes(business?.delivery_time) + ` \u2022 `}
428
+ </OText>
429
+ ) : (
430
+ <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
431
+ {convertHoursToMinutes(business?.pickup_time) + ` \u2022 `}
432
+ </OText>
433
+ )}
434
+ </>
435
+ )}
436
+ {!hideDistance && (
395
437
  <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
396
- {convertHoursToMinutes(business?.pickup_time) + ` \u2022 `}
438
+ {parseDistance(business?.distance || 0) + ` \u2022 `}
397
439
  </OText>
398
440
  )}
399
- <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
400
- {parseDistance(business?.distance || 0) + ` \u2022 `}
401
- </OText>
402
- </View>
403
-
404
- <View style={styles.reviewStyle}>
405
- <OIcon
406
- src={theme.images.general.star}
407
- width={14}
408
- color={theme.colors.textSecondary}
409
- style={{ marginTop: -2, marginEnd: 2 }}
410
- />
411
- <OText size={12} color={theme.colors.textSecondary}>
412
- {business?.reviews?.total}
413
- </OText>
414
441
  </View>
442
+ {!hideReviews && (
443
+ <View style={styles.reviewStyle}>
444
+ <OIcon
445
+ src={theme.images.general.star}
446
+ width={14}
447
+ color={theme.colors.textSecondary}
448
+ style={{ marginTop: -2, marginEnd: 2 }}
449
+ />
450
+ <OText size={12} color={theme.colors.textSecondary}>
451
+ {business?.reviews?.total}
452
+ </OText>
453
+ </View>
454
+ )}
415
455
  </BusinessInfoItem>
416
456
  </View>
417
457
  <WrapReviews>
@@ -420,7 +460,7 @@ export const BusinessBasicInformation = (
420
460
  {isPreOrder && (!business?.professionals || business?.professionals?.length === 0) && (
421
461
  <>
422
462
  <TouchableOpacity onPress={() => navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })}>
423
- <OText
463
+ <OText
424
464
  color={theme.colors.primary}
425
465
  style={{ textDecorationColor: theme.colors.primary, textDecorationLine: 'underline' }}
426
466
  size={12}
@@ -431,15 +471,32 @@ export const BusinessBasicInformation = (
431
471
  <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
432
472
  </>
433
473
  )}
434
- <TouchableOpacity onPress={() => handleClickBusinessReviews()}>
435
- <OText
436
- color={theme.colors.primary}
437
- style={{ textDecorationColor: theme.colors.primary, textDecorationLine: 'underline' }}
438
- size={12}
439
- >
440
- {t('REVIEWS', 'Reviews')}
441
- </OText>
442
- </TouchableOpacity>
474
+ {!hideReviewsPopup && (
475
+ <>
476
+ <TouchableOpacity onPress={() => handleClickBusinessReviews()}>
477
+ <OText
478
+ color={theme.colors.primary}
479
+ style={{ textDecorationColor: theme.colors.primary, textDecorationLine: 'underline' }}
480
+ size={12}
481
+ >
482
+ {t('REVIEWS', 'Reviews')}
483
+ </OText>
484
+ </TouchableOpacity>
485
+ <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
486
+ </>
487
+ )}
488
+
489
+ {!isBusinessInfoShow && !hideInfoIcon && !isChewLayout && (
490
+ <TouchableOpacity onPress={() => handleClickBusinessInformation()}>
491
+ <OText
492
+ color={theme.colors.primary}
493
+ style={{ textDecorationColor: theme.colors.primary, textDecorationLine: 'underline' }}
494
+ size={12}
495
+ >
496
+ {t('INFORMATION', 'Information')}
497
+ </OText>
498
+ </TouchableOpacity>
499
+ )}
443
500
  </>
444
501
  )}
445
502
  </WrapReviews>
@@ -8,9 +8,6 @@ export const BusinessContainer = styled.View`
8
8
  export const BusinessHeader = styled.ImageBackground`
9
9
  width: 100%;
10
10
  position: relative;
11
- max-height: 258px;
12
- height: 258px;
13
- resize-mode: cover;
14
11
  `;
15
12
  export const BusinessLogo = styled.View`
16
13
  position: absolute;
@@ -36,25 +33,18 @@ export const WrapReviews = styled.View`
36
33
  align-items: center;
37
34
  justify-content: flex-start;
38
35
  `;
39
- export const WrapBusinessInfo = styled.TouchableOpacity`
40
- position: absolute;
41
- top: 16px;
42
- end: 39px;
43
- `;
44
36
 
45
37
  export const TitleWrapper = styled.View`
46
38
  width: 100%;
47
- flex-direction: row;
48
- align-items: center;
49
- justify-content: space-between;
39
+ flex-direction: column;
50
40
  `
51
41
 
52
42
  export const RibbonBox = styled.View`
53
- margin-left: 5px;
54
43
  background-color: ${(props: any) => props.theme.colors.primary};
55
44
  padding: 2px 8px;
56
45
  max-width: 180px;
57
46
  align-self: flex-start;
47
+ margin-bottom: 5px;
58
48
 
59
49
  ${(props: any) => props.bgColor && css`
60
50
  background-color: ${props.bgColor};
@@ -67,6 +57,14 @@ export const RibbonBox = styled.View`
67
57
  ${(props: any) => props.isCapsule && css`
68
58
  border-radius: 50px;
69
59
  `}
60
+
61
+ ${(props: any) => props.colorText && css`
62
+ color: ${props.colorText ? 'black' : 'white'};
63
+ `}
64
+
65
+ ${(props: any) => props.borderRibbon && css`
66
+ border: 1px solid ${props.borderRibbon ? 'black' : 'white'};
67
+ `}
70
68
  `
71
69
 
72
70
  export const SocialListWrapper = styled.ScrollView`
@@ -11,10 +11,11 @@ import {
11
11
  ToastType
12
12
  } from 'ordering-components/native';
13
13
  import { OIcon, OText } from '../shared';
14
- import { Dimensions, StyleSheet, Vibration, View } from 'react-native';
14
+ import { Dimensions, StyleSheet, View } from 'react-native';
15
15
  import { InView } from 'react-native-intersection-observer'
16
16
  import { BusinessControllerParams } from '../../types';
17
- import { convertHoursToMinutes, shape } from '../../utils';
17
+ import { convertHoursToMinutes, lightenDarkenColor, shape } from '../../utils';
18
+ import ReactNativeHapticFeedback from "react-native-haptic-feedback";
18
19
 
19
20
  import {
20
21
  BusinessHero,
@@ -41,7 +42,6 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
41
42
  navigation,
42
43
  isBusinessOpen,
43
44
  style,
44
- isCustomLayout,
45
45
  businessHeader,
46
46
  businessFeatured,
47
47
  businessLogo,
@@ -65,7 +65,17 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
65
65
  const windowHeight = Dimensions.get('window').height
66
66
  const [isIntersectionObserver, setIsIntersectionObserver] = useState(!enableIntersection)
67
67
 
68
- const textSize = isCustomLayout ? 12 : 10
68
+ const hideBusinessLogo = theme?.business_listing_view?.components?.business?.components?.logo?.hidden
69
+ const hideBusinessFee = theme?.business_listing_view?.components?.business?.components?.fee?.hidden
70
+ const hideBusinessTime = theme?.business_listing_view?.components?.business?.components?.time?.hidden
71
+ const hideBusinessDistance = theme?.business_listing_view?.components?.business?.components?.distance?.hidden
72
+ const hideBusinessReviews = theme?.business_listing_view?.components?.business?.components?.reviews?.hidden
73
+ const hideBusinessFavorite = theme?.business_listing_view?.components?.business?.components?.favorite?.hidden
74
+ const hideBusinessOffer = theme?.business_listing_view?.components?.business?.components?.offer?.hidden
75
+ const hideBusinessHeader = theme?.business_listing_view?.components?.business?.components?.header?.hidden
76
+ const hideBusinessFavoriteBadge = theme?.business_listing_view?.components?.business?.components?.featured_badge?.hidden
77
+
78
+ const textSize = 12
69
79
  const cardHeight = windowHeight * 0.3
70
80
 
71
81
  const styles = StyleSheet.create({
@@ -141,8 +151,16 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
141
151
  return _types.join(', ');
142
152
  };
143
153
 
154
+ const vibrateApp = (impact?: string) => {
155
+ const options = {
156
+ enableVibrateFallback: true,
157
+ ignoreAndroidSystemSettings: false
158
+ };
159
+ ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
160
+ }
161
+
144
162
  const handleBusinessClick = (selectedBusiness: any) => {
145
- Vibration.vibrate()
163
+ vibrateApp()
146
164
  if (business?.open) handleClick && handleClick(selectedBusiness)
147
165
  else {
148
166
  if (configState?.configs?.preorder_status_enabled?.value === '1') {
@@ -175,13 +193,15 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
175
193
  {business?.ribbon?.enabled && (
176
194
  <RibbonBox
177
195
  bgColor={business?.ribbon?.color}
196
+ colorText={lightenDarkenColor(business?.ribbon?.color)}
197
+ borderRibbon={lightenDarkenColor(business?.ribbon?.color)}
178
198
  isRoundRect={business?.ribbon?.shape === shape?.rectangleRound}
179
199
  isCapsule={business?.ribbon?.shape === shape?.capsuleShape}
180
200
  >
181
201
  <OText
182
202
  size={10}
183
203
  weight={'400'}
184
- color={theme.colors.white}
204
+ color={lightenDarkenColor(business?.ribbon?.color) ? theme.colors.black : theme.colors.white}
185
205
  numberOfLines={2}
186
206
  ellipsizeMode='tail'
187
207
  lineHeight={13}
@@ -191,32 +211,38 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
191
211
  </RibbonBox>
192
212
  )}
193
213
  <BusinessHero>
194
- <FastImage
195
- style={{ height: isCustomLayout ? cardHeight * 0.66 : 120 }}
196
- source={(businessHeader || business?.header) ? {
197
- uri: optimizeImage(businessHeader || business?.header, 'h_500,c_limit'),
198
- priority: FastImage.priority.normal,
199
- } : theme.images.dummies.businessHeader}
200
- resizeMode={FastImage.resizeMode.cover}
201
- />
202
- {(businessFeatured ?? business?.featured) && (
214
+ {!hideBusinessHeader && (
215
+ <FastImage
216
+ style={{ height: cardHeight * 0.66 }}
217
+ source={(businessHeader || business?.header || typeof theme.images.dummies.businessHeader === 'string') ? {
218
+ uri: optimizeImage(businessHeader || business?.header || theme.images.dummies.businessHeader, 'h_500,c_limit'),
219
+ priority: FastImage.priority.normal,
220
+ } : theme.images.dummies.businessHeader}
221
+ resizeMode={FastImage.resizeMode.cover}
222
+ />
223
+ )}
224
+ {(businessFeatured ?? business?.featured) && !hideBusinessFavoriteBadge && (
203
225
  <View style={styles.featured}>
204
226
  <FontAwesomeIcon name="crown" size={26} color="gold" />
205
227
  </View>
206
228
  )}
207
- {(!isCustomLayout) && (
229
+ {!hideBusinessOffer && (
208
230
  getBusinessOffer((business?.offers)) &&
209
- <OfferBox>
231
+ <OfferBox
232
+ isClosed={!isBusinessOpen && (configState?.configs?.preorder_status_enabled?.value === '1')}
233
+ isRibbon={business?.ribbon?.enabled && !!business?.ribbon?.text}
234
+ >
210
235
  <OText
211
236
  size={10}
212
237
  weight={'400'}
238
+ color={theme.colors.textThird}
213
239
  numberOfLines={2}
214
240
  ellipsizeMode='tail'
215
241
  lineHeight={13}
216
242
  >{getBusinessOffer((business?.offers)) || parsePrice(0)}</OText>
217
243
  </OfferBox>
218
244
  )}
219
- <BusinessState>
245
+ <BusinessState isRibbon={business?.ribbon?.enabled && !!business?.ribbon?.text}>
220
246
  {!isBusinessOpen && (configState?.configs?.preorder_status_enabled?.value === '1') && (
221
247
  <View style={styles.businessStateView}>
222
248
  <OText
@@ -230,49 +256,30 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
230
256
  </BusinessState>
231
257
  </BusinessHero>
232
258
  <BusinessContent>
233
- <BusinessInfo style={isCustomLayout && { position: 'absolute', bottom: 85, left: 15 }}>
234
- <BusinessLogo style={styles.businessLogo}>
235
- <FastImage
236
- style={{ width: 56, height: 56 }}
237
- source={(businessLogo || business?.logo) ? {
238
- uri: optimizeImage(businessLogo || business?.logo, 'h_150,c_limit'),
239
- priority: FastImage.priority.normal,
240
- } : theme.images.dummies.businessLogo}
241
- resizeMode={FastImage.resizeMode.cover}
242
- />
243
- </BusinessLogo>
244
- {!isCustomLayout && (
245
- <ReviewAndFavorite>
246
- {(businessReviews?.reviews?.total > 0 ?? business?.reviews?.total > 0) && (
247
- <Reviews>
248
- <OIcon src={theme.images.general.star} width={12} style={styles.starIcon} />
249
- <OText size={10} style={{ lineHeight: 15 }}>
250
- {parseNumber(businessReviews?.reviews?.total ?? business?.reviews?.total, { separator: '.' })}
251
- </OText>
252
- </Reviews>
253
- )}
254
- <LottieAnimation
255
- type='favorite'
256
- onClick={handleChangeFavorite}
257
- initialValue={business?.favorite ? 0.75 : 0}
258
- toValue={business?.favorite ? 0 : 0.75}
259
- disableAnimation={!auth}
260
- iconProps={{ color: theme.colors.danger5, size: 18 }}
261
- isActive={business?.favorite}
259
+ <BusinessInfo style={{ position: 'absolute', bottom: 85, left: 15 }}>
260
+ {!hideBusinessLogo && (
261
+ <BusinessLogo style={styles.businessLogo}>
262
+ <FastImage
263
+ style={{ width: 56, height: 56 }}
264
+ source={(businessLogo || business?.logo || typeof theme.images.dummies.businessLogo === 'string') ? {
265
+ uri: optimizeImage(businessLogo || business?.logo || theme.images.dummies.businessLogo, 'h_150,c_limit'),
266
+ priority: FastImage.priority.normal,
267
+ } : theme.images.dummies.businessLogo}
268
+ resizeMode={FastImage.resizeMode.cover}
262
269
  />
263
- </ReviewAndFavorite>
270
+ </BusinessLogo>
264
271
  )}
265
272
  </BusinessInfo>
266
- <View style={isCustomLayout && { width: '100%', flexDirection: 'row', justifyContent: 'space-between', marginTop: 5 }}>
273
+ <View style={{ width: '100%', flexDirection: 'row', justifyContent: 'space-between', marginTop: 5 }}>
267
274
  <OText
268
275
  size={textSize + 2}
269
276
  style={{ lineHeight: 18, marginBottom: 6 }}
270
277
  weight={'500'}>
271
278
  {business?.name}
272
279
  </OText>
273
- {isCustomLayout && (
280
+ {(!hideBusinessFavorite || !hideBusinessReviews) && (
274
281
  <ReviewAndFavorite>
275
- {(businessReviews?.reviews?.total > 0 ?? business?.reviews?.total > 0) && (
282
+ {(businessReviews?.reviews?.total > 0 ?? business?.reviews?.total > 0) && !hideBusinessReviews && (
276
283
  <Reviews>
277
284
  <OIcon src={theme.images.general.star} width={12} style={styles.starIcon} />
278
285
  <OText size={10} style={{ lineHeight: 15 }}>
@@ -280,19 +287,21 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
280
287
  </OText>
281
288
  </Reviews>
282
289
  )}
283
- <LottieAnimation
284
- type='favorite'
285
- onClick={handleChangeFavorite}
286
- initialValue={business?.favorite ? 0.75 : 0}
287
- toValue={business?.favorite ? 0 : 0.75}
288
- disableAnimation={!auth}
289
- iconProps={{ color: theme.colors.danger5, size: 18 }}
290
- isActive={business?.favorite}
291
- />
290
+ {!hideBusinessFavorite && (
291
+ <LottieAnimation
292
+ type='favorite'
293
+ onClick={handleChangeFavorite}
294
+ initialValue={business?.favorite ? 0.5 : 0}
295
+ toValue={business?.favorite ? 0 : 0.5}
296
+ disableAnimation={!auth}
297
+ iconProps={{ color: theme.colors.danger5, size: 18 }}
298
+ isActive={business?.favorite}
299
+ />
300
+ )}
292
301
  </ReviewAndFavorite>
293
302
  )}
294
303
  </View>
295
- <OText size={textSize} style={{ lineHeight: 15, marginBottom: 3 }} numberOfLines={isCustomLayout ? 1 : 2}>
304
+ <OText size={textSize} style={{ lineHeight: 15, marginBottom: 3 }} numberOfLines={1}>
296
305
  {business?.address}
297
306
  </OText>
298
307
  <Metadata>
@@ -304,17 +313,21 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
304
313
  </View>
305
314
  ) : (
306
315
  <View style={styles.bullet}>
307
- {orderState?.options?.type === 1 && (
316
+ {orderState?.options?.type === 1 && !hideBusinessFee && (
308
317
  <OText size={textSize} color={theme.colors.textSecondary}>
309
318
  {`${t('DELIVERY_FEE', 'Delivery fee')} ${parsePrice(businessDeliveryPrice ?? business?.delivery_price) + ' \u2022 '}`}
310
319
  </OText>
311
320
  )}
312
- <OText size={textSize} color={theme.colors.textSecondary}>{`${convertHoursToMinutes(
313
- orderState?.options?.type === 1
314
- ? (businessDeliveryTime ?? business?.delivery_time)
315
- : (businessPickupTime ?? business?.pickup_time),
316
- )} \u2022 `}</OText>
317
- <OText size={textSize} color={theme.colors.textSecondary}>{parseDistance(businessDistance ?? business?.distance)}</OText>
321
+ {!hideBusinessTime && (
322
+ <OText size={textSize} color={theme.colors.textSecondary}>{`${convertHoursToMinutes(
323
+ orderState?.options?.type === 1
324
+ ? (businessDeliveryTime ?? business?.delivery_time)
325
+ : (businessPickupTime ?? business?.pickup_time),
326
+ )} \u2022 `}</OText>
327
+ )}
328
+ {!hideBusinessDistance && (
329
+ <OText size={textSize} color={theme.colors.textSecondary}>{parseDistance(businessDistance ?? business?.distance)}</OText>
330
+ )}
318
331
  </View>
319
332
  )}
320
333
  </Metadata>