ordering-ui-react-native 0.17.40 → 0.17.41-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 (1356) hide show
  1. package/README.md +3 -3
  2. package/package.json +163 -163
  3. package/src/AppContainer.tsx +96 -96
  4. package/src/DeliveryApp.tsx +194 -152
  5. package/src/assets/json/order.json +204 -204
  6. package/src/assets/json/orders.json +3591 -3591
  7. package/src/components/Account/index.tsx +200 -200
  8. package/src/components/Account/styles.tsx +21 -21
  9. package/src/components/ActiveOrders/index.tsx +169 -169
  10. package/src/components/ActiveOrders/styles.tsx +45 -45
  11. package/src/components/AddressDetails/index.tsx +74 -74
  12. package/src/components/AddressDetails/styles.tsx +26 -26
  13. package/src/components/AddressForm/index.tsx +750 -750
  14. package/src/components/AddressForm/styles.tsx +29 -29
  15. package/src/components/AddressList/index.tsx +336 -336
  16. package/src/components/AddressList/styles.tsx +20 -20
  17. package/src/components/Analytics/index.tsx +83 -83
  18. package/src/components/AppleLogin/index.tsx +148 -148
  19. package/src/components/AppleLogin/styles.tsx +22 -22
  20. package/src/components/BusinessBasicInformation/index.tsx +251 -251
  21. package/src/components/BusinessBasicInformation/styles.tsx +38 -38
  22. package/src/components/BusinessController/index.tsx +227 -227
  23. package/src/components/BusinessController/styles.tsx +52 -52
  24. package/src/components/BusinessInformation/index.tsx +142 -142
  25. package/src/components/BusinessInformation/styles.tsx +37 -37
  26. package/src/components/BusinessItemAccordion/index.tsx +148 -148
  27. package/src/components/BusinessItemAccordion/styles.tsx +61 -61
  28. package/src/components/BusinessProductsCategories/index.tsx +73 -73
  29. package/src/components/BusinessProductsCategories/styles.tsx +7 -7
  30. package/src/components/BusinessProductsList/index.tsx +149 -149
  31. package/src/components/BusinessProductsList/styles.tsx +13 -13
  32. package/src/components/BusinessProductsListing/index.tsx +318 -318
  33. package/src/components/BusinessProductsListing/styles.tsx +33 -33
  34. package/src/components/BusinessReviews/index.tsx +121 -121
  35. package/src/components/BusinessReviews/styles.tsx +33 -33
  36. package/src/components/BusinessTypeFilter/index.tsx +210 -210
  37. package/src/components/BusinessTypeFilter/styles.tsx +32 -32
  38. package/src/components/BusinessesListing/index.tsx +254 -254
  39. package/src/components/BusinessesListing/styles.tsx +60 -60
  40. package/src/components/Cart/index.tsx +420 -420
  41. package/src/components/Cart/styles.tsx +35 -35
  42. package/src/components/CartContent/index.tsx +50 -50
  43. package/src/components/CartContent/styles.tsx +19 -19
  44. package/src/components/Checkout/index.tsx +851 -851
  45. package/src/components/Checkout/styles.tsx +111 -111
  46. package/src/components/CouponControl/index.tsx +133 -133
  47. package/src/components/CouponControl/styles.tsx +22 -22
  48. package/src/components/DriverTips/index.tsx +158 -158
  49. package/src/components/DriverTips/styles.tsx +62 -62
  50. package/src/components/FacebookLogin/index.tsx +123 -123
  51. package/src/components/FacebookLogin/styles.tsx +23 -23
  52. package/src/components/FacebookPixel/index.tsx +81 -81
  53. package/src/components/FloatingButton/index.tsx +74 -74
  54. package/src/components/FloatingButton/styles.tsx +32 -32
  55. package/src/components/ForgotPasswordForm/index.tsx +150 -150
  56. package/src/components/ForgotPasswordForm/styles.tsx +11 -11
  57. package/src/components/GoogleLogin/index.tsx +133 -133
  58. package/src/components/GoogleLogin/styles.tsx +23 -23
  59. package/src/components/GoogleMap/index.tsx +247 -247
  60. package/src/components/Help/index.tsx +54 -54
  61. package/src/components/Help/styles.tsx +11 -11
  62. package/src/components/HelpAccountAndPayment/index.tsx +67 -67
  63. package/src/components/HelpAccountAndPayment/styles.tsx +6 -6
  64. package/src/components/HelpGuide/index.tsx +66 -66
  65. package/src/components/HelpGuide/styles.tsx +6 -6
  66. package/src/components/HelpOrder/index.tsx +78 -78
  67. package/src/components/HelpOrder/styles.tsx +5 -5
  68. package/src/components/Home/index.tsx +114 -114
  69. package/src/components/Home/styles.tsx +18 -18
  70. package/src/components/LanguageSelector/index.tsx +127 -127
  71. package/src/components/LanguageSelector/styles.tsx +10 -10
  72. package/src/components/LastOrders/index.tsx +104 -104
  73. package/src/components/LastOrders/styles.tsx +17 -17
  74. package/src/components/LoginForm/index.tsx +535 -535
  75. package/src/components/LoginForm/styles.tsx +74 -74
  76. package/src/components/LogoutButton/index.tsx +74 -74
  77. package/src/components/Messages/index.tsx +443 -443
  78. package/src/components/Messages/styles.tsx +24 -24
  79. package/src/components/MomentOption/index.tsx +238 -238
  80. package/src/components/MomentOption/styles.tsx +61 -61
  81. package/src/components/NavBar/index.tsx +122 -122
  82. package/src/components/NotFoundSource/index.tsx +56 -56
  83. package/src/components/NotFoundSource/styles.tsx +16 -16
  84. package/src/components/NotificationSetting/index.tsx +85 -85
  85. package/src/components/OrderCreating/index.tsx +158 -178
  86. package/src/components/OrderCreating/styles.tsx +22 -22
  87. package/src/components/OrderDetails/index.tsx +714 -714
  88. package/src/components/OrderDetails/styles.tsx +128 -128
  89. package/src/components/OrderSuccess/index.tsx +89 -89
  90. package/src/components/OrderSuccess/styles.tsx +22 -22
  91. package/src/components/OrderSummary/index.tsx +351 -351
  92. package/src/components/OrderSummary/styles.tsx +45 -45
  93. package/src/components/OrderTypeSelector/index.tsx +159 -159
  94. package/src/components/OrderTypeSelector/styles.tsx +22 -22
  95. package/src/components/OrdersOption/index.tsx +228 -228
  96. package/src/components/OrdersOption/styles.tsx +5 -5
  97. package/src/components/PaymentOptionCash/index.tsx +102 -102
  98. package/src/components/PaymentOptionCash/styles.tsx +18 -18
  99. package/src/components/PaymentOptionStripe/index.tsx +244 -244
  100. package/src/components/PaymentOptionStripe/styles.tsx +62 -62
  101. package/src/components/PaymentOptions/index.tsx +415 -415
  102. package/src/components/PaymentOptions/styles.tsx +52 -52
  103. package/src/components/PaymentOptionsWebView/index.tsx +172 -151
  104. package/src/components/PhoneInputNumber/index.tsx +111 -111
  105. package/src/components/PhoneInputNumber/styles.tsx +3 -3
  106. package/src/components/PreviousOrders/index.tsx +167 -167
  107. package/src/components/PreviousOrders/styles.tsx +34 -34
  108. package/src/components/ProductForm/index.tsx +442 -442
  109. package/src/components/ProductForm/styles.tsx +85 -85
  110. package/src/components/ProductIngredient/index.tsx +44 -44
  111. package/src/components/ProductIngredient/styles.tsx +7 -7
  112. package/src/components/ProductItemAccordion/index.tsx +315 -315
  113. package/src/components/ProductItemAccordion/styles.tsx +81 -81
  114. package/src/components/ProductOption/index.tsx +49 -49
  115. package/src/components/ProductOption/styles.tsx +14 -14
  116. package/src/components/ProductOptionSubOption/index.tsx +146 -146
  117. package/src/components/ProductOptionSubOption/styles.tsx +33 -33
  118. package/src/components/ReviewDriver/index.tsx +313 -313
  119. package/src/components/ReviewDriver/styles.tsx +38 -38
  120. package/src/components/ReviewOrder/index.tsx +339 -339
  121. package/src/components/ReviewOrder/styles.tsx +44 -44
  122. package/src/components/ReviewProducts/index.tsx +124 -124
  123. package/src/components/ReviewProducts/styles.tsx +16 -16
  124. package/src/components/SearchBar/index.tsx +99 -99
  125. package/src/components/ShareComponent/index.tsx +32 -32
  126. package/src/components/SignupForm/index.tsx +676 -676
  127. package/src/components/SignupForm/styles.tsx +27 -27
  128. package/src/components/SingleProductCard/index.tsx +114 -114
  129. package/src/components/SingleProductCard/styles.tsx +27 -27
  130. package/src/components/SingleProductReview/index.tsx +169 -169
  131. package/src/components/SingleProductReview/styles.tsx +26 -26
  132. package/src/components/StripeCardForm/index.tsx +97 -97
  133. package/src/components/StripeCardForm/naked.tsx +128 -128
  134. package/src/components/StripeCardForm/styles.tsx +27 -27
  135. package/src/components/StripeCardsList/index.tsx +158 -158
  136. package/src/components/StripeElementsForm/index.tsx +233 -233
  137. package/src/components/StripeElementsForm/naked.tsx +90 -90
  138. package/src/components/StripeElementsForm/styles.tsx +9 -9
  139. package/src/components/StripeMethodForm/index.tsx +206 -173
  140. package/src/components/StripeRedirectForm/index.tsx +159 -159
  141. package/src/components/StripeRedirectForm/styles.tsx +23 -23
  142. package/src/components/TaxInformation/index.tsx +83 -83
  143. package/src/components/TaxInformation/styles.tsx +9 -9
  144. package/src/components/UpsellingProducts/index.tsx +167 -167
  145. package/src/components/UpsellingProducts/styles.tsx +31 -31
  146. package/src/components/UserDetails/index.tsx +139 -139
  147. package/src/components/UserDetails/styles.tsx +21 -21
  148. package/src/components/UserFormDetails/index.tsx +302 -302
  149. package/src/components/UserFormDetails/styles.tsx +38 -38
  150. package/src/components/UserProfileForm/index.tsx +197 -197
  151. package/src/components/UserProfileForm/styles.tsx +45 -45
  152. package/src/components/VerifyPhone/index.tsx +255 -255
  153. package/src/components/VerifyPhone/styles.tsx +43 -44
  154. package/src/components/shared/OAlert.tsx +48 -48
  155. package/src/components/shared/OBottomPopup.tsx +74 -74
  156. package/src/components/shared/OButton.tsx +134 -134
  157. package/src/components/shared/ODropDown.tsx +167 -167
  158. package/src/components/shared/OIcon.tsx +55 -55
  159. package/src/components/shared/OIconButton.tsx +134 -134
  160. package/src/components/shared/OInput.tsx +122 -122
  161. package/src/components/shared/OModal.tsx +168 -168
  162. package/src/components/shared/OText.tsx +52 -52
  163. package/src/components/shared/OToast.tsx +94 -94
  164. package/src/components/shared/index.tsx +23 -23
  165. package/src/config/constants.tsx +73 -73
  166. package/src/config.json +16 -16
  167. package/src/context/Theme/index.tsx +25 -25
  168. package/src/hooks/DeviceOrientation.tsx +40 -40
  169. package/src/hooks/useCountdownTimer.tsx +26 -26
  170. package/src/index.tsx +197 -197
  171. package/src/layouts/Container.tsx +27 -27
  172. package/src/layouts/FloatingBottomContainer.tsx +26 -26
  173. package/src/layouts/SafeAreaContainer.tsx +6 -6
  174. package/src/navigators/BottomNavigator.tsx +117 -117
  175. package/src/navigators/CheckoutNavigator.tsx +66 -66
  176. package/src/navigators/HomeNavigator.tsx +202 -202
  177. package/src/navigators/NavigationRef.tsx +7 -7
  178. package/src/navigators/RootNavigator.tsx +269 -269
  179. package/src/pages/Account.tsx +34 -34
  180. package/src/pages/AddressForm.tsx +62 -62
  181. package/src/pages/AddressList.tsx +24 -24
  182. package/src/pages/BusinessProductsList.tsx +81 -81
  183. package/src/pages/BusinessesListing.tsx +43 -43
  184. package/src/pages/CartList.tsx +49 -49
  185. package/src/pages/Checkout.tsx +101 -101
  186. package/src/pages/ForgotPassword.tsx +24 -24
  187. package/src/pages/Help.tsx +23 -23
  188. package/src/pages/HelpAccountAndPayment.tsx +23 -23
  189. package/src/pages/HelpGuide.tsx +23 -23
  190. package/src/pages/HelpOrder.tsx +23 -23
  191. package/src/pages/Home.tsx +36 -36
  192. package/src/pages/IntroductoryTutorial.tsx +170 -170
  193. package/src/pages/Login.tsx +47 -47
  194. package/src/pages/MomentOption.tsx +30 -30
  195. package/src/pages/MultiCheckout.tsx +31 -31
  196. package/src/pages/MultiOrdersDetails.tsx +27 -27
  197. package/src/pages/MyOrders.tsx +40 -40
  198. package/src/pages/NetworkError.tsx +24 -24
  199. package/src/pages/NotFound.tsx +22 -22
  200. package/src/pages/OrderDetails.tsx +25 -25
  201. package/src/pages/ProductDetails.tsx +55 -55
  202. package/src/pages/Profile.tsx +36 -36
  203. package/src/pages/ReviewDriver.tsx +30 -30
  204. package/src/pages/ReviewOrder.tsx +32 -32
  205. package/src/pages/ReviewProducts.tsx +30 -30
  206. package/src/pages/Sessions.tsx +22 -22
  207. package/src/pages/Signup.tsx +53 -53
  208. package/src/pages/SpinnerLoader.tsx +10 -10
  209. package/src/pages/Splash.tsx +21 -21
  210. package/src/providers/AlertProvider.tsx +46 -46
  211. package/src/providers/StoreUtil.tsx +54 -54
  212. package/src/theme.json +135 -135
  213. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -1
  214. package/src/types/@stripe/stripe-react-native/index.d.ts +1 -1
  215. package/src/types/index.tsx +498 -494
  216. package/src/types/ordering-api-sdk/index.d.ts +1 -1
  217. package/src/types/ordering-components/index.d.ts +1 -1
  218. package/src/types/react-hook-form/index.d.ts +1 -1
  219. package/src/types/react-native-background-timer/index.d.ts +1 -1
  220. package/src/types/react-native-color-matrix-image-filters/index.d.ts +1 -1
  221. package/src/types/react-native-country-picker-modal/index.d.ts +1 -1
  222. package/src/types/react-native-credit-card-input/index.d.ts +1 -1
  223. package/src/types/react-native-fbsdk-next/index.d.ts +1 -1
  224. package/src/types/react-native-gesture-handler/index.d.ts +1 -1
  225. package/src/types/react-native-gifted-chat/index.d.ts +1 -1
  226. package/src/types/react-native-image-picker/index.d.ts +1 -1
  227. package/src/types/react-native-restart/index.d.ts +1 -1
  228. package/src/types/styled-components/index.d.ts +1 -1
  229. package/src/utils/index.tsx +462 -456
  230. package/themes/business/.prettierrc.js +9 -9
  231. package/themes/business/index.tsx +133 -131
  232. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +532 -507
  233. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +45 -43
  234. package/themes/business/src/components/BusinessController/index.tsx +155 -156
  235. package/themes/business/src/components/BusinessController/styles.tsx +19 -19
  236. package/themes/business/src/components/Chat/index.tsx +1188 -1176
  237. package/themes/business/src/components/Chat/styles.tsx +15 -15
  238. package/themes/business/src/components/Contacts/index.tsx +299 -299
  239. package/themes/business/src/components/Contacts/styles.tsx +42 -42
  240. package/themes/business/src/components/DriverMap/index.tsx +557 -546
  241. package/themes/business/src/components/DriverSchedule/index.tsx +71 -71
  242. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -6
  243. package/themes/business/src/components/FloatingButton/index.tsx +141 -141
  244. package/themes/business/src/components/FloatingButton/styles.tsx +35 -35
  245. package/themes/business/src/components/ForgotPasswordForm/index.tsx +204 -204
  246. package/themes/business/src/components/ForgotPasswordForm/styles.tsx +11 -11
  247. package/themes/business/src/components/GoogleMap/index.tsx +422 -421
  248. package/themes/business/src/components/Home/index.tsx +184 -184
  249. package/themes/business/src/components/Home/styles.tsx +34 -34
  250. package/themes/business/src/components/LanguageSelector/index.tsx +124 -124
  251. package/themes/business/src/components/LanguageSelector/lang_country.json +152 -152
  252. package/themes/business/src/components/LanguageSelector/styles.tsx +17 -17
  253. package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
  254. package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
  255. package/themes/business/src/components/LoginForm/index.tsx +946 -788
  256. package/themes/business/src/components/LoginForm/styles.tsx +64 -54
  257. package/themes/business/src/components/LogoutButton/index.tsx +63 -63
  258. package/themes/business/src/components/MapView/index.tsx +328 -328
  259. package/themes/business/src/components/MessagesOption/index.tsx +346 -346
  260. package/themes/business/src/components/MessagesOption/styles.tsx +27 -27
  261. package/themes/business/src/components/NetworkError/index.tsx +61 -61
  262. package/themes/business/src/components/NetworkError/styles.tsx +10 -10
  263. package/themes/business/src/components/NewOrderNotification/index.tsx +188 -189
  264. package/themes/business/src/components/NewOrderNotification/styles.tsx +8 -8
  265. package/themes/business/src/components/NotFoundSource/index.tsx +52 -52
  266. package/themes/business/src/components/NotFoundSource/styles.tsx +17 -17
  267. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  268. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +645 -602
  269. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +297 -300
  270. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  271. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  272. package/themes/business/src/components/OrderMessage/index.tsx +345 -344
  273. package/themes/business/src/components/OrderMessage/styles.tsx +5 -5
  274. package/themes/business/src/components/OrderSummary/index.tsx +692 -700
  275. package/themes/business/src/components/OrderSummary/styles.tsx +61 -61
  276. package/themes/business/src/components/OrdersListManager/index.tsx +881 -881
  277. package/themes/business/src/components/OrdersListManager/styles.tsx +123 -123
  278. package/themes/business/src/components/OrdersListManager/utils.tsx +216 -216
  279. package/themes/business/src/components/OrdersOption/index.tsx +1053 -1096
  280. package/themes/business/src/components/OrdersOption/styles.tsx +156 -156
  281. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +65 -65
  282. package/themes/business/src/components/OrdersOptionBusiness/styles.tsx +8 -8
  283. package/themes/business/src/components/OrdersOptionCity/index.tsx +66 -66
  284. package/themes/business/src/components/OrdersOptionCity/styles.tsx +8 -8
  285. package/themes/business/src/components/OrdersOptionDate/index.tsx +66 -66
  286. package/themes/business/src/components/OrdersOptionDate/styles.tsx +8 -8
  287. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +49 -49
  288. package/themes/business/src/components/OrdersOptionDelivery/styles.tsx +8 -8
  289. package/themes/business/src/components/OrdersOptionDriver/index.tsx +64 -64
  290. package/themes/business/src/components/OrdersOptionDriver/styles.tsx +8 -8
  291. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +63 -63
  292. package/themes/business/src/components/OrdersOptionPaymethod/styles.tsx +8 -8
  293. package/themes/business/src/components/OrdersOptionStatus/index.tsx +55 -55
  294. package/themes/business/src/components/OrdersOptionStatus/styles.tsx +8 -8
  295. package/themes/business/src/components/PhoneInputNumber/index.tsx +160 -160
  296. package/themes/business/src/components/PhoneInputNumber/styles.tsx +3 -3
  297. package/themes/business/src/components/PreviousMessages/index.tsx +315 -315
  298. package/themes/business/src/components/PreviousMessages/styles.tsx +32 -32
  299. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  300. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  301. package/themes/business/src/components/PreviousOrders/index.tsx +508 -306
  302. package/themes/business/src/components/PreviousOrders/styles.tsx +73 -45
  303. package/themes/business/src/components/ProductItemAccordion/index.tsx +325 -301
  304. package/themes/business/src/components/ProductItemAccordion/styles.tsx +61 -61
  305. package/themes/business/src/components/ReviewCustomer/index.tsx +344 -327
  306. package/themes/business/src/components/ReviewCustomer/styles.tsx +28 -28
  307. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -53
  308. package/themes/business/src/components/SearchBar/index.tsx +112 -112
  309. package/themes/business/src/components/SignupForm/index.tsx +530 -530
  310. package/themes/business/src/components/SignupForm/styles.tsx +16 -16
  311. package/themes/business/src/components/StoresList/index.tsx +224 -224
  312. package/themes/business/src/components/StoresList/styles.tsx +26 -26
  313. package/themes/business/src/components/UserFormDetails/index.tsx +516 -516
  314. package/themes/business/src/components/UserFormDetails/styles.tsx +40 -40
  315. package/themes/business/src/components/UserProfileForm/index.tsx +520 -520
  316. package/themes/business/src/components/UserProfileForm/styles.tsx +36 -36
  317. package/themes/business/src/components/VerifyPhone/index.tsx +201 -201
  318. package/themes/business/src/components/VerifyPhone/styles.tsx +43 -43
  319. package/themes/business/src/components/shared/OAlert.tsx +52 -52
  320. package/themes/business/src/components/shared/OButton.tsx +148 -148
  321. package/themes/business/src/components/shared/OChatBubble.tsx +100 -100
  322. package/themes/business/src/components/shared/ODropDown.tsx +229 -229
  323. package/themes/business/src/components/shared/ODropDownCalendar.tsx +359 -359
  324. package/themes/business/src/components/shared/OFab.tsx +54 -54
  325. package/themes/business/src/components/shared/OIcon.tsx +67 -67
  326. package/themes/business/src/components/shared/OIconButton.tsx +127 -127
  327. package/themes/business/src/components/shared/OInput.tsx +144 -144
  328. package/themes/business/src/components/shared/OLink.tsx +96 -76
  329. package/themes/business/src/components/shared/OModal.tsx +16 -9
  330. package/themes/business/src/components/shared/OSegment.tsx +86 -86
  331. package/themes/business/src/components/shared/OText.tsx +61 -55
  332. package/themes/business/src/components/shared/OTextarea.tsx +47 -47
  333. package/themes/business/src/components/shared/OToast.tsx +92 -92
  334. package/themes/business/src/components/shared/index.tsx +27 -27
  335. package/themes/business/src/config/constants.tsx +10 -10
  336. package/themes/business/src/hooks/useLocation.tsx +109 -109
  337. package/themes/business/src/layouts/Container.tsx +56 -56
  338. package/themes/business/src/layouts/SafeAreaContainer.tsx +49 -49
  339. package/themes/business/src/providers/AlertProvider.tsx +38 -38
  340. package/themes/business/src/providers/Responsive.tsx +15 -15
  341. package/themes/business/src/providers/StoreUtil.tsx +54 -54
  342. package/themes/business/src/types/@react-navigation/material-bottom-tabs/index.d.ts +1 -1
  343. package/themes/business/src/types/index.tsx +621 -591
  344. package/themes/business/src/types/ordering-api-sdk/index.d.ts +1 -1
  345. package/themes/business/src/types/ordering-components/index.d.ts +1 -1
  346. package/themes/business/src/types/react-hook-form/index.d.ts +1 -1
  347. package/themes/business/src/types/react-native-credit-card-input/index.d.ts +1 -1
  348. package/themes/business/src/types/react-native-fbsdk/index.d.ts +1 -1
  349. package/themes/business/src/types/react-native-gesture-handler/index.d.ts +1 -1
  350. package/themes/business/src/types/react-native-html-to-pdf/index.d.ts +1 -1
  351. package/themes/business/src/types/react-native-loading-spinner-overlay/index.d.ts +1 -1
  352. package/themes/business/src/types/react-native-vector-icons/index.d.ts +5 -5
  353. package/themes/business/src/types/styled-components/index.d.ts +1 -1
  354. package/themes/business/src/types/toggle-switch-react-native/index.d.ts +1 -1
  355. package/themes/business/src/utils/index.tsx +398 -355
  356. package/themes/doordash/index.tsx +103 -103
  357. package/themes/doordash/src/components/ActiveOrders/index.tsx +120 -120
  358. package/themes/doordash/src/components/ActiveOrders/styles.tsx +43 -43
  359. package/themes/doordash/src/components/AddressDetails/index.tsx +72 -72
  360. package/themes/doordash/src/components/AddressDetails/styles.tsx +26 -26
  361. package/themes/doordash/src/components/AddressForm/index.tsx +669 -669
  362. package/themes/doordash/src/components/AddressForm/styles.tsx +38 -38
  363. package/themes/doordash/src/components/AddressList/index.tsx +332 -332
  364. package/themes/doordash/src/components/AddressList/styles.tsx +22 -22
  365. package/themes/doordash/src/components/AppleLogin/index.tsx +130 -130
  366. package/themes/doordash/src/components/AppleLogin/styles.tsx +5 -5
  367. package/themes/doordash/src/components/BusinessBasicInformation/index.tsx +221 -221
  368. package/themes/doordash/src/components/BusinessBasicInformation/styles.tsx +35 -35
  369. package/themes/doordash/src/components/BusinessController/index.tsx +183 -183
  370. package/themes/doordash/src/components/BusinessController/styles.tsx +49 -49
  371. package/themes/doordash/src/components/BusinessInformation/index.tsx +113 -113
  372. package/themes/doordash/src/components/BusinessInformation/styles.tsx +36 -36
  373. package/themes/doordash/src/components/BusinessItemAccordion/index.tsx +126 -126
  374. package/themes/doordash/src/components/BusinessItemAccordion/styles.tsx +62 -62
  375. package/themes/doordash/src/components/BusinessProductsCategories/index.tsx +139 -139
  376. package/themes/doordash/src/components/BusinessProductsCategories/styles.tsx +7 -7
  377. package/themes/doordash/src/components/BusinessProductsList/index.tsx +221 -221
  378. package/themes/doordash/src/components/BusinessProductsList/styles.tsx +13 -13
  379. package/themes/doordash/src/components/BusinessProductsListing/index.tsx +425 -425
  380. package/themes/doordash/src/components/BusinessProductsListing/styles.tsx +61 -61
  381. package/themes/doordash/src/components/BusinessReviews/index.tsx +122 -122
  382. package/themes/doordash/src/components/BusinessReviews/styles.tsx +34 -34
  383. package/themes/doordash/src/components/BusinessTypeFilter/index.tsx +130 -130
  384. package/themes/doordash/src/components/BusinessTypeFilter/styles.tsx +42 -42
  385. package/themes/doordash/src/components/BusinessesListing/index.tsx +304 -304
  386. package/themes/doordash/src/components/BusinessesListing/styles.tsx +68 -68
  387. package/themes/doordash/src/components/BusinessesSortBy/index.tsx +25 -25
  388. package/themes/doordash/src/components/BusinessesSortBy/styles.ts +19 -19
  389. package/themes/doordash/src/components/Cart/index.tsx +333 -333
  390. package/themes/doordash/src/components/Cart/styles.tsx +28 -28
  391. package/themes/doordash/src/components/CartContent/index.tsx +56 -56
  392. package/themes/doordash/src/components/CartContent/styles.tsx +19 -19
  393. package/themes/doordash/src/components/Checkout/index.tsx +643 -643
  394. package/themes/doordash/src/components/Checkout/styles.tsx +95 -95
  395. package/themes/doordash/src/components/CouponControl/index.tsx +122 -122
  396. package/themes/doordash/src/components/CouponControl/styles.tsx +23 -23
  397. package/themes/doordash/src/components/DriverTips/index.tsx +171 -171
  398. package/themes/doordash/src/components/DriverTips/styles.tsx +62 -62
  399. package/themes/doordash/src/components/FacebookLogin/index.tsx +124 -124
  400. package/themes/doordash/src/components/FacebookLogin/styles.tsx +21 -21
  401. package/themes/doordash/src/components/FloatingButton/index.tsx +72 -72
  402. package/themes/doordash/src/components/FloatingButton/styles.tsx +28 -28
  403. package/themes/doordash/src/components/ForgotPasswordForm/index.tsx +151 -151
  404. package/themes/doordash/src/components/ForgotPasswordForm/styles.tsx +17 -17
  405. package/themes/doordash/src/components/GoogleLogin/index.tsx +117 -117
  406. package/themes/doordash/src/components/GoogleLogin/styles.tsx +21 -21
  407. package/themes/doordash/src/components/GoogleMap/index.tsx +233 -233
  408. package/themes/doordash/src/components/Help/index.tsx +54 -54
  409. package/themes/doordash/src/components/Help/styles.tsx +11 -11
  410. package/themes/doordash/src/components/HelpAccountAndPayment/index.tsx +67 -67
  411. package/themes/doordash/src/components/HelpAccountAndPayment/styles.tsx +6 -6
  412. package/themes/doordash/src/components/HelpGuide/index.tsx +66 -66
  413. package/themes/doordash/src/components/HelpGuide/styles.tsx +6 -6
  414. package/themes/doordash/src/components/HelpOrder/index.tsx +78 -78
  415. package/themes/doordash/src/components/HelpOrder/styles.tsx +5 -5
  416. package/themes/doordash/src/components/Home/index.tsx +211 -211
  417. package/themes/doordash/src/components/Home/styles.tsx +21 -21
  418. package/themes/doordash/src/components/LanguageSelector/index.tsx +109 -109
  419. package/themes/doordash/src/components/LanguageSelector/styles.tsx +7 -7
  420. package/themes/doordash/src/components/LastOrders/index.tsx +102 -102
  421. package/themes/doordash/src/components/LastOrders/styles.tsx +17 -17
  422. package/themes/doordash/src/components/LoginForm/index.tsx +514 -515
  423. package/themes/doordash/src/components/LoginForm/styles.tsx +78 -78
  424. package/themes/doordash/src/components/LogoutButton/index.tsx +57 -57
  425. package/themes/doordash/src/components/Messages/index.tsx +461 -461
  426. package/themes/doordash/src/components/Messages/styles.tsx +24 -24
  427. package/themes/doordash/src/components/MomentOption/index.tsx +237 -237
  428. package/themes/doordash/src/components/MomentOption/styles.tsx +62 -62
  429. package/themes/doordash/src/components/NavBar/index.tsx +125 -125
  430. package/themes/doordash/src/components/NotFoundSource/index.tsx +51 -51
  431. package/themes/doordash/src/components/NotFoundSource/styles.tsx +16 -16
  432. package/themes/doordash/src/components/OrderDetails/index.tsx +491 -491
  433. package/themes/doordash/src/components/OrderDetails/styles.tsx +128 -128
  434. package/themes/doordash/src/components/OrderSummary/index.tsx +318 -318
  435. package/themes/doordash/src/components/OrderSummary/styles.tsx +37 -37
  436. package/themes/doordash/src/components/OrderTypeSelector/index.tsx +122 -122
  437. package/themes/doordash/src/components/OrderTypeSelector/styles.tsx +6 -6
  438. package/themes/doordash/src/components/OrdersOption/index.tsx +225 -225
  439. package/themes/doordash/src/components/OrdersOption/styles.tsx +4 -4
  440. package/themes/doordash/src/components/PaymentOptionCash/index.tsx +102 -102
  441. package/themes/doordash/src/components/PaymentOptionCash/styles.tsx +18 -18
  442. package/themes/doordash/src/components/PaymentOptionStripe/index.tsx +232 -232
  443. package/themes/doordash/src/components/PaymentOptionStripe/styles.tsx +73 -73
  444. package/themes/doordash/src/components/PaymentOptions/index.tsx +511 -511
  445. package/themes/doordash/src/components/PaymentOptions/styles.tsx +51 -51
  446. package/themes/doordash/src/components/PaypalPaymethod/index.tsx +38 -38
  447. package/themes/doordash/src/components/PhoneInputNumber/index.tsx +113 -113
  448. package/themes/doordash/src/components/PhoneInputNumber/styles.tsx +5 -5
  449. package/themes/doordash/src/components/PreviousOrders/index.tsx +135 -135
  450. package/themes/doordash/src/components/PreviousOrders/styles.tsx +36 -36
  451. package/themes/doordash/src/components/ProductForm/index.tsx +439 -439
  452. package/themes/doordash/src/components/ProductForm/styles.tsx +76 -76
  453. package/themes/doordash/src/components/ProductIngredient/index.tsx +44 -44
  454. package/themes/doordash/src/components/ProductIngredient/styles.tsx +7 -7
  455. package/themes/doordash/src/components/ProductItemAccordion/index.tsx +294 -294
  456. package/themes/doordash/src/components/ProductItemAccordion/styles.tsx +56 -56
  457. package/themes/doordash/src/components/ProductOption/index.tsx +55 -55
  458. package/themes/doordash/src/components/ProductOption/styles.tsx +13 -13
  459. package/themes/doordash/src/components/ProductOptionSubOption/index.tsx +137 -137
  460. package/themes/doordash/src/components/ProductOptionSubOption/styles.tsx +34 -34
  461. package/themes/doordash/src/components/ReviewOrder/index.tsx +202 -202
  462. package/themes/doordash/src/components/ReviewOrder/styles.tsx +36 -36
  463. package/themes/doordash/src/components/SearchBar/index.tsx +105 -105
  464. package/themes/doordash/src/components/SignupForm/index.tsx +580 -580
  465. package/themes/doordash/src/components/SignupForm/styles.tsx +32 -32
  466. package/themes/doordash/src/components/SingleProductCard/index.tsx +96 -96
  467. package/themes/doordash/src/components/SingleProductCard/styles.tsx +22 -22
  468. package/themes/doordash/src/components/SocialShare/index.tsx +160 -160
  469. package/themes/doordash/src/components/SocialShare/styles.ts +20 -20
  470. package/themes/doordash/src/components/StripeCardForm/index.tsx +97 -97
  471. package/themes/doordash/src/components/StripeCardForm/naked.tsx +128 -128
  472. package/themes/doordash/src/components/StripeCardForm/styles.tsx +32 -32
  473. package/themes/doordash/src/components/StripeCardsList/index.tsx +130 -130
  474. package/themes/doordash/src/components/StripeElementsForm/index.tsx +195 -195
  475. package/themes/doordash/src/components/StripeElementsForm/naked.tsx +90 -90
  476. package/themes/doordash/src/components/StripeElementsForm/styles.tsx +13 -13
  477. package/themes/doordash/src/components/StripeRedirectForm/index.tsx +157 -157
  478. package/themes/doordash/src/components/StripeRedirectForm/styles.tsx +23 -23
  479. package/themes/doordash/src/components/TaxInformation/index.tsx +51 -51
  480. package/themes/doordash/src/components/TaxInformation/styles.tsx +9 -9
  481. package/themes/doordash/src/components/UpsellingProducts/index.tsx +184 -184
  482. package/themes/doordash/src/components/UpsellingProducts/styles.tsx +39 -39
  483. package/themes/doordash/src/components/UserDetails/index.tsx +124 -124
  484. package/themes/doordash/src/components/UserDetails/styles.tsx +24 -24
  485. package/themes/doordash/src/components/UserFormDetails/index.tsx +268 -268
  486. package/themes/doordash/src/components/UserFormDetails/styles.tsx +37 -37
  487. package/themes/doordash/src/components/UserProfileForm/index.tsx +354 -354
  488. package/themes/doordash/src/components/UserProfileForm/styles.tsx +40 -40
  489. package/themes/doordash/src/components/VerifyPhone/index.tsx +185 -185
  490. package/themes/doordash/src/components/VerifyPhone/styles.tsx +43 -43
  491. package/themes/doordash/src/components/shared/OAlert.tsx +55 -55
  492. package/themes/doordash/src/components/shared/OBottomPopup.tsx +75 -75
  493. package/themes/doordash/src/components/shared/OButton.tsx +139 -139
  494. package/themes/doordash/src/components/shared/OButtonGroup.tsx +53 -53
  495. package/themes/doordash/src/components/shared/OChatBubble.tsx +53 -53
  496. package/themes/doordash/src/components/shared/OCheckbox.tsx +79 -79
  497. package/themes/doordash/src/components/shared/ODropDown.tsx +167 -167
  498. package/themes/doordash/src/components/shared/OIcon.tsx +54 -54
  499. package/themes/doordash/src/components/shared/OIconButton.tsx +135 -135
  500. package/themes/doordash/src/components/shared/OIconText.tsx +53 -53
  501. package/themes/doordash/src/components/shared/OInput.tsx +126 -126
  502. package/themes/doordash/src/components/shared/OKeyButton.tsx +34 -34
  503. package/themes/doordash/src/components/shared/OModal.tsx +173 -173
  504. package/themes/doordash/src/components/shared/OText.tsx +52 -52
  505. package/themes/doordash/src/components/shared/OTextarea.tsx +35 -35
  506. package/themes/doordash/src/components/shared/OToast.tsx +93 -93
  507. package/themes/doordash/src/components/shared/OToggle.tsx +157 -157
  508. package/themes/doordash/src/components/shared/index.tsx +37 -37
  509. package/themes/doordash/src/config/constants.tsx +14 -14
  510. package/themes/doordash/src/layouts/Container.tsx +26 -26
  511. package/themes/doordash/src/layouts/SafeAreaContainer.tsx +6 -6
  512. package/themes/doordash/src/providers/AlertProvider.tsx +49 -49
  513. package/themes/doordash/src/providers/StoreUtil.tsx +50 -50
  514. package/themes/doordash/src/types/index.tsx +435 -435
  515. package/themes/doordash/src/utils/index.tsx +192 -192
  516. package/themes/instacart/index.tsx +88 -88
  517. package/themes/instacart/src/components/ActiveOrders/index.tsx +135 -135
  518. package/themes/instacart/src/components/ActiveOrders/styles.tsx +51 -51
  519. package/themes/instacart/src/components/AddressDetails/index.tsx +69 -69
  520. package/themes/instacart/src/components/AddressDetails/styles.tsx +22 -22
  521. package/themes/instacart/src/components/AddressForm/index.tsx +664 -664
  522. package/themes/instacart/src/components/AddressForm/styles.tsx +33 -33
  523. package/themes/instacart/src/components/AddressList/index.tsx +326 -326
  524. package/themes/instacart/src/components/AddressList/styles.tsx +20 -20
  525. package/themes/instacart/src/components/BusinessBasicInformation/index.tsx +261 -261
  526. package/themes/instacart/src/components/BusinessBasicInformation/styles.tsx +43 -43
  527. package/themes/instacart/src/components/BusinessController/index.tsx +205 -205
  528. package/themes/instacart/src/components/BusinessController/styles.tsx +53 -53
  529. package/themes/instacart/src/components/BusinessInformation/index.tsx +101 -101
  530. package/themes/instacart/src/components/BusinessInformation/styles.tsx +35 -35
  531. package/themes/instacart/src/components/BusinessItemAccordion/index.tsx +112 -112
  532. package/themes/instacart/src/components/BusinessItemAccordion/styles.tsx +59 -59
  533. package/themes/instacart/src/components/BusinessProductsCategories/index.tsx +71 -71
  534. package/themes/instacart/src/components/BusinessProductsCategories/styles.tsx +7 -7
  535. package/themes/instacart/src/components/BusinessProductsList/index.tsx +181 -181
  536. package/themes/instacart/src/components/BusinessProductsList/styles.tsx +19 -19
  537. package/themes/instacart/src/components/BusinessProductsListing/index.tsx +372 -372
  538. package/themes/instacart/src/components/BusinessProductsListing/styles.tsx +35 -35
  539. package/themes/instacart/src/components/BusinessReviews/index.tsx +121 -121
  540. package/themes/instacart/src/components/BusinessReviews/styles.tsx +33 -33
  541. package/themes/instacart/src/components/BusinessTypeFilter/index.tsx +135 -135
  542. package/themes/instacart/src/components/BusinessTypeFilter/styles.tsx +30 -30
  543. package/themes/instacart/src/components/BusinessesListing/index.tsx +254 -254
  544. package/themes/instacart/src/components/BusinessesListing/styles.tsx +62 -62
  545. package/themes/instacart/src/components/Cart/index.tsx +357 -357
  546. package/themes/instacart/src/components/Cart/styles.tsx +39 -39
  547. package/themes/instacart/src/components/CartContent/index.tsx +51 -51
  548. package/themes/instacart/src/components/CartContent/styles.tsx +19 -19
  549. package/themes/instacart/src/components/CartSingle/index.tsx +194 -194
  550. package/themes/instacart/src/components/CartSingle/styles.tsx +55 -55
  551. package/themes/instacart/src/components/Checkout/index.tsx +632 -632
  552. package/themes/instacart/src/components/Checkout/styles.tsx +105 -105
  553. package/themes/instacart/src/components/CouponControl/index.tsx +121 -121
  554. package/themes/instacart/src/components/CouponControl/styles.tsx +23 -23
  555. package/themes/instacart/src/components/DriverTips/index.tsx +153 -153
  556. package/themes/instacart/src/components/DriverTips/styles.tsx +58 -58
  557. package/themes/instacart/src/components/FacebookLogin/index.tsx +117 -117
  558. package/themes/instacart/src/components/FacebookLogin/styles.tsx +16 -16
  559. package/themes/instacart/src/components/FloatingButton/index.tsx +81 -81
  560. package/themes/instacart/src/components/FloatingButton/styles.tsx +30 -30
  561. package/themes/instacart/src/components/ForgotPasswordForm/index.tsx +155 -155
  562. package/themes/instacart/src/components/ForgotPasswordForm/styles.tsx +11 -11
  563. package/themes/instacart/src/components/GoogleMap/index.tsx +236 -236
  564. package/themes/instacart/src/components/Home/index.tsx +337 -337
  565. package/themes/instacart/src/components/Home/styles.tsx +24 -24
  566. package/themes/instacart/src/components/LanguageSelector/index.tsx +109 -109
  567. package/themes/instacart/src/components/LanguageSelector/styles.tsx +7 -7
  568. package/themes/instacart/src/components/LoginForm/index.tsx +445 -445
  569. package/themes/instacart/src/components/LoginForm/styles.tsx +69 -69
  570. package/themes/instacart/src/components/LogoutButton/index.tsx +61 -61
  571. package/themes/instacart/src/components/Messages/index.tsx +430 -430
  572. package/themes/instacart/src/components/Messages/styles.tsx +23 -23
  573. package/themes/instacart/src/components/MomentOption/index.tsx +320 -320
  574. package/themes/instacart/src/components/MomentOption/styles.tsx +71 -71
  575. package/themes/instacart/src/components/NavBar/index.tsx +131 -131
  576. package/themes/instacart/src/components/NotFoundSource/index.tsx +55 -55
  577. package/themes/instacart/src/components/NotFoundSource/styles.tsx +16 -16
  578. package/themes/instacart/src/components/OrderDetails/index.tsx +531 -531
  579. package/themes/instacart/src/components/OrderDetails/styles.tsx +146 -146
  580. package/themes/instacart/src/components/OrderSummary/index.tsx +297 -297
  581. package/themes/instacart/src/components/OrderSummary/styles.tsx +41 -41
  582. package/themes/instacart/src/components/OrderTypeSelector/index.tsx +130 -130
  583. package/themes/instacart/src/components/OrderTypeSelector/styles.tsx +6 -6
  584. package/themes/instacart/src/components/OrdersOption/index.tsx +222 -222
  585. package/themes/instacart/src/components/OrdersOption/styles.tsx +3 -3
  586. package/themes/instacart/src/components/PaymentOptionCash/index.tsx +102 -102
  587. package/themes/instacart/src/components/PaymentOptionCash/styles.tsx +15 -15
  588. package/themes/instacart/src/components/PaymentOptionStripe/index.tsx +232 -232
  589. package/themes/instacart/src/components/PaymentOptionStripe/styles.tsx +62 -62
  590. package/themes/instacart/src/components/PaymentOptions/index.tsx +496 -496
  591. package/themes/instacart/src/components/PaymentOptions/styles.tsx +43 -43
  592. package/themes/instacart/src/components/PaypalPaymethod/index.tsx +38 -38
  593. package/themes/instacart/src/components/PhoneInputNumber/index.tsx +112 -112
  594. package/themes/instacart/src/components/PhoneInputNumber/styles.tsx +5 -5
  595. package/themes/instacart/src/components/PreviousOrders/index.tsx +134 -134
  596. package/themes/instacart/src/components/PreviousOrders/styles.tsx +38 -38
  597. package/themes/instacart/src/components/ProductForm/index.tsx +444 -444
  598. package/themes/instacart/src/components/ProductForm/styles.tsx +73 -73
  599. package/themes/instacart/src/components/ProductIngredient/index.tsx +44 -44
  600. package/themes/instacart/src/components/ProductIngredient/styles.tsx +7 -7
  601. package/themes/instacart/src/components/ProductItemAccordion/index.tsx +285 -285
  602. package/themes/instacart/src/components/ProductItemAccordion/styles.tsx +52 -52
  603. package/themes/instacart/src/components/ProductOption/index.tsx +49 -49
  604. package/themes/instacart/src/components/ProductOption/styles.tsx +12 -12
  605. package/themes/instacart/src/components/ProductOptionSubOption/index.tsx +146 -146
  606. package/themes/instacart/src/components/ProductOptionSubOption/styles.tsx +33 -33
  607. package/themes/instacart/src/components/ReviewDriver/index.tsx +221 -221
  608. package/themes/instacart/src/components/ReviewDriver/styles.tsx +45 -45
  609. package/themes/instacart/src/components/ReviewOrder/index.tsx +325 -325
  610. package/themes/instacart/src/components/ReviewOrder/styles.tsx +45 -45
  611. package/themes/instacart/src/components/ReviewProduct/index.tsx +275 -275
  612. package/themes/instacart/src/components/ReviewProduct/styles.tsx +52 -52
  613. package/themes/instacart/src/components/SearchBar/index.tsx +104 -104
  614. package/themes/instacart/src/components/SearchList/index.tsx +357 -357
  615. package/themes/instacart/src/components/SearchList/styles.tsx +61 -61
  616. package/themes/instacart/src/components/SignupForm/index.tsx +587 -587
  617. package/themes/instacart/src/components/SignupForm/styles.tsx +39 -39
  618. package/themes/instacart/src/components/SingleProductCard/index.tsx +104 -104
  619. package/themes/instacart/src/components/SingleProductCard/styles.tsx +19 -19
  620. package/themes/instacart/src/components/SocialShare/index.tsx +160 -160
  621. package/themes/instacart/src/components/SocialShare/styles.ts +20 -20
  622. package/themes/instacart/src/components/StripeCardForm/index.tsx +97 -97
  623. package/themes/instacart/src/components/StripeCardForm/naked.tsx +128 -128
  624. package/themes/instacart/src/components/StripeCardForm/styles.tsx +27 -27
  625. package/themes/instacart/src/components/StripeCardsList/index.tsx +144 -144
  626. package/themes/instacart/src/components/StripeElementsForm/index.tsx +192 -192
  627. package/themes/instacart/src/components/StripeElementsForm/naked.tsx +90 -90
  628. package/themes/instacart/src/components/StripeElementsForm/styles.tsx +9 -9
  629. package/themes/instacart/src/components/StripeRedirectForm/index.tsx +159 -159
  630. package/themes/instacart/src/components/StripeRedirectForm/styles.tsx +23 -23
  631. package/themes/instacart/src/components/TagSelector/index.tsx +94 -94
  632. package/themes/instacart/src/components/TaxInformation/index.tsx +51 -51
  633. package/themes/instacart/src/components/TaxInformation/styles.tsx +9 -9
  634. package/themes/instacart/src/components/UpsellingProducts/index.tsx +230 -230
  635. package/themes/instacart/src/components/UpsellingProducts/styles.tsx +31 -31
  636. package/themes/instacart/src/components/UserDetails/index.tsx +135 -135
  637. package/themes/instacart/src/components/UserDetails/styles.tsx +21 -21
  638. package/themes/instacart/src/components/UserFormDetails/index.tsx +307 -307
  639. package/themes/instacart/src/components/UserFormDetails/styles.tsx +38 -38
  640. package/themes/instacart/src/components/UserProfileForm/index.tsx +106 -106
  641. package/themes/instacart/src/components/UserProfileForm/styles.tsx +37 -37
  642. package/themes/instacart/src/components/VerifyPhone/index.tsx +187 -187
  643. package/themes/instacart/src/components/VerifyPhone/styles.tsx +43 -43
  644. package/themes/instacart/src/components/shared/OAlert.tsx +53 -53
  645. package/themes/instacart/src/components/shared/OBottomPopup.tsx +118 -118
  646. package/themes/instacart/src/components/shared/OBottomStickBar.tsx +62 -62
  647. package/themes/instacart/src/components/shared/OButton.tsx +133 -133
  648. package/themes/instacart/src/components/shared/ODropDown.tsx +170 -170
  649. package/themes/instacart/src/components/shared/OIcon.tsx +53 -53
  650. package/themes/instacart/src/components/shared/OIconButton.tsx +134 -134
  651. package/themes/instacart/src/components/shared/OInput.tsx +122 -122
  652. package/themes/instacart/src/components/shared/OModal.tsx +156 -156
  653. package/themes/instacart/src/components/shared/OText.tsx +58 -58
  654. package/themes/instacart/src/components/shared/OToast.tsx +92 -92
  655. package/themes/instacart/src/components/shared/index.tsx +23 -23
  656. package/themes/instacart/src/config/constants.tsx +28 -28
  657. package/themes/instacart/src/layouts/Container.tsx +29 -29
  658. package/themes/instacart/src/layouts/SafeAreaContainer.tsx +6 -6
  659. package/themes/instacart/src/providers/AlertProvider.tsx +43 -43
  660. package/themes/instacart/src/providers/CartBottomSheetProvider.tsx +37 -37
  661. package/themes/instacart/src/providers/StoreUtil.tsx +50 -50
  662. package/themes/instacart/src/types/index.tsx +458 -458
  663. package/themes/instacart/src/utils/index.tsx +192 -192
  664. package/themes/kiosk/index.tsx +130 -130
  665. package/themes/kiosk/src/components/BusinessController/index.tsx +88 -88
  666. package/themes/kiosk/src/components/BusinessController/styles.tsx +23 -23
  667. package/themes/kiosk/src/components/BusinessItemAccordion/index.tsx +137 -137
  668. package/themes/kiosk/src/components/BusinessItemAccordion/styles.tsx +60 -60
  669. package/themes/kiosk/src/components/BusinessMenu/index.tsx +174 -174
  670. package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +254 -254
  671. package/themes/kiosk/src/components/BusinessProductsListing/styles.tsx +35 -35
  672. package/themes/kiosk/src/components/BusinessesListing/index.tsx +119 -118
  673. package/themes/kiosk/src/components/BusinessesListing/styles.tsx +24 -24
  674. package/themes/kiosk/src/components/Cart/index.tsx +489 -489
  675. package/themes/kiosk/src/components/Cart/styles.tsx +76 -76
  676. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +281 -281
  677. package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +53 -53
  678. package/themes/kiosk/src/components/CartContent/index.tsx +75 -75
  679. package/themes/kiosk/src/components/CartContent/styles.tsx +15 -15
  680. package/themes/kiosk/src/components/CartItem/index.tsx +222 -222
  681. package/themes/kiosk/src/components/CartItem/styles.tsx +33 -33
  682. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +281 -281
  683. package/themes/kiosk/src/components/Checkout/index.tsx +175 -169
  684. package/themes/kiosk/src/components/Checkout/styles.tsx +94 -94
  685. package/themes/kiosk/src/components/CouponControl/index.tsx +138 -138
  686. package/themes/kiosk/src/components/CouponControl/styles.tsx +22 -22
  687. package/themes/kiosk/src/components/CustomerName/index.tsx +175 -175
  688. package/themes/kiosk/src/components/CustomerName/styles.tsx +10 -10
  689. package/themes/kiosk/src/components/DrawerView/index.tsx +58 -58
  690. package/themes/kiosk/src/components/DrawerView/styles.tsx +30 -30
  691. package/themes/kiosk/src/components/Intro/index.tsx +150 -150
  692. package/themes/kiosk/src/components/LanguageSelector/index.tsx +131 -131
  693. package/themes/kiosk/src/components/LanguageSelector/lang_country.json +140 -140
  694. package/themes/kiosk/src/components/LanguageSelector/styles.tsx +12 -12
  695. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  696. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  697. package/themes/kiosk/src/components/LoginForm/index.tsx +765 -443
  698. package/themes/kiosk/src/components/LoginForm/styles.tsx +27 -14
  699. package/themes/kiosk/src/components/LogoutButton/index.tsx +74 -74
  700. package/themes/kiosk/src/components/LogoutPopup/index.tsx +185 -185
  701. package/themes/kiosk/src/components/LogoutPopup/styles.tsx +26 -26
  702. package/themes/kiosk/src/components/NavBar/index.tsx +147 -147
  703. package/themes/kiosk/src/components/NetworkError/index.tsx +60 -60
  704. package/themes/kiosk/src/components/NetworkError/styles.tsx +10 -10
  705. package/themes/kiosk/src/components/NotFoundSource/index.tsx +51 -51
  706. package/themes/kiosk/src/components/NotFoundSource/styles.tsx +16 -16
  707. package/themes/kiosk/src/components/OptionCard/index.tsx +107 -107
  708. package/themes/kiosk/src/components/OptionCard/styles.tsx +22 -22
  709. package/themes/kiosk/src/components/OrderDetails/index.tsx +693 -693
  710. package/themes/kiosk/src/components/OrderDetails/styles.tsx +58 -58
  711. package/themes/kiosk/src/components/OrderSummary/index.tsx +195 -195
  712. package/themes/kiosk/src/components/OrderSummary/styles.tsx +33 -33
  713. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +151 -153
  714. package/themes/kiosk/src/components/OrderTypeCardSelector/styles.tsx +6 -6
  715. package/themes/kiosk/src/components/OrderTypeSelector/index.tsx +98 -98
  716. package/themes/kiosk/src/components/OrderTypeSelector/styles.tsx +6 -6
  717. package/themes/kiosk/src/components/PaymentOptionCash/index.tsx +100 -100
  718. package/themes/kiosk/src/components/PaymentOptionCash/styles.tsx +18 -18
  719. package/themes/kiosk/src/components/PaymentOptionStripe/index.tsx +70 -70
  720. package/themes/kiosk/src/components/PaymentOptionStripe/styles.tsx +7 -7
  721. package/themes/kiosk/src/components/PaymentOptions/index.tsx +281 -281
  722. package/themes/kiosk/src/components/PaymentOptions/styles.tsx +55 -55
  723. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +113 -112
  724. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +3 -5
  725. package/themes/kiosk/src/components/ProductForm/index.tsx +588 -601
  726. package/themes/kiosk/src/components/ProductForm/styles.tsx +83 -83
  727. package/themes/kiosk/src/components/ProductIngredient/index.tsx +44 -44
  728. package/themes/kiosk/src/components/ProductIngredient/styles.tsx +7 -7
  729. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +244 -244
  730. package/themes/kiosk/src/components/ProductItemAccordion/styles.tsx +71 -71
  731. package/themes/kiosk/src/components/ProductOption/index.tsx +55 -55
  732. package/themes/kiosk/src/components/ProductOption/styles.tsx +16 -16
  733. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +176 -176
  734. package/themes/kiosk/src/components/ProductOptionSubOption/styles.tsx +42 -42
  735. package/themes/kiosk/src/components/PromoCard/index.tsx +117 -117
  736. package/themes/kiosk/src/components/QuantityControl/index.tsx +92 -92
  737. package/themes/kiosk/src/components/QuantityControl/styles.tsx +9 -9
  738. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +364 -364
  739. package/themes/kiosk/src/components/UpsellingProducts/styles.tsx +26 -26
  740. package/themes/kiosk/src/components/shared/OAlert.tsx +55 -55
  741. package/themes/kiosk/src/components/shared/OBottomPopup.tsx +77 -77
  742. package/themes/kiosk/src/components/shared/OButton.tsx +132 -145
  743. package/themes/kiosk/src/components/shared/OCard.tsx +144 -144
  744. package/themes/kiosk/src/components/shared/OChatBubble.tsx +52 -52
  745. package/themes/kiosk/src/components/shared/OCheckbox.tsx +77 -77
  746. package/themes/kiosk/src/components/shared/ODropDown.tsx +161 -161
  747. package/themes/kiosk/src/components/shared/OIcon.tsx +51 -51
  748. package/themes/kiosk/src/components/shared/OIconButton.tsx +134 -134
  749. package/themes/kiosk/src/components/shared/OIconText.tsx +53 -53
  750. package/themes/kiosk/src/components/shared/OImage.tsx +31 -31
  751. package/themes/kiosk/src/components/shared/OInput.tsx +121 -121
  752. package/themes/kiosk/src/components/shared/OKeyButton.tsx +34 -34
  753. package/themes/kiosk/src/components/shared/OModal.tsx +162 -159
  754. package/themes/kiosk/src/components/shared/OOptionToggle.tsx +130 -130
  755. package/themes/kiosk/src/components/shared/OSegment.tsx +66 -66
  756. package/themes/kiosk/src/components/shared/OText.tsx +51 -51
  757. package/themes/kiosk/src/components/shared/OTextarea.tsx +36 -36
  758. package/themes/kiosk/src/components/shared/OToast.tsx +94 -94
  759. package/themes/kiosk/src/components/shared/OToggle.tsx +157 -157
  760. package/themes/kiosk/src/components/shared/index.tsx +37 -37
  761. package/themes/kiosk/src/layouts/Container.tsx +45 -39
  762. package/themes/kiosk/src/layouts/GridContainer.tsx +25 -25
  763. package/themes/kiosk/src/layouts/SafeAreaContainer.tsx +6 -6
  764. package/themes/kiosk/src/providers/CartBottomSheetProvider.tsx +35 -35
  765. package/themes/kiosk/src/types/index.d.ts +497 -484
  766. package/themes/kiosk/src/utils/index.tsx +15 -0
  767. package/themes/original/index.tsx +344 -338
  768. package/themes/original/src/components/ActiveOrders/index.tsx +52 -52
  769. package/themes/original/src/components/ActiveOrders/styles.tsx +5 -5
  770. package/themes/original/src/components/AddressDetails/index.tsx +95 -77
  771. package/themes/original/src/components/AddressDetails/styles.tsx +21 -21
  772. package/themes/original/src/components/AddressForm/index.tsx +904 -869
  773. package/themes/original/src/components/AddressForm/styles.tsx +28 -28
  774. package/themes/original/src/components/AddressList/index.tsx +368 -363
  775. package/themes/original/src/components/AddressList/styles.tsx +21 -19
  776. package/themes/original/src/components/AnalyticsSegment/index.tsx +310 -127
  777. package/themes/original/src/components/AppleLogin/index.tsx +188 -188
  778. package/themes/original/src/components/AppleLogin/styles.tsx +21 -21
  779. package/themes/original/src/components/BottomWrapper/index.tsx +29 -29
  780. package/themes/original/src/components/BusinessBasicInformation/index.tsx +539 -470
  781. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +76 -74
  782. package/themes/original/src/components/BusinessCart/index.tsx +182 -182
  783. package/themes/original/src/components/BusinessCart/styles.tsx +46 -46
  784. package/themes/original/src/components/BusinessController/index.tsx +407 -333
  785. package/themes/original/src/components/BusinessController/styles.tsx +95 -75
  786. package/themes/original/src/components/BusinessFeaturedController/index.tsx +175 -208
  787. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +81 -73
  788. package/themes/original/src/components/BusinessInformation/index.tsx +186 -207
  789. package/themes/original/src/components/BusinessInformation/styles.tsx +38 -38
  790. package/themes/original/src/components/BusinessItemAccordion/index.tsx +168 -167
  791. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +64 -64
  792. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -57
  793. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -59
  794. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -13
  795. package/themes/original/src/components/BusinessListingSearch/index.tsx +590 -565
  796. package/themes/original/src/components/BusinessListingSearch/styles.tsx +94 -94
  797. package/themes/original/src/components/BusinessMenuList/index.tsx +135 -135
  798. package/themes/original/src/components/BusinessPreorder/index.tsx +582 -501
  799. package/themes/original/src/components/BusinessPreorder/styles.tsx +44 -44
  800. package/themes/original/src/components/BusinessProductsCategories/index.tsx +152 -152
  801. package/themes/original/src/components/BusinessProductsCategories/styles.tsx +7 -7
  802. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -44
  803. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -87
  804. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -12
  805. package/themes/original/src/components/BusinessProductsList/index.tsx +367 -358
  806. package/themes/original/src/components/BusinessProductsList/styles.tsx +49 -44
  807. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +35 -35
  808. package/themes/original/src/components/BusinessProductsListing/index.tsx +718 -558
  809. package/themes/original/src/components/BusinessProductsListing/styles.tsx +69 -71
  810. package/themes/original/src/components/BusinessReviews/index.tsx +241 -239
  811. package/themes/original/src/components/BusinessReviews/styles.tsx +59 -59
  812. package/themes/original/src/components/BusinessTypeFilter/index.tsx +280 -280
  813. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +43 -43
  814. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -561
  815. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +107 -107
  816. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +703 -676
  817. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +129 -137
  818. package/themes/original/src/components/BusinessesListing/index.tsx +105 -106
  819. package/themes/original/src/components/Cart/index.tsx +573 -540
  820. package/themes/original/src/components/Cart/styles.tsx +39 -39
  821. package/themes/original/src/components/CartContent/index.tsx +166 -70
  822. package/themes/original/src/components/CartContent/styles.tsx +29 -19
  823. package/themes/original/src/components/CartStoresListing/index.tsx +98 -98
  824. package/themes/original/src/components/CartStoresListing/styles.tsx +30 -30
  825. package/themes/original/src/components/Checkout/index.tsx +1159 -965
  826. package/themes/original/src/components/Checkout/styles.tsx +115 -113
  827. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  828. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  829. package/themes/original/src/components/CouponControl/index.tsx +127 -120
  830. package/themes/original/src/components/CouponControl/styles.tsx +22 -22
  831. package/themes/original/src/components/DriverTips/index.tsx +164 -146
  832. package/themes/original/src/components/DriverTips/styles.tsx +67 -67
  833. package/themes/original/src/components/FacebookLogin/index.tsx +122 -122
  834. package/themes/original/src/components/FacebookLogin/styles.tsx +21 -21
  835. package/themes/original/src/components/Favorite/index.tsx +95 -92
  836. package/themes/original/src/components/Favorite/styles.tsx +22 -22
  837. package/themes/original/src/components/FavoriteList/index.tsx +288 -317
  838. package/themes/original/src/components/FavoriteList/styles.tsx +5 -5
  839. package/themes/original/src/components/FloatingButton/index.tsx +100 -101
  840. package/themes/original/src/components/FloatingButton/styles.tsx +26 -26
  841. package/themes/original/src/components/ForgotPasswordForm/index.tsx +232 -232
  842. package/themes/original/src/components/ForgotPasswordForm/styles.tsx +11 -11
  843. package/themes/original/src/components/GPSButton/index.tsx +94 -92
  844. package/themes/original/src/components/GPSButton/styles.ts +6 -6
  845. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  846. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  847. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  848. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  849. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
  850. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  851. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  852. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  853. package/themes/original/src/components/GoogleLogin/index.tsx +119 -119
  854. package/themes/original/src/components/GoogleLogin/styles.tsx +23 -23
  855. package/themes/original/src/components/GoogleMap/index.tsx +249 -238
  856. package/themes/original/src/components/Help/index.tsx +72 -72
  857. package/themes/original/src/components/Help/styles.tsx +11 -11
  858. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +62 -73
  859. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +12 -6
  860. package/themes/original/src/components/HelpGuide/index.tsx +68 -72
  861. package/themes/original/src/components/HelpGuide/styles.tsx +12 -6
  862. package/themes/original/src/components/HelpOrder/index.tsx +71 -84
  863. package/themes/original/src/components/HelpOrder/styles.tsx +13 -6
  864. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +165 -165
  865. package/themes/original/src/components/HighestRatedBusinesses/styles.tsx +7 -7
  866. package/themes/original/src/components/Home/index.tsx +113 -104
  867. package/themes/original/src/components/Home/styles.tsx +18 -18
  868. package/themes/original/src/components/LanguageSelector/index.tsx +97 -97
  869. package/themes/original/src/components/LanguageSelector/styles.tsx +10 -10
  870. package/themes/original/src/components/LastOrder/index.tsx +137 -170
  871. package/themes/original/src/components/LastOrder/styles.tsx +16 -16
  872. package/themes/original/src/components/LastOrders/index.tsx +123 -123
  873. package/themes/original/src/components/LastOrders/styles.tsx +17 -17
  874. package/themes/original/src/components/LoginForm/Otp/index.tsx +155 -91
  875. package/themes/original/src/components/LoginForm/Otp/styles.tsx +6 -7
  876. package/themes/original/src/components/LoginForm/index.tsx +885 -842
  877. package/themes/original/src/components/LoginForm/styles.tsx +85 -85
  878. package/themes/original/src/components/LogoutButton/index.tsx +42 -42
  879. package/themes/original/src/components/LottieAnimation/index.tsx +103 -69
  880. package/themes/original/src/components/MessageListing/index.tsx +294 -320
  881. package/themes/original/src/components/MessageListing/styles.tsx +16 -16
  882. package/themes/original/src/components/Messages/index.tsx +580 -558
  883. package/themes/original/src/components/Messages/styles.tsx +40 -40
  884. package/themes/original/src/components/MomentOption/index.tsx +484 -377
  885. package/themes/original/src/components/MomentOption/styles.tsx +42 -42
  886. package/themes/original/src/components/MomentSelector/index.tsx +196 -196
  887. package/themes/original/src/components/MomentSelector/styles.tsx +6 -6
  888. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  889. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +345 -243
  890. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -46
  891. package/themes/original/src/components/MultiCheckout/index.tsx +524 -304
  892. package/themes/original/src/components/MultiCheckout/styles.tsx +61 -59
  893. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +185 -372
  894. package/themes/original/src/components/MultiOrdersDetails/index.tsx +309 -262
  895. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -50
  896. package/themes/original/src/components/MyOrders/index.tsx +210 -208
  897. package/themes/original/src/components/MyOrders/styles.tsx +13 -13
  898. package/themes/original/src/components/NavBar/index.tsx +140 -140
  899. package/themes/original/src/components/NetworkError/index.tsx +63 -63
  900. package/themes/original/src/components/NetworkError/styles.tsx +10 -10
  901. package/themes/original/src/components/NotFoundSource/index.tsx +55 -51
  902. package/themes/original/src/components/NotFoundSource/styles.tsx +16 -16
  903. package/themes/original/src/components/Notifications/index.tsx +144 -148
  904. package/themes/original/src/components/Notifications/styles.tsx +20 -17
  905. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  906. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +179 -167
  907. package/themes/original/src/components/OrderDetails/index.tsx +1063 -1223
  908. package/themes/original/src/components/OrderDetails/styles.tsx +142 -143
  909. package/themes/original/src/components/OrderItAgain/index.tsx +77 -75
  910. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -10
  911. package/themes/original/src/components/OrderProgress/index.tsx +217 -238
  912. package/themes/original/src/components/OrderProgress/styles.tsx +36 -31
  913. package/themes/original/src/components/OrderSummary/index.tsx +403 -375
  914. package/themes/original/src/components/OrderSummary/styles.tsx +48 -48
  915. package/themes/original/src/components/OrderTypeSelector/index.tsx +144 -144
  916. package/themes/original/src/components/OrderTypeSelector/styles.tsx +45 -45
  917. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +149 -144
  918. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -6
  919. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +56 -56
  920. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -6
  921. package/themes/original/src/components/OrdersOption/index.tsx +362 -357
  922. package/themes/original/src/components/OrdersOption/styles.tsx +14 -14
  923. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  924. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  925. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  926. package/themes/original/src/components/PaymentOptionCash/index.tsx +102 -102
  927. package/themes/original/src/components/PaymentOptionCash/styles.tsx +18 -18
  928. package/themes/original/src/components/PaymentOptionStripe/index.tsx +234 -234
  929. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +69 -69
  930. package/themes/original/src/components/PaymentOptionWallet/index.tsx +174 -174
  931. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +39 -39
  932. package/themes/original/src/components/PaymentOptions/index.tsx +525 -470
  933. package/themes/original/src/components/PaymentOptions/styles.tsx +55 -55
  934. package/themes/original/src/components/PhoneInputNumber/index.tsx +142 -142
  935. package/themes/original/src/components/PhoneInputNumber/styles.tsx +3 -3
  936. package/themes/original/src/components/PlaceSpot/index.tsx +316 -310
  937. package/themes/original/src/components/PlaceSpot/styles.tsx +9 -9
  938. package/themes/original/src/components/PreviousOrders/index.tsx +59 -59
  939. package/themes/original/src/components/PreviousOrders/styles.tsx +34 -34
  940. package/themes/original/src/components/ProductForm/index.tsx +1118 -1039
  941. package/themes/original/src/components/ProductForm/styles.tsx +101 -103
  942. package/themes/original/src/components/ProductIngredient/index.tsx +44 -44
  943. package/themes/original/src/components/ProductIngredient/styles.tsx +7 -7
  944. package/themes/original/src/components/ProductItemAccordion/index.tsx +349 -348
  945. package/themes/original/src/components/ProductItemAccordion/styles.tsx +57 -57
  946. package/themes/original/src/components/ProductOption/index.tsx +50 -50
  947. package/themes/original/src/components/ProductOption/styles.tsx +11 -11
  948. package/themes/original/src/components/ProductOptionSubOption/index.tsx +172 -164
  949. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +38 -39
  950. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  951. package/themes/original/src/components/ProfessionalFilter/index.tsx +99 -129
  952. package/themes/original/src/components/ProfessionalProfile/index.tsx +338 -309
  953. package/themes/original/src/components/ProfessionalProfile/styles.tsx +45 -45
  954. package/themes/original/src/components/Promotions/index.tsx +264 -250
  955. package/themes/original/src/components/Promotions/styles.tsx +67 -60
  956. package/themes/original/src/components/ReviewDriver/index.tsx +315 -315
  957. package/themes/original/src/components/ReviewDriver/styles.tsx +38 -38
  958. package/themes/original/src/components/ReviewOrder/index.tsx +356 -339
  959. package/themes/original/src/components/ReviewOrder/styles.tsx +51 -44
  960. package/themes/original/src/components/ReviewProducts/index.tsx +128 -116
  961. package/themes/original/src/components/ReviewProducts/styles.tsx +16 -16
  962. package/themes/original/src/components/ReviewTrigger/index.tsx +136 -118
  963. package/themes/original/src/components/ReviewTrigger/styles.tsx +41 -34
  964. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  965. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  966. package/themes/original/src/components/SearchBar/index.tsx +124 -124
  967. package/themes/original/src/components/ServiceForm/index.tsx +686 -631
  968. package/themes/original/src/components/ServiceForm/styles.tsx +49 -49
  969. package/themes/original/src/components/Sessions/index.tsx +163 -160
  970. package/themes/original/src/components/Sessions/styles.tsx +20 -15
  971. package/themes/original/src/components/SignupForm/index.tsx +1010 -987
  972. package/themes/original/src/components/SignupForm/styles.tsx +27 -27
  973. package/themes/original/src/components/SingleOrderCard/index.tsx +408 -330
  974. package/themes/original/src/components/SingleOrderCard/styles.tsx +56 -47
  975. package/themes/original/src/components/SingleProductCard/index.tsx +353 -315
  976. package/themes/original/src/components/SingleProductCard/styles.tsx +69 -51
  977. package/themes/original/src/components/SingleProductReview/index.tsx +199 -199
  978. package/themes/original/src/components/SingleProductReview/styles.tsx +39 -39
  979. package/themes/original/src/components/StripeCardForm/index.tsx +97 -97
  980. package/themes/original/src/components/StripeCardForm/naked.tsx +128 -128
  981. package/themes/original/src/components/StripeCardForm/styles.tsx +32 -32
  982. package/themes/original/src/components/StripeCardsList/index.tsx +153 -143
  983. package/themes/original/src/components/StripeElementsForm/index.tsx +289 -278
  984. package/themes/original/src/components/StripeElementsForm/naked.tsx +90 -90
  985. package/themes/original/src/components/StripeElementsForm/styles.tsx +13 -13
  986. package/themes/original/src/components/StripeRedirectForm/index.tsx +159 -159
  987. package/themes/original/src/components/StripeRedirectForm/styles.tsx +23 -23
  988. package/themes/original/src/components/TaxInformation/index.tsx +93 -93
  989. package/themes/original/src/components/TaxInformation/styles.tsx +9 -9
  990. package/themes/original/src/components/UpsellingProducts/index.tsx +266 -252
  991. package/themes/original/src/components/UpsellingProducts/styles.tsx +61 -50
  992. package/themes/original/src/components/UserDetails/index.tsx +244 -240
  993. package/themes/original/src/components/UserDetails/styles.tsx +25 -25
  994. package/themes/original/src/components/UserFormDetails/index.tsx +480 -440
  995. package/themes/original/src/components/UserFormDetails/styles.tsx +34 -34
  996. package/themes/original/src/components/UserProfile/index.tsx +280 -282
  997. package/themes/original/src/components/UserProfile/styles.ts +58 -58
  998. package/themes/original/src/components/UserProfileForm/index.tsx +353 -356
  999. package/themes/original/src/components/UserProfileForm/styles.tsx +36 -29
  1000. package/themes/original/src/components/UserVerification/index.tsx +500 -500
  1001. package/themes/original/src/components/UserVerification/styles.tsx +83 -83
  1002. package/themes/original/src/components/VerifyPhone/index.tsx +195 -195
  1003. package/themes/original/src/components/VerifyPhone/styles.tsx +42 -42
  1004. package/themes/original/src/components/WalletTransactionItem/index.tsx +69 -69
  1005. package/themes/original/src/components/WalletTransactionItem/styles.tsx +37 -37
  1006. package/themes/original/src/components/WalletTransactions/index.tsx +76 -76
  1007. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -13
  1008. package/themes/original/src/components/Wallets/index.tsx +348 -305
  1009. package/themes/original/src/components/Wallets/styles.tsx +67 -66
  1010. package/themes/original/src/components/shared/CardAnimation.tsx +47 -47
  1011. package/themes/original/src/components/shared/HeaderTitle.tsx +26 -21
  1012. package/themes/original/src/components/shared/OAlert.tsx +55 -55
  1013. package/themes/original/src/components/shared/OBottomPopup.tsx +109 -109
  1014. package/themes/original/src/components/shared/OButton.tsx +149 -145
  1015. package/themes/original/src/components/shared/ODropDown.tsx +168 -168
  1016. package/themes/original/src/components/shared/OIcon.tsx +66 -66
  1017. package/themes/original/src/components/shared/OIconButton.tsx +127 -127
  1018. package/themes/original/src/components/shared/OIconText.tsx +53 -53
  1019. package/themes/original/src/components/shared/OInput.tsx +133 -119
  1020. package/themes/original/src/components/shared/OKeyButton.tsx +34 -34
  1021. package/themes/original/src/components/shared/OModal.tsx +191 -191
  1022. package/themes/original/src/components/shared/OText.tsx +52 -52
  1023. package/themes/original/src/components/shared/OTextarea.tsx +36 -36
  1024. package/themes/original/src/components/shared/OToast.tsx +93 -93
  1025. package/themes/original/src/components/shared/OToggle.tsx +157 -157
  1026. package/themes/original/src/components/shared/index.tsx +31 -31
  1027. package/themes/original/src/config/constants.tsx +33 -33
  1028. package/themes/original/src/layouts/Container.tsx +30 -30
  1029. package/themes/original/src/layouts/FloatingBottomContainer.tsx +30 -30
  1030. package/themes/original/src/layouts/SafeAreaContainer.tsx +6 -6
  1031. package/themes/original/src/providers/AlertProvider.tsx +43 -43
  1032. package/themes/original/src/providers/StoreUtil.tsx +50 -50
  1033. package/themes/original/src/types/index.tsx +812 -783
  1034. package/themes/original/src/utils/index.tsx +614 -308
  1035. package/themes/single-business/index.tsx +207 -207
  1036. package/themes/single-business/src/components/ActiveOrders/index.tsx +135 -135
  1037. package/themes/single-business/src/components/ActiveOrders/styles.tsx +44 -44
  1038. package/themes/single-business/src/components/AddressDetails/index.tsx +77 -77
  1039. package/themes/single-business/src/components/AddressDetails/styles.tsx +21 -21
  1040. package/themes/single-business/src/components/AddressForm/index.tsx +856 -856
  1041. package/themes/single-business/src/components/AddressForm/styles.tsx +27 -27
  1042. package/themes/single-business/src/components/AddressList/index.tsx +338 -338
  1043. package/themes/single-business/src/components/AddressList/styles.tsx +20 -20
  1044. package/themes/single-business/src/components/AppleLogin/index.tsx +108 -108
  1045. package/themes/single-business/src/components/AppleLogin/styles.tsx +21 -21
  1046. package/themes/single-business/src/components/BottomWrapper/index.tsx +29 -29
  1047. package/themes/single-business/src/components/BusinessBasicInformation/index.tsx +315 -315
  1048. package/themes/single-business/src/components/BusinessBasicInformation/styles.tsx +65 -65
  1049. package/themes/single-business/src/components/BusinessController/index.tsx +186 -186
  1050. package/themes/single-business/src/components/BusinessController/styles.tsx +56 -56
  1051. package/themes/single-business/src/components/BusinessFeaturedController/index.tsx +189 -189
  1052. package/themes/single-business/src/components/BusinessFeaturedController/styles.tsx +50 -50
  1053. package/themes/single-business/src/components/BusinessInformation/index.tsx +244 -244
  1054. package/themes/single-business/src/components/BusinessInformation/styles.tsx +39 -39
  1055. package/themes/single-business/src/components/BusinessItemAccordion/index.tsx +125 -125
  1056. package/themes/single-business/src/components/BusinessItemAccordion/styles.tsx +54 -54
  1057. package/themes/single-business/src/components/BusinessProductsCategories/index.tsx +160 -160
  1058. package/themes/single-business/src/components/BusinessProductsCategories/styles.tsx +7 -7
  1059. package/themes/single-business/src/components/BusinessProductsList/index.tsx +213 -213
  1060. package/themes/single-business/src/components/BusinessProductsList/styles.tsx +14 -14
  1061. package/themes/single-business/src/components/BusinessProductsListing/index.tsx +338 -338
  1062. package/themes/single-business/src/components/BusinessProductsListing/styles.tsx +30 -30
  1063. package/themes/single-business/src/components/BusinessReviews/index.tsx +255 -255
  1064. package/themes/single-business/src/components/BusinessReviews/styles.tsx +59 -59
  1065. package/themes/single-business/src/components/BusinessTypeFilter/index.tsx +127 -127
  1066. package/themes/single-business/src/components/BusinessTypeFilter/styles.tsx +40 -40
  1067. package/themes/single-business/src/components/BusinessesListing/index.tsx +384 -384
  1068. package/themes/single-business/src/components/BusinessesListing/styles.tsx +108 -108
  1069. package/themes/single-business/src/components/Cart/index.tsx +490 -490
  1070. package/themes/single-business/src/components/Cart/styles.tsx +111 -111
  1071. package/themes/single-business/src/components/CartContent/index.tsx +64 -64
  1072. package/themes/single-business/src/components/CartContent/styles.tsx +5 -5
  1073. package/themes/single-business/src/components/Checkout/index.tsx +662 -662
  1074. package/themes/single-business/src/components/Checkout/styles.tsx +89 -89
  1075. package/themes/single-business/src/components/CouponControl/index.tsx +119 -119
  1076. package/themes/single-business/src/components/CouponControl/styles.tsx +22 -22
  1077. package/themes/single-business/src/components/DriverTips/index.tsx +163 -163
  1078. package/themes/single-business/src/components/DriverTips/styles.tsx +63 -63
  1079. package/themes/single-business/src/components/FacebookLogin/index.tsx +107 -107
  1080. package/themes/single-business/src/components/FacebookLogin/styles.tsx +21 -21
  1081. package/themes/single-business/src/components/FloatingButton/index.tsx +100 -100
  1082. package/themes/single-business/src/components/FloatingButton/styles.tsx +26 -26
  1083. package/themes/single-business/src/components/ForgotPasswordForm/index.tsx +156 -156
  1084. package/themes/single-business/src/components/ForgotPasswordForm/styles.tsx +11 -11
  1085. package/themes/single-business/src/components/GPSButton/index.tsx +84 -84
  1086. package/themes/single-business/src/components/GPSButton/styles.ts +5 -5
  1087. package/themes/single-business/src/components/GoogleLogin/index.tsx +114 -114
  1088. package/themes/single-business/src/components/GoogleLogin/styles.tsx +23 -23
  1089. package/themes/single-business/src/components/GoogleMap/index.tsx +229 -229
  1090. package/themes/single-business/src/components/Help/index.tsx +55 -55
  1091. package/themes/single-business/src/components/Help/styles.tsx +11 -11
  1092. package/themes/single-business/src/components/HelpAccountAndPayment/index.tsx +69 -69
  1093. package/themes/single-business/src/components/HelpAccountAndPayment/styles.tsx +6 -6
  1094. package/themes/single-business/src/components/HelpGuide/index.tsx +68 -68
  1095. package/themes/single-business/src/components/HelpGuide/styles.tsx +6 -6
  1096. package/themes/single-business/src/components/HelpOrder/index.tsx +80 -80
  1097. package/themes/single-business/src/components/HelpOrder/styles.tsx +5 -5
  1098. package/themes/single-business/src/components/Home/index.tsx +102 -102
  1099. package/themes/single-business/src/components/Home/styles.tsx +18 -18
  1100. package/themes/single-business/src/components/LanguageSelector/index.tsx +109 -109
  1101. package/themes/single-business/src/components/LanguageSelector/styles.tsx +7 -7
  1102. package/themes/single-business/src/components/LastOrder/index.tsx +170 -170
  1103. package/themes/single-business/src/components/LastOrder/styles.tsx +16 -16
  1104. package/themes/single-business/src/components/LastOrders/index.tsx +104 -104
  1105. package/themes/single-business/src/components/LastOrders/styles.tsx +17 -17
  1106. package/themes/single-business/src/components/LoginForm/index.tsx +587 -587
  1107. package/themes/single-business/src/components/LoginForm/styles.tsx +82 -82
  1108. package/themes/single-business/src/components/LogoutButton/index.tsx +36 -36
  1109. package/themes/single-business/src/components/Messages/index.tsx +350 -350
  1110. package/themes/single-business/src/components/Messages/styles.tsx +20 -20
  1111. package/themes/single-business/src/components/MomentOption/index.tsx +290 -290
  1112. package/themes/single-business/src/components/MomentOption/styles.tsx +65 -65
  1113. package/themes/single-business/src/components/NavBar/index.tsx +129 -129
  1114. package/themes/single-business/src/components/NotFoundSource/index.tsx +50 -50
  1115. package/themes/single-business/src/components/NotFoundSource/styles.tsx +16 -16
  1116. package/themes/single-business/src/components/Notifications/index.tsx +120 -120
  1117. package/themes/single-business/src/components/Notifications/styles.ts +20 -20
  1118. package/themes/single-business/src/components/OrderDetails/index.tsx +871 -871
  1119. package/themes/single-business/src/components/OrderDetails/styles.tsx +120 -120
  1120. package/themes/single-business/src/components/OrderListOption/index.tsx +231 -231
  1121. package/themes/single-business/src/components/OrderListOption/styles.tsx +62 -62
  1122. package/themes/single-business/src/components/OrderSummary/index.tsx +267 -267
  1123. package/themes/single-business/src/components/OrderSummary/styles.tsx +40 -40
  1124. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +126 -126
  1125. package/themes/single-business/src/components/OrderTypeSelector/styles.tsx +26 -26
  1126. package/themes/single-business/src/components/OrdersListing/index.tsx +112 -112
  1127. package/themes/single-business/src/components/OrdersOption/index.tsx +245 -245
  1128. package/themes/single-business/src/components/OrdersOption/styles.tsx +5 -5
  1129. package/themes/single-business/src/components/PaymentOptionCash/index.tsx +102 -102
  1130. package/themes/single-business/src/components/PaymentOptionCash/styles.tsx +18 -18
  1131. package/themes/single-business/src/components/PaymentOptionStripe/index.tsx +234 -234
  1132. package/themes/single-business/src/components/PaymentOptionStripe/styles.tsx +69 -69
  1133. package/themes/single-business/src/components/PaymentOptions/index.tsx +431 -431
  1134. package/themes/single-business/src/components/PaymentOptions/styles.tsx +74 -74
  1135. package/themes/single-business/src/components/PhoneInputNumber/index.tsx +118 -118
  1136. package/themes/single-business/src/components/PhoneInputNumber/styles.tsx +3 -3
  1137. package/themes/single-business/src/components/PreviousOrders/index.tsx +195 -195
  1138. package/themes/single-business/src/components/PreviousOrders/styles.tsx +33 -33
  1139. package/themes/single-business/src/components/ProductForm/index.tsx +694 -694
  1140. package/themes/single-business/src/components/ProductForm/styles.tsx +82 -82
  1141. package/themes/single-business/src/components/ProductIngredient/index.tsx +43 -43
  1142. package/themes/single-business/src/components/ProductIngredient/styles.tsx +7 -7
  1143. package/themes/single-business/src/components/ProductItemAccordion/index.tsx +276 -276
  1144. package/themes/single-business/src/components/ProductItemAccordion/styles.tsx +57 -57
  1145. package/themes/single-business/src/components/ProductOption/index.tsx +50 -50
  1146. package/themes/single-business/src/components/ProductOption/styles.tsx +11 -11
  1147. package/themes/single-business/src/components/ProductOptionSubOption/index.tsx +146 -146
  1148. package/themes/single-business/src/components/ProductOptionSubOption/styles.tsx +32 -32
  1149. package/themes/single-business/src/components/PromotionCard/index.tsx +103 -103
  1150. package/themes/single-business/src/components/PromotionCard/styles.tsx +28 -28
  1151. package/themes/single-business/src/components/Promotions/index.tsx +78 -78
  1152. package/themes/single-business/src/components/Promotions/styles.tsx +3 -3
  1153. package/themes/single-business/src/components/ReviewOrder/index.tsx +346 -346
  1154. package/themes/single-business/src/components/ReviewOrder/styles.tsx +44 -44
  1155. package/themes/single-business/src/components/SearchBar/index.tsx +108 -108
  1156. package/themes/single-business/src/components/SignupForm/index.tsx +642 -642
  1157. package/themes/single-business/src/components/SignupForm/styles.tsx +27 -27
  1158. package/themes/single-business/src/components/SingleProductCard/index.tsx +124 -124
  1159. package/themes/single-business/src/components/SingleProductCard/styles.tsx +23 -23
  1160. package/themes/single-business/src/components/StripeCardForm/index.tsx +97 -97
  1161. package/themes/single-business/src/components/StripeCardForm/naked.tsx +128 -128
  1162. package/themes/single-business/src/components/StripeCardForm/styles.tsx +32 -32
  1163. package/themes/single-business/src/components/StripeCardsList/index.tsx +143 -143
  1164. package/themes/single-business/src/components/StripeElementsForm/index.tsx +204 -204
  1165. package/themes/single-business/src/components/StripeElementsForm/naked.tsx +90 -90
  1166. package/themes/single-business/src/components/StripeElementsForm/styles.tsx +13 -13
  1167. package/themes/single-business/src/components/StripeRedirectForm/index.tsx +159 -159
  1168. package/themes/single-business/src/components/StripeRedirectForm/styles.tsx +23 -23
  1169. package/themes/single-business/src/components/TagSelector/index.tsx +94 -94
  1170. package/themes/single-business/src/components/TaxInformation/index.tsx +56 -56
  1171. package/themes/single-business/src/components/TaxInformation/styles.tsx +10 -10
  1172. package/themes/single-business/src/components/UpsellingProducts/index.tsx +259 -259
  1173. package/themes/single-business/src/components/UpsellingProducts/styles.tsx +57 -57
  1174. package/themes/single-business/src/components/UserDetails/index.tsx +130 -130
  1175. package/themes/single-business/src/components/UserDetails/styles.tsx +21 -21
  1176. package/themes/single-business/src/components/UserFormDetails/index.tsx +304 -304
  1177. package/themes/single-business/src/components/UserFormDetails/styles.tsx +37 -37
  1178. package/themes/single-business/src/components/UserProfile/index.tsx +185 -185
  1179. package/themes/single-business/src/components/UserProfile/styles.ts +42 -42
  1180. package/themes/single-business/src/components/UserProfileForm/index.tsx +254 -254
  1181. package/themes/single-business/src/components/UserProfileForm/styles.tsx +29 -29
  1182. package/themes/single-business/src/components/VerifyPhone/index.tsx +188 -188
  1183. package/themes/single-business/src/components/VerifyPhone/styles.tsx +43 -43
  1184. package/themes/single-business/src/components/shared/OAlert.tsx +55 -55
  1185. package/themes/single-business/src/components/shared/OBottomPopup.tsx +73 -73
  1186. package/themes/single-business/src/components/shared/OButton.tsx +132 -132
  1187. package/themes/single-business/src/components/shared/ODropDown.tsx +169 -169
  1188. package/themes/single-business/src/components/shared/OIcon.tsx +53 -53
  1189. package/themes/single-business/src/components/shared/OIconButton.tsx +127 -127
  1190. package/themes/single-business/src/components/shared/OIconText.tsx +53 -53
  1191. package/themes/single-business/src/components/shared/OInput.tsx +114 -114
  1192. package/themes/single-business/src/components/shared/OKeyButton.tsx +34 -34
  1193. package/themes/single-business/src/components/shared/OLink.tsx +80 -80
  1194. package/themes/single-business/src/components/shared/OModal.tsx +172 -172
  1195. package/themes/single-business/src/components/shared/OText.tsx +52 -52
  1196. package/themes/single-business/src/components/shared/OTextarea.tsx +36 -36
  1197. package/themes/single-business/src/components/shared/OToast.tsx +93 -93
  1198. package/themes/single-business/src/components/shared/OToggle.tsx +157 -157
  1199. package/themes/single-business/src/components/shared/index.tsx +33 -33
  1200. package/themes/single-business/src/config/constants.tsx +41 -41
  1201. package/themes/single-business/src/layouts/Container.tsx +23 -23
  1202. package/themes/single-business/src/layouts/SafeAreaContainer.tsx +6 -6
  1203. package/themes/single-business/src/providers/AlertProvider.tsx +43 -43
  1204. package/themes/single-business/src/providers/StoreUtil.tsx +50 -50
  1205. package/themes/single-business/src/types/index.tsx +445 -445
  1206. package/themes/single-business/src/utils/index.tsx +286 -286
  1207. package/themes/uber-eats/index.tsx +127 -127
  1208. package/themes/uber-eats/src/components/Account/index.tsx +201 -201
  1209. package/themes/uber-eats/src/components/Account/styles.tsx +21 -21
  1210. package/themes/uber-eats/src/components/ActiveOrders/index.tsx +135 -135
  1211. package/themes/uber-eats/src/components/ActiveOrders/styles.tsx +50 -50
  1212. package/themes/uber-eats/src/components/AddressDetails/index.tsx +71 -71
  1213. package/themes/uber-eats/src/components/AddressDetails/styles.tsx +13 -13
  1214. package/themes/uber-eats/src/components/AddressForm/index.tsx +715 -715
  1215. package/themes/uber-eats/src/components/AddressForm/styles.tsx +31 -31
  1216. package/themes/uber-eats/src/components/AddressList/index.tsx +315 -315
  1217. package/themes/uber-eats/src/components/AddressList/styles.tsx +23 -23
  1218. package/themes/uber-eats/src/components/BusinessBasicInformation/index.tsx +226 -226
  1219. package/themes/uber-eats/src/components/BusinessBasicInformation/styles.tsx +41 -41
  1220. package/themes/uber-eats/src/components/BusinessController/index.tsx +201 -201
  1221. package/themes/uber-eats/src/components/BusinessController/styles.tsx +58 -58
  1222. package/themes/uber-eats/src/components/BusinessInformation/index.tsx +101 -101
  1223. package/themes/uber-eats/src/components/BusinessInformation/styles.tsx +36 -36
  1224. package/themes/uber-eats/src/components/BusinessItemAccordion/index.tsx +145 -145
  1225. package/themes/uber-eats/src/components/BusinessItemAccordion/styles.tsx +61 -61
  1226. package/themes/uber-eats/src/components/BusinessProductsCategories/index.tsx +141 -141
  1227. package/themes/uber-eats/src/components/BusinessProductsCategories/styles.tsx +7 -7
  1228. package/themes/uber-eats/src/components/BusinessProductsList/index.tsx +195 -195
  1229. package/themes/uber-eats/src/components/BusinessProductsList/styles.tsx +13 -13
  1230. package/themes/uber-eats/src/components/BusinessProductsListing/index.tsx +411 -411
  1231. package/themes/uber-eats/src/components/BusinessProductsListing/styles.tsx +52 -52
  1232. package/themes/uber-eats/src/components/BusinessReviews/index.tsx +121 -121
  1233. package/themes/uber-eats/src/components/BusinessReviews/styles.tsx +33 -33
  1234. package/themes/uber-eats/src/components/BusinessTypeFilter/index.tsx +194 -194
  1235. package/themes/uber-eats/src/components/BusinessTypeFilter/styles.tsx +28 -28
  1236. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +247 -247
  1237. package/themes/uber-eats/src/components/BusinessesListing/styles.tsx +62 -62
  1238. package/themes/uber-eats/src/components/Cart/index.tsx +346 -346
  1239. package/themes/uber-eats/src/components/Cart/styles.tsx +26 -26
  1240. package/themes/uber-eats/src/components/CartContent/index.tsx +50 -50
  1241. package/themes/uber-eats/src/components/CartContent/styles.tsx +19 -19
  1242. package/themes/uber-eats/src/components/Checkout/index.tsx +709 -709
  1243. package/themes/uber-eats/src/components/Checkout/styles.tsx +72 -72
  1244. package/themes/uber-eats/src/components/CouponControl/index.tsx +120 -120
  1245. package/themes/uber-eats/src/components/CouponControl/styles.tsx +22 -22
  1246. package/themes/uber-eats/src/components/DriverTips/index.tsx +167 -167
  1247. package/themes/uber-eats/src/components/DriverTips/styles.tsx +47 -47
  1248. package/themes/uber-eats/src/components/FacebookLogin/index.tsx +124 -124
  1249. package/themes/uber-eats/src/components/FacebookLogin/styles.tsx +21 -21
  1250. package/themes/uber-eats/src/components/FloatingButton/index.tsx +74 -74
  1251. package/themes/uber-eats/src/components/FloatingButton/styles.tsx +31 -31
  1252. package/themes/uber-eats/src/components/GoogleMap/index.tsx +236 -236
  1253. package/themes/uber-eats/src/components/Help/index.tsx +54 -54
  1254. package/themes/uber-eats/src/components/Help/styles.tsx +11 -11
  1255. package/themes/uber-eats/src/components/HelpAccountAndPayment/index.tsx +67 -67
  1256. package/themes/uber-eats/src/components/HelpAccountAndPayment/styles.tsx +6 -6
  1257. package/themes/uber-eats/src/components/HelpGuide/index.tsx +66 -66
  1258. package/themes/uber-eats/src/components/HelpGuide/styles.tsx +6 -6
  1259. package/themes/uber-eats/src/components/HelpOrder/index.tsx +78 -78
  1260. package/themes/uber-eats/src/components/HelpOrder/styles.tsx +5 -5
  1261. package/themes/uber-eats/src/components/HighestRatedBusinesses/index.tsx +132 -132
  1262. package/themes/uber-eats/src/components/HighestRatedBusinesses/styles.tsx +6 -6
  1263. package/themes/uber-eats/src/components/Home/index.tsx +117 -117
  1264. package/themes/uber-eats/src/components/Home/styles.tsx +13 -13
  1265. package/themes/uber-eats/src/components/LanguageSelector/index.tsx +154 -154
  1266. package/themes/uber-eats/src/components/LanguageSelector/styles.tsx +18 -18
  1267. package/themes/uber-eats/src/components/LastOrders/index.tsx +104 -104
  1268. package/themes/uber-eats/src/components/LastOrders/styles.tsx +17 -17
  1269. package/themes/uber-eats/src/components/LoginForm/index.tsx +440 -440
  1270. package/themes/uber-eats/src/components/LoginForm/styles.tsx +65 -65
  1271. package/themes/uber-eats/src/components/LogoutButton/index.tsx +67 -67
  1272. package/themes/uber-eats/src/components/Messages/index.tsx +422 -422
  1273. package/themes/uber-eats/src/components/Messages/styles.tsx +23 -23
  1274. package/themes/uber-eats/src/components/MomentOption/index.tsx +211 -211
  1275. package/themes/uber-eats/src/components/MomentOption/styles.tsx +66 -66
  1276. package/themes/uber-eats/src/components/NavBar/index.tsx +122 -122
  1277. package/themes/uber-eats/src/components/NotFoundSource/index.tsx +55 -55
  1278. package/themes/uber-eats/src/components/NotFoundSource/styles.tsx +16 -16
  1279. package/themes/uber-eats/src/components/OrderDetails/index.tsx +513 -513
  1280. package/themes/uber-eats/src/components/OrderDetails/styles.tsx +140 -140
  1281. package/themes/uber-eats/src/components/OrderSummary/index.tsx +266 -266
  1282. package/themes/uber-eats/src/components/OrderSummary/styles.tsx +36 -36
  1283. package/themes/uber-eats/src/components/OrderTypeSelector/index.tsx +130 -130
  1284. package/themes/uber-eats/src/components/OrderTypeSelector/styles.tsx +6 -6
  1285. package/themes/uber-eats/src/components/OrdersOption/index.tsx +225 -225
  1286. package/themes/uber-eats/src/components/OrdersOption/styles.tsx +3 -3
  1287. package/themes/uber-eats/src/components/PaymentOptionCash/index.tsx +102 -102
  1288. package/themes/uber-eats/src/components/PaymentOptionCash/styles.tsx +18 -18
  1289. package/themes/uber-eats/src/components/PaymentOptionStripe/index.tsx +232 -232
  1290. package/themes/uber-eats/src/components/PaymentOptionStripe/styles.tsx +62 -62
  1291. package/themes/uber-eats/src/components/PaymentOptions/index.tsx +547 -547
  1292. package/themes/uber-eats/src/components/PaymentOptions/styles.tsx +41 -41
  1293. package/themes/uber-eats/src/components/PhoneInputNumber/index.tsx +108 -108
  1294. package/themes/uber-eats/src/components/PhoneInputNumber/styles.tsx +4 -4
  1295. package/themes/uber-eats/src/components/PreviousOrders/index.tsx +149 -149
  1296. package/themes/uber-eats/src/components/PreviousOrders/styles.tsx +34 -34
  1297. package/themes/uber-eats/src/components/ProductForm/index.tsx +480 -480
  1298. package/themes/uber-eats/src/components/ProductForm/styles.tsx +91 -91
  1299. package/themes/uber-eats/src/components/ProductIngredient/index.tsx +44 -44
  1300. package/themes/uber-eats/src/components/ProductIngredient/styles.tsx +7 -7
  1301. package/themes/uber-eats/src/components/ProductItemAccordion/index.tsx +252 -252
  1302. package/themes/uber-eats/src/components/ProductItemAccordion/styles.tsx +61 -61
  1303. package/themes/uber-eats/src/components/ProductOption/index.tsx +109 -109
  1304. package/themes/uber-eats/src/components/ProductOption/styles.tsx +27 -27
  1305. package/themes/uber-eats/src/components/ProductOptionSubOption/index.tsx +159 -159
  1306. package/themes/uber-eats/src/components/ProductOptionSubOption/styles.tsx +32 -32
  1307. package/themes/uber-eats/src/components/SearchBar/index.tsx +106 -106
  1308. package/themes/uber-eats/src/components/SignupForm/index.tsx +574 -574
  1309. package/themes/uber-eats/src/components/SignupForm/styles.tsx +29 -29
  1310. package/themes/uber-eats/src/components/SingleProductCard/index.tsx +88 -88
  1311. package/themes/uber-eats/src/components/SingleProductCard/styles.tsx +26 -26
  1312. package/themes/uber-eats/src/components/StripeCardsList/index.tsx +144 -144
  1313. package/themes/uber-eats/src/components/StripeElementsForm/index.tsx +188 -188
  1314. package/themes/uber-eats/src/components/StripeElementsForm/naked.tsx +90 -90
  1315. package/themes/uber-eats/src/components/StripeElementsForm/styles.tsx +9 -9
  1316. package/themes/uber-eats/src/components/TaxInformation/index.tsx +51 -51
  1317. package/themes/uber-eats/src/components/TaxInformation/styles.tsx +9 -9
  1318. package/themes/uber-eats/src/components/UpsellingProducts/index.tsx +189 -189
  1319. package/themes/uber-eats/src/components/UpsellingProducts/styles.tsx +37 -37
  1320. package/themes/uber-eats/src/components/UserDetails/index.tsx +125 -125
  1321. package/themes/uber-eats/src/components/UserDetails/styles.tsx +21 -21
  1322. package/themes/uber-eats/src/components/UserFormDetails/index.tsx +304 -304
  1323. package/themes/uber-eats/src/components/UserFormDetails/styles.tsx +38 -38
  1324. package/themes/uber-eats/src/components/UserProfileForm/index.tsx +106 -106
  1325. package/themes/uber-eats/src/components/UserProfileForm/styles.tsx +37 -37
  1326. package/themes/uber-eats/src/components/VerifyPhone/index.tsx +187 -187
  1327. package/themes/uber-eats/src/components/VerifyPhone/styles.tsx +43 -43
  1328. package/themes/uber-eats/src/components/shared/OAlert.tsx +53 -53
  1329. package/themes/uber-eats/src/components/shared/OBottomPopup.tsx +118 -118
  1330. package/themes/uber-eats/src/components/shared/OButton.tsx +133 -133
  1331. package/themes/uber-eats/src/components/shared/ODropDown.tsx +168 -168
  1332. package/themes/uber-eats/src/components/shared/OIcon.tsx +53 -53
  1333. package/themes/uber-eats/src/components/shared/OIconButton.tsx +134 -134
  1334. package/themes/uber-eats/src/components/shared/OInput.tsx +122 -122
  1335. package/themes/uber-eats/src/components/shared/OModal.tsx +151 -151
  1336. package/themes/uber-eats/src/components/shared/OText.tsx +52 -52
  1337. package/themes/uber-eats/src/components/shared/OToast.tsx +94 -94
  1338. package/themes/uber-eats/src/components/shared/index.tsx +22 -22
  1339. package/themes/uber-eats/src/config/constants.tsx +10 -10
  1340. package/themes/uber-eats/src/layouts/Container.tsx +26 -26
  1341. package/themes/uber-eats/src/layouts/SafeAreaContainer.tsx +6 -6
  1342. package/themes/uber-eats/src/providers/AlertProvider.tsx +43 -43
  1343. package/themes/uber-eats/src/providers/StoreUtil.tsx +58 -58
  1344. package/themes/uber-eats/src/types/@stripe/stripe-react-native/index.d.ts +1 -1
  1345. package/themes/uber-eats/src/types/index.tsx +451 -451
  1346. package/themes/uber-eats/src/types/ordering-api-sdk/index.d.ts +1 -1
  1347. package/themes/uber-eats/src/types/ordering-components/index.d.ts +1 -1
  1348. package/themes/uber-eats/src/types/react-hook-form/index.d.ts +1 -1
  1349. package/themes/uber-eats/src/types/react-native-credit-card-input/index.d.ts +1 -1
  1350. package/themes/uber-eats/src/types/react-native-fbsdk/index.d.ts +1 -1
  1351. package/themes/uber-eats/src/types/react-native-gesture-handler/index.d.ts +1 -1
  1352. package/themes/uber-eats/src/types/react-native-gifted-chat/index.d.ts +1 -1
  1353. package/themes/uber-eats/src/types/react-native-image-picker/index.d.ts +1 -1
  1354. package/themes/uber-eats/src/types/react-native-restart/index.d.ts +1 -1
  1355. package/themes/uber-eats/src/types/styled-components/index.d.ts +1 -1
  1356. package/themes/uber-eats/src/utils/index.tsx +191 -191
@@ -1,1039 +1,1118 @@
1
- import React, { useEffect, useRef, useState, useCallback } from 'react';
2
- import {
3
- View,
4
- Keyboard,
5
- TextInput,
6
- TouchableOpacity,
7
- StyleSheet,
8
- Dimensions,
9
- I18nManager,
10
- SafeAreaView,
11
- Platform,
12
- Button
13
- } from 'react-native';
14
- import {
15
- ProductForm as ProductOptions,
16
- useSession,
17
- useLanguage,
18
- useOrder,
19
- useUtils,
20
- ToastType,
21
- useToast
22
- } from 'ordering-components/native';
23
- import { useTheme } from 'styled-components/native';
24
- import { ProductIngredient } from '../ProductIngredient';
25
- import { ProductOption } from '../ProductOption';
26
- import Swiper from 'react-native-swiper'
27
- import FastImage from 'react-native-fast-image';
28
- import IconAntDesign from 'react-native-vector-icons/AntDesign';
29
- import YoutubePlayer from "react-native-youtube-iframe"
30
-
31
- import {
32
- WrapHeader,
33
- TopHeader,
34
- ProductTitle,
35
- ProductDescription,
36
- ProductEditions,
37
- SectionTitle,
38
- WrapperIngredients,
39
- WrapperSubOption,
40
- ProductComment,
41
- ProductActions,
42
- ExtraOptionWrap,
43
- WeightUnitSwitch,
44
- WeightUnitItem,
45
- TopActions,
46
- ProductSummary
47
- } from './styles';
48
- import { OButton, OIcon, OInput, OText } from '../shared';
49
- import { ScrollView } from 'react-native-gesture-handler';
50
- import { ProductOptionSubOption } from '../ProductOptionSubOption';
51
- import { NotFoundSource } from '../NotFoundSource';
52
- import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
53
- const windowWidth = Dimensions.get('window').width;
54
-
55
- export const ProductOptionsUI = (props: any) => {
56
- const {
57
- navigation,
58
- editMode,
59
- isSoldOut,
60
- productCart,
61
- increment,
62
- decrement,
63
- handleChangeProductCartQuantity,
64
- showOption,
65
- maxProductQuantity,
66
- errors,
67
- handleSave,
68
- handleChangeIngredientState,
69
- handleChangeSuboptionState,
70
- handleChangeCommentState,
71
- productObject,
72
- productAddedToCartLength
73
- } = props;
74
-
75
- const theme = useTheme();
76
- const [, { showToast }] = useToast()
77
-
78
- const styles = StyleSheet.create({
79
- mainContainer: {
80
-
81
- },
82
- headerItem: {
83
- overflow: 'hidden',
84
- backgroundColor: theme.colors.clear,
85
- width: 35,
86
- marginVertical: 18,
87
- },
88
- optionContainer: {
89
- marginBottom: 20,
90
- },
91
- comment: {
92
- borderWidth: 1,
93
- borderRadius: 8,
94
- borderColor: theme.colors.border,
95
- height: 100,
96
- alignItems: 'flex-start',
97
- },
98
- quantityControl: {
99
- flexDirection: 'row',
100
- justifyContent: 'space-between',
101
- alignItems: 'center',
102
- marginRight: 10,
103
- },
104
- btnBackArrow: {
105
- borderWidth: 0,
106
- backgroundColor: '#FFF',
107
- borderRadius: 24,
108
- marginRight: 15,
109
- },
110
- productHeaderSkeleton: {
111
- flexDirection: 'row',
112
- width: '100%',
113
- position: 'relative',
114
- maxHeight: 260,
115
- height: 260,
116
- resizeMode: 'cover',
117
- minHeight: 200,
118
- zIndex: 0,
119
- },
120
- extraItem: {
121
- paddingHorizontal: 7,
122
- paddingBottom: 10,
123
- borderBottomWidth: 1,
124
- borderBottomColor: theme.colors.border,
125
- justifyContent: 'center',
126
- },
127
- slide1: {
128
- flex: 1,
129
- },
130
- mainSwiper: {
131
- height: 258,
132
- },
133
- swiperButton: {
134
- marginHorizontal: 25,
135
- alignItems: 'center',
136
- justifyContent: 'center',
137
- width: 32,
138
- height: 32,
139
- borderRadius: 16,
140
- backgroundColor: 'rgba(208,208,208,0.5)'
141
- },
142
- unitItem: {
143
- fontSize: 12
144
- },
145
- productTagWrapper: {
146
- flexDirection: 'row',
147
- alignItems: 'center'
148
- },
149
- productTagImageStyle: {
150
- width: 32,
151
- height: 32,
152
- borderRadius: 8,
153
- resizeMode: 'cover'
154
- },
155
- productTagNameStyle: {
156
- paddingHorizontal: 6,
157
- marginRight: 5
158
- },
159
- actionContainer: {
160
- flexDirection: 'row',
161
- alignItems: 'center',
162
- justifyContent: 'space-between',
163
- width: '100%',
164
- marginTop: 10
165
- }
166
- });
167
-
168
- const [{ parsePrice, optimizeImage }] = useUtils();
169
- const [, t] = useLanguage();
170
- const [orderState] = useOrder();
171
- const [{ auth }] = useSession();
172
- const { product, loading, error } = productObject;
173
- const [gallery, setGallery] = useState([])
174
- const [thumbsSwiper, setThumbsSwiper] = useState(0)
175
- const [indexGallery, setIndexGallery] = useState(0)
176
- const [selOpt, setSelectedOpt] = useState(-1);
177
- const [isHaveWeight, setIsHaveWeight] = useState(false)
178
- const [playing, setPlaying] = useState(false);
179
- const [qtyBy, setQtyBy] = useState({
180
- weight_unit: false,
181
- pieces: true
182
- })
183
- const [pricePerWeightUnit, setPricePerWeightUnit] = useState<any>(null)
184
- const scrollViewRef = useRef<any>(null);
185
- const swiperRef: any = useRef(null)
186
- const [optionLayout, setOptionLayout] = useState<any>({})
187
- const [headerRefHeight, setHeaderRefHeight] = useState(0)
188
- const [summaryRefHeight, setSummaryRefHeight] = useState(0)
189
- const [isScrollAvailable, setIsScrollAvailable] = useState(null)
190
- const [editionsLayoutY, setEditionsLayoutY] = useState(null)
191
-
192
- const isError = (id: number) => {
193
- let bgColor = theme.colors.white;
194
- if (errors[`id:${id}`]) {
195
- bgColor = 'rgba(255, 0, 0, 0.05)';
196
- }
197
- if (maxProductQuantity <= 0) {
198
- bgColor = 'hsl(0, 0%, 72%)';
199
- }
200
- if (isSoldOut) {
201
- bgColor = theme.colors.white;
202
- }
203
- return bgColor;
204
- };
205
-
206
- const handleSaveProduct = () => {
207
- if (!productCart.quantity) {
208
- showToast(ToastType.Error, t('VALIDATION_ERROR_REQUIRED', 'The quantity field is required').replace('_attribute_', t('PRODUCT_POTIONS_QUANTITY', 'Quantity')))
209
- return
210
- }
211
- const isErrors = Object.values(errors).length > 0;
212
- if (!isErrors) {
213
- handleSave && handleSave();
214
- return;
215
- }
216
- };
217
-
218
- const hasRespected = (options: Array<any>, respect_id: number) => {
219
- if (respect_id == null) return;
220
- const option: any = options.filter(({ id }: any) => id === selOpt);
221
- if (option == undefined) return false;
222
- if (option?.suboptions?.length == 0) return false;
223
- const sel = option[0]?.suboptions?.filter(
224
- ({ id }: any) => id === respect_id,
225
- );
226
- return sel?.[0]?.id !== undefined;
227
- };
228
-
229
- const handleChangeMainIndex = (index: number) => {
230
- if (index < 0 || index > gallery.length - 1) {
231
- setThumbsSwiper(0)
232
- return
233
- }
234
- setThumbsSwiper(index)
235
- }
236
-
237
- const handleClickThumb = (index: number) => {
238
- if (index !== indexGallery) {
239
- swiperRef?.current.scrollBy(index - thumbsSwiper, true);
240
- setIndexGallery(index)
241
- }
242
- }
243
-
244
- const handleRedirectLogin = () => {
245
- navigation.navigate('Login', {
246
- store_slug: props.businessSlug
247
- });
248
- };
249
-
250
- const handleSwitchQtyUnit = (val: string) => {
251
- setQtyBy({ [val]: true, [!val]: false })
252
- }
253
-
254
- const onStateChange = useCallback((state) => {
255
- if (state === "ended") {
256
- setPlaying(false);
257
- }
258
- }, []);
259
-
260
- const togglePlaying = useCallback(() => {
261
- setPlaying((prev) => !prev);
262
- }, []);
263
-
264
- const onChangeProductCartQuantity = (quantity: number) => {
265
- if (quantity > maxProductQuantity) {
266
- showToast(ToastType.Error, t('MAX_QUANTITY', 'The max quantity is _number_').replace('_number_', maxProductQuantity))
267
- return
268
- }
269
- handleChangeProductCartQuantity(quantity)
270
- }
271
-
272
- const scrollDown = (id: any) => {
273
- const isErrors = Object.values(errors).length > 0
274
- if (!isErrors) {
275
- return
276
- }
277
- const targetOptionId = Object.getOwnPropertyNames(errors).filter(item => !item.includes(id))[0]
278
- const targetY = optionLayout[targetOptionId]?.y
279
- if (targetY) {
280
- scrollViewRef.current.scrollTo({
281
- y: targetY + headerRefHeight + summaryRefHeight,
282
- animated: true
283
- })
284
- }
285
- }
286
-
287
- const handleOnLayout = (event: any, optionId: any) => {
288
- const _optionLayout = { ...optionLayout }
289
- const optionKey = 'id:' + optionId
290
- _optionLayout[optionKey] = { y: event.nativeEvent.layout?.y }
291
- setOptionLayout(_optionLayout)
292
- }
293
-
294
- const saveErrors =
295
- orderState.loading ||
296
- maxProductQuantity === 0 ||
297
- Object.keys(errors).length > 0;
298
-
299
-
300
- const ExtraOptions = ({ eID, options }: any) => (
301
- <>
302
- {options.map(({ id, name, respect_to, suboptions }: any) => (
303
- <React.Fragment key={`cont_key_${id}`}>
304
- {respect_to == null && suboptions?.length > 0 && (
305
- <TouchableOpacity
306
- key={`eopt_key_${id}`}
307
- onPress={() => {
308
- setSelectedOpt(id)
309
- scrollViewRef?.current?.scrollTo && scrollViewRef.current.scrollTo({
310
- y: optionLayout[`id:${id}`]?.y + editionsLayoutY - 50,
311
- animated: true
312
- })
313
- }}
314
- style={[
315
- styles.extraItem,
316
- {
317
- borderBottomColor:
318
- selOpt == id ? theme.colors.textNormal : theme.colors.backgroundPage,
319
- },
320
- ]}>
321
- <OText
322
- color={
323
- selOpt == id ? theme.colors.textNormal : theme.colors.textSecondary
324
- }
325
- size={12}
326
- weight={selOpt == id ? '600' : 'normal'}
327
- style={{ maxWidth: 150 }}
328
- numberOfLines={1}>
329
- {name}
330
- </OText>
331
- </TouchableOpacity>
332
- )}
333
- </React.Fragment>
334
- ))}
335
- </>
336
- );
337
-
338
- const handleScroll = ({ nativeEvent: { contentOffset, layoutMeasurement } }: any) => {
339
-
340
- const _topOption = Object.keys(optionLayout).find(((option: any) => Math.abs(contentOffset?.y - layoutMeasurement?.height - optionLayout[option]?.y) < 20))
341
- if (_topOption) {
342
- const _topOptionId = Number(_topOption.replace('id:', ''))
343
- }
344
- }
345
-
346
- const handleGoBack = navigation?.canGoBack()
347
- ? () => navigation.goBack()
348
- : () => navigation.navigate('Business', { store: props.businessSlug })
349
-
350
- useEffect(() => {
351
- if (isScrollAvailable) {
352
- setIsScrollAvailable(null)
353
- scrollDown(isScrollAvailable)
354
- }
355
- }, [errors])
356
-
357
- useEffect(() => {
358
- const imageList: any = []
359
- const videoList: any = []
360
- product?.images?.length > 0 ? imageList.push(product.images) : imageList.push(theme?.images?.dummies?.product)
361
- if (product?.gallery && product?.gallery.length > 0) {
362
- for (const img of product?.gallery) {
363
- if (img?.file) {
364
- imageList.push(img?.file)
365
- }
366
- if (img?.video) {
367
- const keys = img?.video.split('/')
368
- let _videoId = keys[keys.length - 1]
369
-
370
- if (_videoId.includes('watch')) {
371
- const __url = _videoId.split('=')[1]
372
- _videoId = __url
373
- } else if (_videoId.includes('?')) {
374
- const __url = _videoId.split('?')[0]
375
- _videoId = __url
376
- }
377
-
378
- if (_videoId.search(/&/i) >= 0) {
379
- _videoId = _videoId.split('&')[0]
380
- } else if (_videoId.search(/\?/i) >= 0) {
381
- _videoId = _videoId.split('?')[0]
382
- }
383
- if ((_videoId.length === 11)) {
384
- videoList.push(_videoId)
385
- }
386
- }
387
- }
388
- }
389
- const gallery = imageList.concat(videoList)
390
- setGallery(gallery)
391
-
392
- if (product?.weight && product?.weight_unit) {
393
- setIsHaveWeight(true)
394
- setPricePerWeightUnit(product?.price / product?.weight)
395
- }
396
- }, [product])
397
-
398
- const ActionButton = () => {
399
- return (
400
- <View
401
- style={{
402
- width: isHaveWeight ? '100%' : ((isSoldOut || maxProductQuantity <= 0) ? '60%' : '40%'),
403
- }}>
404
- {((productCart &&
405
- auth &&
406
- orderState.options?.address_id) || (isSoldOut || maxProductQuantity <= 0)) && (
407
- <OButton
408
- onClick={() => handleSaveProduct()}
409
- imgRightSrc=""
410
- text={`${orderState.loading
411
- ? t('LOADING', 'Loading')
412
- : (isSoldOut || maxProductQuantity <= 0)
413
- ? t('SOLD_OUT', 'Sold out')
414
- : editMode
415
- ? t('UPDATE', 'Update')
416
- : t('ADD', 'Add')
417
- }`}
418
- isDisabled={isSoldOut || maxProductQuantity <= 0 || (product?.minimum_per_order && ((productCart?.quantity + productAddedToCartLength) < product?.minimum_per_order)) || (product?.maximum_per_order && ((productCart?.quantity + productAddedToCartLength) > product?.maximum_per_order))}
419
- textStyle={{
420
- color: saveErrors || isSoldOut || maxProductQuantity <= 0 ? theme.colors.primary : theme.colors.white,
421
- fontSize: orderState.loading || editMode ? 10 : 14
422
- }}
423
- style={{
424
- backgroundColor: saveErrors || isSoldOut || maxProductQuantity <= 0 || (product?.minimum_per_order && ((productCart?.quantity + productAddedToCartLength) < product?.minimum_per_order)) || (product?.maximum_per_order && ((productCart?.quantity + productAddedToCartLength) > product?.maximum_per_order)) ? theme.colors.lightGray : theme.colors.primary,
425
- borderColor: saveErrors || isSoldOut || maxProductQuantity <= 0 || (product?.minimum_per_order && ((productCart?.quantity + productAddedToCartLength) < product?.minimum_per_order)) || (product?.maximum_per_order && ((productCart?.quantity + productAddedToCartLength) > product?.maximum_per_order)) ? theme.colors.white : theme.colors.primary,
426
- opacity: saveErrors || isSoldOut || maxProductQuantity <= 0 ? 0.3 : 1,
427
- borderRadius: 7.6,
428
- height: 44,
429
- shadowOpacity: 0,
430
- borderWidth: 1,
431
- marginTop: isHaveWeight ? 10 : 0
432
- }}
433
- />
434
- )}
435
- {auth &&
436
- !orderState.options?.address_id &&
437
- (orderState.loading ? (
438
- <OButton
439
- isDisabled
440
- text={t('LOADING', 'Loading')}
441
- imgRightSrc=""
442
- textStyle={{ fontSize: 10 }}
443
- />
444
- ) : (
445
- <OButton onClick={navigation.navigate('AddressList')} />
446
- ))}
447
- {!auth && (
448
- <OButton
449
- isDisabled={isSoldOut || maxProductQuantity <= 0}
450
- onClick={() => handleRedirectLogin()}
451
- text={
452
- isSoldOut || maxProductQuantity <= 0
453
- ? t('SOLD_OUT', 'Sold out')
454
- : t('LOGIN_SIGNUP', 'Login / Sign Up')
455
- }
456
- imgRightSrc=""
457
- textStyle={{ color: theme.colors.primary, fontSize: 14 }}
458
- style={{
459
- height: 44,
460
- borderColor: theme.colors.primary,
461
- backgroundColor: theme.colors.white,
462
- }}
463
- />
464
- )}
465
- </View>
466
- )
467
- }
468
-
469
- useEffect(() => {
470
- const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => {
471
- scrollViewRef.current.scrollToEnd({ animated: true })
472
- })
473
- return () => {
474
- keyboardDidShowListener.remove()
475
- }
476
- }, [])
477
-
478
-
479
- return (
480
- <SafeAreaView style={{ flex: 1 }}>
481
- <TopHeader>
482
- <TopActions onPress={() => handleGoBack()}>
483
- <IconAntDesign name='arrowleft' size={26} />
484
- </TopActions>
485
- </TopHeader>
486
- {!error && (
487
- <ScrollView
488
- ref={scrollViewRef}
489
- contentContainerStyle={{ paddingBottom: 80 }}
490
- stickyHeaderIndices={[2]}
491
- onScroll={handleScroll}
492
- >
493
- <WrapHeader onLayout={(event: any) => setHeaderRefHeight(event.nativeEvent.layout?.height)}>
494
- {loading && !product ? (
495
- <View style={styles.productHeaderSkeleton}>
496
- <Placeholder Animation={Fade}>
497
- <PlaceholderLine
498
- height={258}
499
- style={{ borderRadius: 0 }}
500
- width={windowWidth}
501
- />
502
- </Placeholder>
503
- </View>
504
- ) : (
505
- <>
506
- <Swiper
507
- loop={false}
508
- ref={swiperRef}
509
- showsButtons={true}
510
- style={styles.mainSwiper}
511
- showsPagination={false}
512
- onIndexChanged={(index) => handleChangeMainIndex(index)}
513
- prevButton={
514
- <View style={styles.swiperButton}>
515
- <IconAntDesign
516
- name="caretleft"
517
- color={theme.colors.white}
518
- size={13}
519
- // style={styles.starIcon}
520
- />
521
- </View>
522
- }
523
- nextButton={
524
- <View style={styles.swiperButton}>
525
- <IconAntDesign
526
- name="caretright"
527
- color={theme.colors.white}
528
- size={13}
529
- // style={styles.starIcon}
530
- />
531
- </View>
532
- }
533
- >
534
- {gallery && gallery.length > 0 && gallery.map((img, i) => (
535
- <View
536
- style={styles.slide1}
537
- key={i}
538
- >
539
- {String(img).includes('image') || typeof img === 'number' ? (
540
- <FastImage
541
- style={{ height: '100%', opacity: isSoldOut ? 0.5 : 1, aspectRatio: 3 / 2 }}
542
- source={typeof img !== 'number' ? {
543
- uri: optimizeImage(img, 'h_1024,c_limit'),
544
- priority: FastImage.priority.normal,
545
- } : img}
546
- />
547
- ) : (
548
- <>
549
- <YoutubePlayer
550
- height={300}
551
- play={playing}
552
- videoId={img}
553
- onChangeState={onStateChange}
554
- />
555
- <Button title={playing ? "pause" : "play"} onPress={togglePlaying} />
556
- </>
557
- )}
558
- </View>
559
- ))}
560
- </Swiper>
561
- <ScrollView
562
- horizontal
563
- contentContainerStyle={{
564
- paddingHorizontal: 30,
565
- paddingVertical: 15
566
- }}
567
- >
568
- {gallery.length > 0 && gallery.map((img, index) => (
569
- <TouchableOpacity
570
- key={index}
571
- onPress={() => handleClickThumb(index)}
572
- >
573
- <View
574
- style={{
575
- height: 56,
576
- borderRadius: 8,
577
- margin: 8,
578
- opacity: index === thumbsSwiper ? 1 : 0.8
579
- }}
580
- >
581
- {String(img).includes('image') ? (
582
- <OIcon
583
- url={img}
584
- style={{
585
- borderColor: theme.colors.lightGray,
586
- borderRadius: 8,
587
- minHeight: '100%',
588
- opacity: isSoldOut ? 0.5 : 1
589
- }}
590
- width={56}
591
- height={56}
592
- cover
593
- />
594
- ) : (
595
- <OIcon
596
- url={'http://img.youtube.com/vi/' + img + '/0.jpg'}
597
- style={{
598
- borderColor: theme.colors.lightGray,
599
- borderRadius: 8,
600
- minHeight: '100%',
601
- opacity: isSoldOut ? 0.5 : 1
602
- }}
603
- width={56}
604
- height={56}
605
- cover
606
- />
607
- )}
608
- </View>
609
- </TouchableOpacity>
610
-
611
- ))}
612
- </ScrollView>
613
- </>
614
- )}
615
- </WrapHeader>
616
- <ProductSummary onLayout={(event: any) => setSummaryRefHeight(event.nativeEvent.layout?.height)}>
617
- <ProductTitle>
618
- {loading && !product ? (
619
- <Placeholder Animation={Fade}>
620
- <View
621
- style={{
622
- flexDirection: 'row',
623
- justifyContent: 'space-between',
624
- }}>
625
- <PlaceholderLine width={40} height={20} />
626
- <PlaceholderLine width={30} height={20} />
627
- </View>
628
- </Placeholder>
629
- ) : (
630
- <>
631
- <View style={{ flexDirection: 'row' }}>
632
- <OText
633
- size={20}
634
- lineHeight={30}
635
- weight={'600'}
636
- style={{ flex: 1, marginBottom: 10 }}>
637
- {product?.name || productCart.name}
638
- </OText>
639
- {!!product?.calories && (
640
- <OText size={16} style={{ color: '#808080' }}>{product?.calories} cal
641
- </OText>
642
- )}
643
- </View>
644
- {((!!product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (!!product?.estimated_person)) && (
645
- <OText size={14} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={'#909BA9'} mBottom={7}>
646
- {
647
- ((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (productCart?.sku && productCart?.sku !== '-1' && productCart?.sku !== '1'))
648
- && <>{t('SKU', 'Sku')}{' '}{product?.sku || productCart?.sku}</>
649
- }
650
- {product?.sku && product?.sku !== '-1' && product?.sku !== '1' && product?.estimated_person && (
651
- <>&nbsp;&#183;&nbsp;</>
652
- )}
653
- {product?.estimated_person
654
- && <>{product?.estimated_person}{' '}{t('ESTIMATED_PERSONS', 'persons')}</>
655
- }
656
- </OText>
657
- )}
658
- {isHaveWeight ? (
659
- <OText size={16} lineHeight={24} color={theme.colors.primary}>{parsePrice(pricePerWeightUnit)} / {product?.weight_unit}</OText>
660
- ) : (
661
- <View style={{ flexDirection: 'row', marginBottom: 10 }}>
662
- <OText size={16} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={theme.colors.primary}>{productCart.price ? parsePrice(productCart.price) : ''}</OText>
663
- {product?.offer_price !== null && product?.in_offer && (
664
- <OText style={{
665
- fontSize: 14,
666
- color: '#808080',
667
- textDecorationLine: 'line-through',
668
- marginLeft: 7,
669
- marginRight: 7
670
- }}>{product?.offer_price ? parsePrice(product?.offer_price) : ''}</OText>
671
- )}
672
- </View>
673
- )}
674
- </>
675
- )}
676
- </ProductTitle>
677
- <ProductDescription>
678
- <OText color={theme.colors.textSecondary} size={12} lineHeight={18}>
679
- {product?.description || productCart?.description}
680
- </OText>
681
- </ProductDescription>
682
- <ScrollView
683
- horizontal
684
- showsHorizontalScrollIndicator={false}
685
- contentContainerStyle={{ paddingBottom: 30 }}
686
- >
687
- {product?.tags?.map((tag: any) => (
688
- <View
689
- key={tag.id}
690
- style={styles.productTagWrapper}
691
- >
692
- {!!tag?.image ? (
693
- <OIcon
694
- url={optimizeImage(tag?.image, 'h_40,c_limit')}
695
- style={styles.productTagImageStyle}
696
- />
697
- ) : (
698
- <OIcon
699
- src={theme.images?.dummies?.product}
700
- style={styles.productTagImageStyle}
701
- />
702
- )}
703
- <OText color={theme.colors.textSecondary} size={12} style={styles.productTagNameStyle}>{tag.name}</OText>
704
- </View>
705
- ))}
706
- </ScrollView>
707
- </ProductSummary>
708
- {(!loading && product) && (
709
- <ExtraOptionWrap
710
- horizontal
711
- showsHorizontalScrollIndicator={false}
712
- style={{
713
- marginBottom: 20,
714
- borderBottomWidth: 1,
715
- borderBottomColor: theme.colors.border,
716
- marginHorizontal: 30,
717
- backgroundColor: theme.colors.backgroundPage,
718
- }}
719
- >
720
- {product?.ingredients.length > 0 && (
721
- <TouchableOpacity
722
- key={`eopt_key_01`}
723
- onPress={() => {
724
- setSelectedOpt(0)
725
- scrollViewRef?.current?.scrollTo && scrollViewRef.current.scrollTo({
726
- y: optionLayout[`id:0`]?.y + editionsLayoutY - 50,
727
- animated: true
728
- })
729
- }}
730
- style={[
731
- styles.extraItem,
732
- {
733
- borderBottomColor:
734
- selOpt == 0 ? theme.colors.textNormal : theme.colors.backgroundPage,
735
- },
736
- ]}>
737
- <OText
738
- color={selOpt == 0 ? theme.colors.textNormal : theme.colors.textSecondary}
739
- size={12}
740
- weight={selOpt == 0 ? '600' : 'normal'}>
741
- {t('INGREDIENTS', 'Ingredients')}
742
- </OText>
743
- </TouchableOpacity>
744
- )}
745
- {product?.extras.map((extra: any) =>
746
- <ExtraOptions key={extra.id} options={extra.options} />
747
- )}
748
- </ExtraOptionWrap>
749
- )}
750
- {loading && !product ? (
751
- <>
752
- {[...Array(2)].map((item, i) => (
753
- <Placeholder
754
- key={i}
755
- style={{ marginBottom: 20 }}
756
- Animation={Fade}>
757
- <PlaceholderLine
758
- height={40}
759
- style={{ flex: 1, marginTop: 10 }}
760
- />
761
- {[...Array(3)].map((item, i) => (
762
- <View
763
- key={'place_key_' + i}
764
- style={{
765
- flexDirection: 'row',
766
- justifyContent: 'space-between',
767
- }}>
768
- <PlaceholderLine
769
- height={30}
770
- width={10}
771
- style={{ marginBottom: 20 }}
772
- />
773
- <PlaceholderLine
774
- height={30}
775
- width={50}
776
- style={{ marginBottom: 20 }}
777
- />
778
- <PlaceholderLine
779
- height={30}
780
- width={30}
781
- style={{ marginBottom: 20 }}
782
- />
783
- </View>
784
- ))}
785
- </Placeholder>
786
- ))}
787
- </>
788
- ) : (
789
- <ProductEditions
790
- onLayout={(event: any) => {
791
- setEditionsLayoutY(event.nativeEvent.layout?.y)
792
- }}
793
- >
794
- <>
795
- {product?.ingredients.length > 0 && (
796
- <View style={styles.optionContainer} onLayout={(event: any) => handleOnLayout(event, 0)}>
797
- <SectionTitle>
798
- <OText size={16}>
799
- {t('INGREDIENTS', 'Ingredients')}
800
- </OText>
801
- </SectionTitle>
802
- <WrapperIngredients>
803
- {product?.ingredients.map((ingredient: any) => (
804
- <ProductIngredient
805
- key={ingredient.id}
806
- ingredient={ingredient}
807
- state={
808
- productCart.ingredients[`id:${ingredient.id}`]
809
- }
810
- onChange={handleChangeIngredientState}
811
- isSoldOut={isSoldOut}
812
- />
813
- ))}
814
- </WrapperIngredients>
815
- </View>
816
- )}
817
- {product?.extras.sort((a: any, b: any) => a.rank - b.rank).map((extra: any) =>
818
- extra.options.sort((a: any, b: any) => a.rank - b.rank).map((option: any) => {
819
- const currentState =
820
- productCart.options[`id:${option.id}`] || {};
821
- return (
822
- <React.Fragment key={`popt_${option.id}`}>
823
- {showOption(option) && (
824
- <View style={styles.optionContainer} onLayout={(event: any) => handleOnLayout(event, option?.id)}>
825
- <ProductOption
826
- option={option}
827
- currentState={currentState}
828
- error={errors[`id:${option.id}`]}>
829
- <WrapperSubOption
830
- style={{
831
- backgroundColor: isError(option.id),
832
- borderRadius: 7.6
833
- }}>
834
- {option.suboptions.sort((a: any, b: any) => a.rank - b.rank).map(
835
- (suboption: any) => {
836
- const currentState =
837
- productCart.options[
838
- `id:${option.id}`
839
- ]?.suboptions[
840
- `id:${suboption.id}`
841
- ] || {};
842
- const balance =
843
- productCart.options[
844
- `id:${option.id}`
845
- ]?.balance || 0;
846
- return (
847
- <ProductOptionSubOption
848
- key={suboption.id}
849
- isSoldOut={isSoldOut}
850
- onChange={
851
- handleChangeSuboptionState
852
- }
853
- balance={balance}
854
- option={option}
855
- suboption={suboption}
856
- state={currentState}
857
- disabled={
858
- isSoldOut ||
859
- maxProductQuantity <= 0
860
- }
861
- setIsScrollAvailable={setIsScrollAvailable}
862
- error={errors[`id:${option.id}`]}
863
- />
864
- );
865
- },
866
- )}
867
- </WrapperSubOption>
868
- </ProductOption>
869
- </View>
870
- )}
871
- </React.Fragment>
872
- );
873
- }),
874
- )}
875
- </>
876
- {!product?.hide_special_instructions && (
877
- <ProductComment>
878
- <SectionTitle>
879
- <OText size={16} weight={'600'} lineHeight={24}>
880
- {t('SPECIAL_COMMENT', 'Special comment')}
881
- </OText>
882
- </SectionTitle>
883
- <OInput
884
- multiline
885
- placeholder={t('SPECIAL_COMMENT', 'Special comment')}
886
- value={productCart.comment}
887
- onChange={(val: string) =>
888
- handleChangeCommentState({ target: { value: val } })
889
- }
890
- isDisabled={
891
- !(productCart && !isSoldOut && maxProductQuantity)
892
- }
893
- style={styles.comment}
894
- />
895
- </ProductComment>
896
- )}
897
- </ProductEditions>
898
- )}
899
- {!!error && error.length > 0 && (
900
- <NotFoundSource content={error[0]?.message || error[0]} />
901
- )}
902
- </ScrollView>
903
- )}
904
- {!loading && !error && product && (
905
- <ProductActions ios={Platform?.OS === 'ios'} isColumn={isHaveWeight}>
906
- <View style={styles.actionContainer}>
907
- <View>
908
- <OText size={16} lineHeight={24} weight={'600'}>
909
- {productCart.total ? parsePrice(productCart?.total) : ''}
910
- </OText>
911
- {product?.minimum_per_order && (productCart?.quantity + productAddedToCartLength) <= product?.minimum_per_order && productCart?.quantity !== 1 && <OText size={12} color={theme.colors?.red}>{t('MOBILE_MINIMUM_TO_ORDER', 'Min. _number_ ').replace('_number_', product?.minimum_per_order)}</OText>}
912
- {product?.maximum_per_order && (productCart?.quantity + productAddedToCartLength) >= product?.maximum_per_order && <OText size={12} color={theme.colors?.red}>{t('MOBILE_MAXIMUM_TO_ORDER', 'Max. _number_'.replace('_number_', product?.maximum_per_order))}</OText>}
913
- </View>
914
- {productCart && !isSoldOut && maxProductQuantity > 0 && (
915
- <>
916
- <View style={styles.quantityControl}>
917
- <TouchableOpacity
918
- onPress={decrement}
919
- disabled={productCart.quantity === 1 || !productCart.quantity || isSoldOut || ((productCart?.quantity + productAddedToCartLength) <= product?.minimum_per_order)}>
920
- <OIcon
921
- src={theme.images.general.minus}
922
- width={16}
923
- color={
924
- productCart.quantity === 1 || isSoldOut
925
- ? theme.colors.backgroundGray
926
- : theme.colors.backgroundDark
927
- }
928
- />
929
- </TouchableOpacity>
930
- {qtyBy?.pieces && (
931
- <TextInput
932
- keyboardType='numeric'
933
- value={`${productCart?.quantity > 0 ? productCart?.quantity : ''}`}
934
- onChangeText={(val: any) => onChangeProductCartQuantity(parseInt(val))}
935
- editable={!orderState.loading}
936
- style={{
937
- borderWidth: 1,
938
- textAlign: 'center',
939
- minWidth: 60,
940
- borderRadius: 8,
941
- borderColor: theme.colors.inputBorderColor,
942
- height: 44,
943
- marginHorizontal: 10
944
- }}
945
- />
946
- )}
947
- {qtyBy?.weight_unit && (
948
- <OText
949
- size={12}
950
- lineHeight={18}
951
- style={{ minWidth: 40, textAlign: 'center' }}
952
- >
953
- {productCart.quantity * product?.weight}
954
- </OText>
955
- )}
956
- <TouchableOpacity
957
- onPress={increment}
958
- disabled={
959
- maxProductQuantity <= 0 ||
960
- (productCart?.quantity + productAddedToCartLength) >= maxProductQuantity ||
961
- ((productCart?.quantity + productAddedToCartLength) >= product?.maximum_per_order && product?.maximum_per_order) ||
962
- isSoldOut
963
- }>
964
- <OIcon
965
- src={theme.images.general.plus}
966
- width={16}
967
- color={
968
- maxProductQuantity <= 0 ||
969
- (productCart?.quantity + productAddedToCartLength) >= maxProductQuantity ||
970
- ((productCart?.quantity + productAddedToCartLength) >= product?.maximum_per_order && product?.maximum_per_order) ||
971
- isSoldOut
972
- ? theme.colors.backgroundGray
973
- : theme.colors.backgroundDark
974
- }
975
- />
976
- </TouchableOpacity>
977
- </View>
978
- {isHaveWeight && (
979
- <WeightUnitSwitch>
980
- <TouchableOpacity
981
- onPress={() => handleSwitchQtyUnit('pieces')}
982
- >
983
- <WeightUnitItem active={qtyBy?.pieces}>
984
- <OText
985
- size={12}
986
- lineHeight={18}
987
- color={qtyBy?.pieces ? theme.colors.primary : theme.colors.textNormal}
988
- >
989
- {t('PIECES', 'pcs')}
990
- </OText>
991
- </WeightUnitItem>
992
- </TouchableOpacity>
993
- <View style={{ alignItems: 'flex-start' }}>
994
- <TouchableOpacity
995
- onPress={() => handleSwitchQtyUnit('weight_unit')}
996
- >
997
- <WeightUnitItem active={qtyBy?.weight_unit}>
998
- <OText
999
- size={12}
1000
- lineHeight={18}
1001
- color={qtyBy?.weight_unit ? theme.colors.primary : theme.colors.textNormal}
1002
- >
1003
- {product?.weight_unit}
1004
- </OText>
1005
- </WeightUnitItem>
1006
- </TouchableOpacity>
1007
- </View>
1008
- </WeightUnitSwitch>
1009
- )}
1010
- </>
1011
- )}
1012
- {!isHaveWeight && <ActionButton />}
1013
- </View>
1014
- {isHaveWeight && <ActionButton />}
1015
- </ProductActions>
1016
- )}
1017
- </SafeAreaView>
1018
- );
1019
- };
1020
-
1021
-
1022
- export const ProductForm = (props: any) => {
1023
- const productOptionsProps = {
1024
- ...props,
1025
- productCart: {
1026
- ...props.productCart,
1027
- quantity: props.productCart?.code
1028
- ? props.productCart?.quantity
1029
- : props?.product?.minimum_per_order || 1
1030
- },
1031
- UIComponent: ProductOptionsUI
1032
- }
1033
-
1034
- return <ProductOptions {...productOptionsProps} />
1035
- };
1036
-
1037
- ProductForm.defaultProps = {
1038
- productAddedToCartLength: 0
1039
- }
1
+ import React, { useEffect, useRef, useState, useCallback } from 'react';
2
+ import {
3
+ View,
4
+ Keyboard,
5
+ TextInput,
6
+ TouchableOpacity,
7
+ StyleSheet,
8
+ Dimensions,
9
+ I18nManager,
10
+ SafeAreaView,
11
+ Platform,
12
+ Button,
13
+ Vibration
14
+ } from 'react-native';
15
+ import {
16
+ ProductForm as ProductOptions,
17
+ useSession,
18
+ useLanguage,
19
+ useOrder,
20
+ useUtils,
21
+ ToastType,
22
+ useToast,
23
+ useConfig,
24
+ useEvent
25
+ } from 'ordering-components/native';
26
+ import uuid from 'react-native-uuid';
27
+ import { useTheme } from 'styled-components/native';
28
+ import { ProductIngredient } from '../ProductIngredient';
29
+ import { ProductOption } from '../ProductOption';
30
+ import Swiper from 'react-native-swiper'
31
+ import FastImage from 'react-native-fast-image';
32
+ import IconAntDesign from 'react-native-vector-icons/AntDesign';
33
+ import YoutubePlayer from "react-native-youtube-iframe"
34
+ import ReactNativeHapticFeedback from "react-native-haptic-feedback";
35
+
36
+ import {
37
+ WrapHeader,
38
+ TopHeader,
39
+ ProductTitle,
40
+ ProductDescription,
41
+ ProductEditions,
42
+ SectionTitle,
43
+ WrapperIngredients,
44
+ WrapperSubOption,
45
+ ProductComment,
46
+ ProductActions,
47
+ ExtraOptionWrap,
48
+ WeightUnitSwitch,
49
+ WeightUnitItem,
50
+ TopActions,
51
+ ProductSummary
52
+ } from './styles';
53
+ import { OButton, OIcon, OInput, OText } from '../shared';
54
+ import { ScrollView } from 'react-native-gesture-handler';
55
+ import { ProductOptionSubOption } from '../ProductOptionSubOption';
56
+ import { NotFoundSource } from '../NotFoundSource';
57
+ import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
58
+ import NavBar from '../NavBar';
59
+ import { orderTypeList } from '../../utils';
60
+ const windowWidth = Dimensions.get('window').width;
61
+
62
+ export const ProductOptionsUI = (props: any) => {
63
+ const {
64
+ navigation,
65
+ editMode,
66
+ isSoldOut,
67
+ productCart,
68
+ increment,
69
+ decrement,
70
+ handleChangeProductCartQuantity,
71
+ showOption,
72
+ maxProductQuantity,
73
+ errors,
74
+ handleSave,
75
+ handleChangeIngredientState,
76
+ handleChangeSuboptionState,
77
+ handleChangeCommentState,
78
+ productObject,
79
+ productAddedToCartLength,
80
+ actionStatus,
81
+ handleCreateGuestUser
82
+ } = props;
83
+
84
+ const theme = useTheme();
85
+ const [, { showToast }] = useToast()
86
+ const [events] = useEvent()
87
+
88
+ const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
89
+
90
+ const styles = StyleSheet.create({
91
+ mainContainer: {
92
+
93
+ },
94
+ headerItem: {
95
+ overflow: 'hidden',
96
+ backgroundColor: theme.colors.clear,
97
+ width: 35,
98
+ marginVertical: 18,
99
+ },
100
+ optionContainer: {
101
+ marginBottom: 20,
102
+ },
103
+ comment: {
104
+ borderWidth: 1,
105
+ borderRadius: 8,
106
+ borderColor: theme.colors.border,
107
+ height: 100,
108
+ alignItems: 'flex-start',
109
+ },
110
+ quantityControl: {
111
+ flexDirection: 'row',
112
+ justifyContent: 'space-between',
113
+ alignItems: 'center',
114
+ marginRight: 10,
115
+ },
116
+ btnBackArrow: {
117
+ borderWidth: 0,
118
+ backgroundColor: '#FFF',
119
+ borderRadius: 24,
120
+ marginRight: 15,
121
+ },
122
+ productHeaderSkeleton: {
123
+ flexDirection: 'row',
124
+ width: '100%',
125
+ position: 'relative',
126
+ maxHeight: 260,
127
+ height: 260,
128
+ resizeMode: 'cover',
129
+ minHeight: 200,
130
+ zIndex: 0,
131
+ },
132
+ extraItem: {
133
+ paddingHorizontal: 7,
134
+ paddingBottom: 10,
135
+ borderBottomWidth: 1,
136
+ borderBottomColor: theme.colors.border,
137
+ justifyContent: 'center',
138
+ },
139
+ slide1: {
140
+ flex: 1,
141
+ alignItems: 'center'
142
+ },
143
+ mainSwiper: {
144
+ height: 258,
145
+ },
146
+ swiperButton: {
147
+ marginHorizontal: 25,
148
+ alignItems: 'center',
149
+ justifyContent: 'center',
150
+ width: 32,
151
+ height: 32,
152
+ borderRadius: 16,
153
+ backgroundColor: 'rgba(208,208,208,0.5)'
154
+ },
155
+ unitItem: {
156
+ fontSize: 12
157
+ },
158
+ productTagWrapper: {
159
+ flexDirection: 'row',
160
+ alignItems: 'center'
161
+ },
162
+ productTagImageStyle: {
163
+ width: 32,
164
+ height: 32,
165
+ borderRadius: 8,
166
+ resizeMode: 'cover'
167
+ },
168
+ productTagNameStyle: {
169
+ paddingHorizontal: 6,
170
+ marginRight: 5
171
+ },
172
+ actionContainer: {
173
+ flexDirection: 'row',
174
+ alignItems: 'center',
175
+ justifyContent: 'space-between',
176
+ width: '100%',
177
+ marginTop: 10
178
+ },
179
+ wrapperNavbar: {
180
+ paddingHorizontal: 40,
181
+ paddingTop: 0,
182
+ }
183
+ });
184
+
185
+ const [{ parsePrice, optimizeImage }] = useUtils();
186
+ const [, t] = useLanguage();
187
+ const [orderState] = useOrder();
188
+ const [{ auth }] = useSession();
189
+ const [{ configs }] = useConfig()
190
+ const { product, loading, error } = productObject;
191
+ const [gallery, setGallery] = useState([])
192
+ const [thumbsSwiper, setThumbsSwiper] = useState(0)
193
+ const [indexGallery, setIndexGallery] = useState(0)
194
+ const [selOpt, setSelectedOpt] = useState(-1);
195
+ const [isHaveWeight, setIsHaveWeight] = useState(false)
196
+ const [playing, setPlaying] = useState(false);
197
+ const [qtyBy, setQtyBy] = useState({
198
+ weight_unit: false,
199
+ pieces: true
200
+ })
201
+ const [pricePerWeightUnit, setPricePerWeightUnit] = useState<any>(null)
202
+ const scrollViewRef = useRef<any>(null);
203
+ const swiperRef: any = useRef(null)
204
+ const [optionLayout, setOptionLayout] = useState<any>({})
205
+ const [headerRefHeight, setHeaderRefHeight] = useState(0)
206
+ const [summaryRefHeight, setSummaryRefHeight] = useState(0)
207
+ const [isScrollAvailable, setIsScrollAvailable] = useState(null)
208
+ const [editionsLayoutY, setEditionsLayoutY] = useState(null)
209
+ const [viewedProduct, setViewedProduct] = useState<any>(null)
210
+ const [showTitle, setShowTitle] = useState(false)
211
+
212
+ const guestCheckoutEnabled = configs?.guest_checkout_enabled?.value === '1'
213
+ const orderTypeEnabled = !orderTypeList[orderState?.options?.type - 1] || configs?.allowed_order_types_guest_checkout?.value?.includes(orderTypeList[orderState?.options?.type - 1])
214
+
215
+ const vibrateApp = (impact?: string) => {
216
+ const options = {
217
+ enableVibrateFallback: true,
218
+ ignoreAndroidSystemSettings: false
219
+ };
220
+ ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
221
+ }
222
+
223
+ const isError = (id: number) => {
224
+ let bgColor = theme.colors.white;
225
+ if (errors[`id:${id}`]) {
226
+ bgColor = 'rgba(255, 0, 0, 0.05)';
227
+ }
228
+ if (maxProductQuantity <= 0) {
229
+ bgColor = 'hsl(0, 0%, 72%)';
230
+ }
231
+ if (isSoldOut) {
232
+ bgColor = theme.colors.white;
233
+ }
234
+ return bgColor;
235
+ };
236
+
237
+ const handleSaveProduct = () => {
238
+ Vibration.vibrate()
239
+ if (!productCart.quantity) {
240
+ showToast(ToastType.Error, t('VALIDATION_ERROR_REQUIRED', 'The quantity field is required').replace('_attribute_', t('PRODUCT_POTIONS_QUANTITY', 'Quantity')))
241
+ return
242
+ }
243
+ const isErrors = Object.values(errors)?.length > 0;
244
+ if (!isErrors) {
245
+ handleSave && handleSave();
246
+ return;
247
+ }
248
+ };
249
+
250
+ const hasRespected = (options: Array<any>, respect_id: number) => {
251
+ if (respect_id == null) return;
252
+ const option: any = options.filter(({ id }: any) => id === selOpt);
253
+ if (option == undefined) return false;
254
+ if (option?.suboptions?.length == 0) return false;
255
+ const sel = option[0]?.suboptions?.filter(
256
+ ({ id }: any) => id === respect_id,
257
+ );
258
+ return sel?.[0]?.id !== undefined;
259
+ };
260
+
261
+ const handleChangeMainIndex = (index: number) => {
262
+ if (index < 0 || index > gallery?.length - 1) {
263
+ setThumbsSwiper(0)
264
+ return
265
+ }
266
+ setThumbsSwiper(index)
267
+ }
268
+
269
+ const handleClickThumb = (index: number) => {
270
+ if (index !== indexGallery) {
271
+ swiperRef?.current.scrollBy(index - thumbsSwiper, true);
272
+ setIndexGallery(index)
273
+ }
274
+ }
275
+
276
+ const handleRedirectLogin = () => {
277
+ navigation.navigate('Login', {
278
+ store_slug: props.businessSlug
279
+ });
280
+ };
281
+
282
+ const handleSwitchQtyUnit = (val: string) => {
283
+ setQtyBy({ [val]: true, [!val]: false })
284
+ }
285
+
286
+ const onStateChange = useCallback((state) => {
287
+ if (state === "ended") {
288
+ setPlaying(false);
289
+ }
290
+ }, []);
291
+
292
+ const togglePlaying = useCallback(() => {
293
+ setPlaying((prev) => !prev);
294
+ }, []);
295
+
296
+ const onChangeProductCartQuantity = (quantity: number) => {
297
+ if (quantity > maxProductQuantity) {
298
+ showToast(ToastType.Error, t('MAX_QUANTITY', 'The max quantity is _number_').replace('_number_', maxProductQuantity))
299
+ return
300
+ }
301
+ handleChangeProductCartQuantity(quantity)
302
+ }
303
+
304
+ const scrollDown = (id: any) => {
305
+ const isErrors = Object.values(errors)?.length > 0
306
+ if (!isErrors) {
307
+ return
308
+ }
309
+ const targetOptionId = Object.getOwnPropertyNames(errors).filter(item => !item.includes(id))[0]
310
+ const targetY = optionLayout[targetOptionId]?.y
311
+ if (targetY) {
312
+ scrollViewRef.current.scrollTo({
313
+ y: targetY + headerRefHeight + summaryRefHeight,
314
+ animated: true
315
+ })
316
+ }
317
+ }
318
+
319
+ const handleUpdateGuest = () => {
320
+ const guestToken = uuid.v4()
321
+ if (guestToken) handleCreateGuestUser({ guest_token: guestToken })
322
+ }
323
+
324
+ const handleOnLayout = (event: any, optionId: any) => {
325
+ const _optionLayout = { ...optionLayout }
326
+ const optionKey = 'id:' + optionId
327
+ _optionLayout[optionKey] = { y: event.nativeEvent.layout?.y }
328
+ setOptionLayout(_optionLayout)
329
+ }
330
+
331
+ const saveErrors =
332
+ orderState.loading ||
333
+ maxProductQuantity === 0 ||
334
+ Object.keys(errors)?.length > 0;
335
+
336
+
337
+ const ExtraOptions = ({ eID, options }: any) => (
338
+ <>
339
+ {options.map(({ id, name, respect_to, suboptions }: any) => (
340
+ <React.Fragment key={`cont_key_${id}`}>
341
+ {respect_to == null && suboptions?.length > 0 && (
342
+ <TouchableOpacity
343
+ key={`eopt_key_${id}`}
344
+ onPress={() => {
345
+ setSelectedOpt(id)
346
+ scrollViewRef?.current?.scrollTo && scrollViewRef.current.scrollTo({
347
+ y: optionLayout[`id:${id}`]?.y + editionsLayoutY - 50,
348
+ animated: true
349
+ })
350
+ }}
351
+ style={[
352
+ styles.extraItem,
353
+ {
354
+ borderBottomColor:
355
+ selOpt == id ? theme.colors.textNormal : theme.colors.backgroundPage,
356
+ },
357
+ ]}>
358
+ <OText
359
+ color={
360
+ selOpt == id ? theme.colors.textNormal : theme.colors.textSecondary
361
+ }
362
+ size={12}
363
+ weight={selOpt == id ? '600' : 'normal'}
364
+ style={{ maxWidth: 150 }}
365
+ numberOfLines={1}>
366
+ {name}
367
+ </OText>
368
+ </TouchableOpacity>
369
+ )}
370
+ </React.Fragment>
371
+ ))}
372
+ </>
373
+ );
374
+
375
+ const handleScroll = ({ nativeEvent: { contentOffset, layoutMeasurement } }: any) => {
376
+ setShowTitle(contentOffset.y > 30)
377
+ const _topOption = Object.keys(optionLayout).find(((option: any) => Math.abs(contentOffset?.y - layoutMeasurement?.height - optionLayout[option]?.y) < 20))
378
+ if (_topOption) {
379
+ const _topOptionId = Number(_topOption.replace('id:', ''))
380
+ }
381
+ }
382
+
383
+ const handleGoBack = navigation?.canGoBack()
384
+ ? () => navigation.goBack()
385
+ : () => navigation.navigate('Business', { store: props.businessSlug })
386
+
387
+ useEffect(() => {
388
+ if (isScrollAvailable) {
389
+ setIsScrollAvailable(null)
390
+ scrollDown(isScrollAvailable)
391
+ }
392
+ }, [errors])
393
+
394
+ useEffect(() => {
395
+ const imageList: any = []
396
+ const videoList: any = []
397
+ imageList.push(product?.images?.length > 0
398
+ ? product.images
399
+ : theme?.images?.dummies?.product)
400
+
401
+ if (product?.gallery && product?.gallery?.length > 0) {
402
+ for (const img of product?.gallery) {
403
+ if (img?.file) {
404
+ imageList.push(img?.file)
405
+ }
406
+ if (img?.video) {
407
+ const keys = img?.video.split('/')
408
+ let _videoId = keys[keys?.length - 1]
409
+
410
+ if (_videoId.includes('watch')) {
411
+ const __url = _videoId.split('=')[1]
412
+ _videoId = __url
413
+ } else if (_videoId.includes('?')) {
414
+ const __url = _videoId.split('?')[0]
415
+ _videoId = __url
416
+ }
417
+
418
+ if (_videoId.search(/&/i) >= 0) {
419
+ _videoId = _videoId.split('&')[0]
420
+ } else if (_videoId.search(/\?/i) >= 0) {
421
+ _videoId = _videoId.split('?')[0]
422
+ }
423
+ if ((_videoId?.length === 11)) {
424
+ videoList.push(_videoId)
425
+ }
426
+ }
427
+ }
428
+ }
429
+ const gallery = imageList.concat(videoList)
430
+ setGallery(gallery)
431
+
432
+ if (product?.weight && product?.weight_unit) {
433
+ setIsHaveWeight(true)
434
+ setPricePerWeightUnit(product?.price / product?.weight)
435
+ }
436
+ }, [product])
437
+
438
+ const ActionButton = () => {
439
+ return (
440
+ <View
441
+ style={{
442
+ width: isHaveWeight ? '100%' : ((isSoldOut || maxProductQuantity <= 0) ? '60%' : '40%'),
443
+ }}>
444
+ {((productCart &&
445
+ auth &&
446
+ orderState.options?.address_id) || (isSoldOut || maxProductQuantity <= 0)) && (
447
+ <OButton
448
+ onClick={() => handleSaveProduct()}
449
+ imgRightSrc=""
450
+ text={`${orderState.loading
451
+ ? t('LOADING', 'Loading')
452
+ : (isSoldOut || maxProductQuantity <= 0)
453
+ ? t('SOLD_OUT', 'Sold out')
454
+ : editMode
455
+ ? t('UPDATE', 'Update')
456
+ : t('ADD', 'Add')
457
+ }`}
458
+ isDisabled={isSoldOut || maxProductQuantity <= 0 || (product?.minimum_per_order && ((productCart?.quantity + productAddedToCartLength) < product?.minimum_per_order)) || (product?.maximum_per_order && ((productCart?.quantity + productAddedToCartLength) > product?.maximum_per_order))}
459
+ textStyle={{
460
+ color: saveErrors || isSoldOut || maxProductQuantity <= 0 ? theme.colors.primary : theme.colors.white,
461
+ fontSize: orderState.loading || editMode ? 10 : 14
462
+ }}
463
+ style={{
464
+ backgroundColor: saveErrors || isSoldOut || maxProductQuantity <= 0 || (product?.minimum_per_order && ((productCart?.quantity + productAddedToCartLength) < product?.minimum_per_order)) || (product?.maximum_per_order && ((productCart?.quantity + productAddedToCartLength) > product?.maximum_per_order)) ? theme.colors.lightGray : theme.colors.primary,
465
+ borderColor: saveErrors || isSoldOut || maxProductQuantity <= 0 || (product?.minimum_per_order && ((productCart?.quantity + productAddedToCartLength) < product?.minimum_per_order)) || (product?.maximum_per_order && ((productCart?.quantity + productAddedToCartLength) > product?.maximum_per_order)) ? theme.colors.white : theme.colors.primary,
466
+ opacity: saveErrors || isSoldOut || maxProductQuantity <= 0 ? 0.3 : 1,
467
+ borderRadius: 7.6,
468
+ height: 44,
469
+ shadowOpacity: 0,
470
+ borderWidth: 1,
471
+ marginTop: isHaveWeight ? 10 : 0
472
+ }}
473
+ />
474
+ )}
475
+ {auth &&
476
+ !orderState.options?.address_id &&
477
+ (orderState.loading ? (
478
+ <OButton
479
+ isDisabled
480
+ text={t('LOADING', 'Loading')}
481
+ imgRightSrc=""
482
+ textStyle={{ fontSize: 10 }}
483
+ />
484
+ ) : (
485
+ <OButton onClick={navigation.navigate('AddressList')} />
486
+ ))}
487
+ {!auth && (
488
+ <OButton
489
+ isDisabled={isSoldOut || maxProductQuantity <= 0}
490
+ onClick={() => handleRedirectLogin()}
491
+ text={
492
+ isSoldOut || maxProductQuantity <= 0
493
+ ? t('SOLD_OUT', 'Sold out')
494
+ : t('LOGIN_SIGNUP', 'Login / Sign Up')
495
+ }
496
+ imgRightSrc=""
497
+ textStyle={{ color: theme.colors.primary, fontSize: 14 }}
498
+ style={{
499
+ height: 44,
500
+ borderColor: theme.colors.primary,
501
+ backgroundColor: theme.colors.white,
502
+ paddingLeft: 0,
503
+ paddingRight: 0
504
+ }}
505
+ />
506
+ )}
507
+ {!auth && guestCheckoutEnabled && orderTypeEnabled && (
508
+ <TouchableOpacity style={{ marginTop: 10 }} onPress={handleUpdateGuest}>
509
+ {actionStatus?.loading ? (
510
+ <Placeholder Animation={Fade}>
511
+ <PlaceholderLine width={60} height={20} />
512
+ </Placeholder>
513
+ ) : (
514
+ <OText color={theme.colors.primary} size={13}>{t('WITH_GUEST_USER', 'With Guest user')}</OText>
515
+ )}
516
+ </TouchableOpacity>
517
+ )}
518
+ </View>
519
+ )
520
+ }
521
+
522
+ useEffect(() => {
523
+ const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => {
524
+ scrollViewRef.current.scrollToEnd({ animated: true })
525
+ })
526
+ return () => {
527
+ keyboardDidShowListener.remove()
528
+ }
529
+ }, [])
530
+
531
+ useEffect(() => {
532
+ if (!product?.id || product?.id === viewedProduct?.id) return
533
+ setViewedProduct(product)
534
+ events.emit('product_viewed', product)
535
+ }, [product?.id, viewedProduct])
536
+
537
+ return (
538
+ <SafeAreaView style={{ flex: 1 }}>
539
+ <View style={styles.wrapperNavbar}>
540
+ <TopHeader>
541
+ <>
542
+ <TopActions onPress={() => handleGoBack()}>
543
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
544
+ </TopActions>
545
+ {showTitle && (
546
+ <OText
547
+ size={16}
548
+ style={{ flex: 1, textAlign: 'center' }}
549
+ weight={Platform.OS === 'ios' ? '600' : 'bold'}
550
+ numberOfLines={2}
551
+ ellipsizeMode='tail'
552
+ >
553
+ {product?.name}
554
+ </OText>
555
+ )}
556
+ </>
557
+ </TopHeader>
558
+ </View>
559
+ {!error && (
560
+ <ScrollView
561
+ ref={scrollViewRef}
562
+ contentContainerStyle={{ paddingBottom: 80 }}
563
+ stickyHeaderIndices={[2]}
564
+ onScroll={handleScroll}
565
+ >
566
+ <WrapHeader onLayout={(event: any) => setHeaderRefHeight(event.nativeEvent.layout?.height)}>
567
+ {loading && !product ? (
568
+ <View style={styles.productHeaderSkeleton}>
569
+ <Placeholder Animation={Fade}>
570
+ <PlaceholderLine
571
+ height={258}
572
+ style={{ borderRadius: 0 }}
573
+ width={windowWidth}
574
+ />
575
+ </Placeholder>
576
+ </View>
577
+ ) : (
578
+ <>
579
+ <Swiper
580
+ loop={false}
581
+ ref={swiperRef}
582
+ showsButtons={true}
583
+ style={styles.mainSwiper}
584
+ showsPagination={false}
585
+ onIndexChanged={(index) => handleChangeMainIndex(index)}
586
+ prevButton={
587
+ <View style={styles.swiperButton}>
588
+ <IconAntDesign
589
+ name="caretleft"
590
+ color={theme.colors.white}
591
+ size={13}
592
+ // style={styles.starIcon}
593
+ />
594
+ </View>
595
+ }
596
+ nextButton={
597
+ <View style={styles.swiperButton}>
598
+ <IconAntDesign
599
+ name="caretright"
600
+ color={theme.colors.white}
601
+ size={13}
602
+ // style={styles.starIcon}
603
+ />
604
+ </View>
605
+ }
606
+ >
607
+ {gallery && gallery?.length > 0 && gallery.map((img, i) => (
608
+ <View
609
+ style={styles.slide1}
610
+ key={i}
611
+ >
612
+ {(String(img).includes('http') || typeof img === 'number') ? (
613
+ <FastImage
614
+ style={{ height: '100%', opacity: isSoldOut ? 0.5 : 1, aspectRatio: 16 / 9 }}
615
+ source={typeof img !== 'number' ? {
616
+ uri: optimizeImage(img, 'h_1024,c_limit'),
617
+ priority: FastImage.priority.normal,
618
+ } : img}
619
+ />
620
+ ) : (
621
+ <>
622
+ <YoutubePlayer
623
+ height={'100%'}
624
+ width={'100%'}
625
+ play={playing}
626
+ videoId={img}
627
+ onChangeState={onStateChange}
628
+ />
629
+ <Button title={playing ? "pause" : "play"} onPress={togglePlaying} />
630
+ </>
631
+ )}
632
+ </View>
633
+ ))}
634
+ </Swiper>
635
+ <ScrollView
636
+ horizontal
637
+ contentContainerStyle={{
638
+ paddingHorizontal: 30,
639
+ paddingVertical: 15
640
+ }}
641
+ >
642
+ {gallery?.length > 1 && gallery.map((img, index) => (
643
+ <TouchableOpacity
644
+ key={index}
645
+ onPress={() => handleClickThumb(index)}
646
+ >
647
+ <View
648
+ style={{
649
+ height: 56,
650
+ borderRadius: 8,
651
+ margin: 8,
652
+ opacity: index === thumbsSwiper ? 1 : 0.8
653
+ }}
654
+ >
655
+ {String(img).includes('http') ? (
656
+ <OIcon
657
+ url={img}
658
+ style={{
659
+ borderColor: theme.colors.lightGray,
660
+ borderRadius: 8,
661
+ minHeight: '100%',
662
+ opacity: isSoldOut ? 0.5 : 1
663
+ }}
664
+ width={56}
665
+ height={56}
666
+ cover
667
+ />
668
+ ) : (
669
+ <OIcon
670
+ url={'https://img.youtube.com/vi/' + img + '/0.jpg'}
671
+ style={{
672
+ borderColor: theme.colors.lightGray,
673
+ borderRadius: 8,
674
+ minHeight: '100%',
675
+ opacity: isSoldOut ? 0.5 : 1
676
+ }}
677
+ width={56}
678
+ height={56}
679
+ cover
680
+ />
681
+ )}
682
+ </View>
683
+ </TouchableOpacity>
684
+
685
+ ))}
686
+ </ScrollView>
687
+ </>
688
+ )}
689
+ </WrapHeader>
690
+ <ProductSummary
691
+ ph={isChewLayout ? 20 : 40}
692
+ onLayout={(event: any) => setSummaryRefHeight(event.nativeEvent.layout?.height)}
693
+ >
694
+ <ProductTitle>
695
+ {loading && !product ? (
696
+ <Placeholder Animation={Fade}>
697
+ <View
698
+ style={{
699
+ flexDirection: 'row',
700
+ justifyContent: 'space-between',
701
+ }}>
702
+ <PlaceholderLine width={40} height={20} />
703
+ <PlaceholderLine width={30} height={20} />
704
+ </View>
705
+ </Placeholder>
706
+ ) : (
707
+ <>
708
+ <View style={{ flexDirection: 'row' }}>
709
+ <OText
710
+ size={20}
711
+ lineHeight={30}
712
+ weight={'600'}
713
+ style={{ flex: 1, marginBottom: 10 }}>
714
+ {product?.name || productCart.name}
715
+ </OText>
716
+ {!!product?.calories && (
717
+ <OText size={16} style={{ color: '#808080' }}>{product?.calories} cal
718
+ </OText>
719
+ )}
720
+ </View>
721
+ {((!!product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (!!product?.estimated_person)) && (
722
+ <OText size={14} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={'#909BA9'} mBottom={7}>
723
+ {
724
+ ((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (productCart?.sku && productCart?.sku !== '-1' && productCart?.sku !== '1'))
725
+ && <>{t('SKU', 'Sku')}{' '}{product?.sku || productCart?.sku}</>
726
+ }
727
+ {product?.sku && product?.sku !== '-1' && product?.sku !== '1' && product?.estimated_person && (
728
+ <>&nbsp;&#183;&nbsp;</>
729
+ )}
730
+ {product?.estimated_person
731
+ && <>{product?.estimated_person}{' '}{t('ESTIMATED_PERSONS', 'persons')}</>
732
+ }
733
+ </OText>
734
+ )}
735
+ {isHaveWeight ? (
736
+ <OText size={16} lineHeight={24} color={theme.colors.primary}>{parsePrice(pricePerWeightUnit)} / {product?.weight_unit}</OText>
737
+ ) : (
738
+ <View style={{ flexDirection: 'row', marginBottom: 10 }}>
739
+ <OText size={16} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={theme.colors.primary}>{productCart.price ? parsePrice(productCart.price) : ''}</OText>
740
+ {product?.offer_price !== null && product?.in_offer && (
741
+ <OText style={{
742
+ fontSize: 14,
743
+ color: '#808080',
744
+ textDecorationLine: 'line-through',
745
+ marginLeft: 7,
746
+ marginRight: 7
747
+ }}>{product?.offer_price ? parsePrice(product?.offer_price) : ''}</OText>
748
+ )}
749
+ </View>
750
+ )}
751
+ </>
752
+ )}
753
+ </ProductTitle>
754
+ <ProductDescription>
755
+ <OText color={theme.colors.textSecondary} size={12} lineHeight={18}>
756
+ {product?.description || productCart?.description}
757
+ </OText>
758
+ </ProductDescription>
759
+ <ScrollView
760
+ horizontal
761
+ showsHorizontalScrollIndicator={false}
762
+ contentContainerStyle={{ paddingBottom: 30 }}
763
+ >
764
+ {product?.tags?.map((tag: any) => (
765
+ <View
766
+ key={tag.id}
767
+ style={styles.productTagWrapper}
768
+ >
769
+ {!!tag?.image ? (
770
+ <OIcon
771
+ url={optimizeImage(tag?.image, 'h_40,c_limit')}
772
+ style={styles.productTagImageStyle}
773
+ />
774
+ ) : (
775
+ <OIcon
776
+ src={theme.images?.dummies?.product}
777
+ style={styles.productTagImageStyle}
778
+ />
779
+ )}
780
+ <OText color={theme.colors.textSecondary} size={12} style={styles.productTagNameStyle}>{tag.name}</OText>
781
+ </View>
782
+ ))}
783
+ </ScrollView>
784
+ </ProductSummary>
785
+ {(!loading && product) && (
786
+ <ExtraOptionWrap
787
+ horizontal
788
+ showsHorizontalScrollIndicator={false}
789
+ style={{
790
+ marginBottom: 20,
791
+ borderBottomWidth: 1,
792
+ borderBottomColor: theme.colors.border,
793
+ marginHorizontal: isChewLayout ? 20 : 30,
794
+ backgroundColor: theme.colors.backgroundPage,
795
+ }}
796
+ >
797
+ {product?.ingredients?.length > 0 && (
798
+ <TouchableOpacity
799
+ key={`eopt_key_01`}
800
+ onPress={() => {
801
+ setSelectedOpt(0)
802
+ scrollViewRef?.current?.scrollTo && scrollViewRef.current.scrollTo({
803
+ y: optionLayout[`id:0`]?.y + editionsLayoutY - 50,
804
+ animated: true
805
+ })
806
+ }}
807
+ style={[
808
+ styles.extraItem,
809
+ {
810
+ borderBottomColor:
811
+ selOpt == 0 ? theme.colors.textNormal : theme.colors.backgroundPage,
812
+ },
813
+ ]}>
814
+ <OText
815
+ color={selOpt == 0 ? theme.colors.textNormal : theme.colors.textSecondary}
816
+ size={12}
817
+ weight={selOpt == 0 ? '600' : 'normal'}>
818
+ {t('INGREDIENTS', 'Ingredients')}
819
+ </OText>
820
+ </TouchableOpacity>
821
+ )}
822
+ {product?.extras?.map((extra: any) =>
823
+ <ExtraOptions key={extra.id} options={extra.options} />
824
+ )}
825
+ </ExtraOptionWrap>
826
+ )}
827
+ {loading && !product ? (
828
+ <>
829
+ {[...Array(2)].map((item, i) => (
830
+ <Placeholder
831
+ key={i}
832
+ style={{ marginBottom: 20 }}
833
+ Animation={Fade}>
834
+ <PlaceholderLine
835
+ height={40}
836
+ style={{ flex: 1, marginTop: 10 }}
837
+ />
838
+ {[...Array(3)].map((item, i) => (
839
+ <View
840
+ key={'place_key_' + i}
841
+ style={{
842
+ flexDirection: 'row',
843
+ justifyContent: 'space-between',
844
+ }}>
845
+ <PlaceholderLine
846
+ height={30}
847
+ width={10}
848
+ style={{ marginBottom: 20 }}
849
+ />
850
+ <PlaceholderLine
851
+ height={30}
852
+ width={50}
853
+ style={{ marginBottom: 20 }}
854
+ />
855
+ <PlaceholderLine
856
+ height={30}
857
+ width={30}
858
+ style={{ marginBottom: 20 }}
859
+ />
860
+ </View>
861
+ ))}
862
+ </Placeholder>
863
+ ))}
864
+ </>
865
+ ) : (
866
+ <ProductEditions
867
+ style={{ paddingHorizontal: isChewLayout ? 20 : 40 }}
868
+ onLayout={(event: any) => {
869
+ setEditionsLayoutY(event.nativeEvent.layout?.y)
870
+ }}
871
+ >
872
+ <>
873
+ {product?.ingredients?.length > 0 && (
874
+ <View style={styles.optionContainer} onLayout={(event: any) => handleOnLayout(event, 0)}>
875
+ <SectionTitle>
876
+ <OText size={16}>
877
+ {t('INGREDIENTS', 'Ingredients')}
878
+ </OText>
879
+ </SectionTitle>
880
+ <WrapperIngredients>
881
+ {product?.ingredients.map((ingredient: any) => (
882
+ <ProductIngredient
883
+ key={ingredient.id}
884
+ ingredient={ingredient}
885
+ state={
886
+ productCart.ingredients[`id:${ingredient.id}`]
887
+ }
888
+ onChange={handleChangeIngredientState}
889
+ isSoldOut={isSoldOut}
890
+ />
891
+ ))}
892
+ </WrapperIngredients>
893
+ </View>
894
+ )}
895
+ {product?.extras?.sort((a: any, b: any) => a.rank - b.rank).map((extra: any) =>
896
+ extra.options?.sort((a: any, b: any) => a.rank - b.rank).map((option: any) => {
897
+ const currentState =
898
+ productCart.options[`id:${option.id}`] || {};
899
+ return (
900
+ <React.Fragment key={`popt_${option.id}`}>
901
+ {showOption(option) && (
902
+ <View style={styles.optionContainer} onLayout={(event: any) => handleOnLayout(event, option?.id)}>
903
+ <ProductOption
904
+ option={option}
905
+ currentState={currentState}
906
+ error={errors[`id:${option.id}`]}>
907
+ <WrapperSubOption
908
+ style={{
909
+ backgroundColor: isError(option.id),
910
+ borderRadius: 7.6
911
+ }}>
912
+ {option?.suboptions?.sort((a: any, b: any) => a.rank - b.rank).map(
913
+ (suboption: any) => {
914
+ const currentState =
915
+ productCart.options[
916
+ `id:${option.id}`
917
+ ]?.suboptions[
918
+ `id:${suboption.id}`
919
+ ] || {};
920
+ const balance =
921
+ productCart.options[
922
+ `id:${option.id}`
923
+ ]?.balance || 0;
924
+ return (
925
+ <ProductOptionSubOption
926
+ key={suboption.id}
927
+ isSoldOut={isSoldOut}
928
+ onChange={
929
+ handleChangeSuboptionState
930
+ }
931
+ balance={balance}
932
+ option={option}
933
+ suboption={suboption}
934
+ state={currentState}
935
+ disabled={
936
+ isSoldOut ||
937
+ maxProductQuantity <= 0
938
+ }
939
+ setIsScrollAvailable={setIsScrollAvailable}
940
+ error={errors[`id:${option.id}`]}
941
+ />
942
+ );
943
+ },
944
+ )}
945
+ </WrapperSubOption>
946
+ </ProductOption>
947
+ </View>
948
+ )}
949
+ </React.Fragment>
950
+ );
951
+ }),
952
+ )}
953
+ </>
954
+ {!product?.hide_special_instructions && (
955
+ <ProductComment>
956
+ <SectionTitle>
957
+ <OText size={16} weight={'600'} lineHeight={24}>
958
+ {t('SPECIAL_COMMENT', 'Special comment')}
959
+ </OText>
960
+ </SectionTitle>
961
+ <OInput
962
+ multiline
963
+ placeholder={t('SPECIAL_COMMENT', 'Special comment')}
964
+ value={productCart.comment}
965
+ onChange={(val: string) =>
966
+ handleChangeCommentState({ target: { value: val } })
967
+ }
968
+ isDisabled={
969
+ !(productCart && !isSoldOut && maxProductQuantity)
970
+ }
971
+ style={styles.comment}
972
+ />
973
+ </ProductComment>
974
+ )}
975
+ </ProductEditions>
976
+ )}
977
+ {!!error && error?.length > 0 && (
978
+ <NotFoundSource content={error[0]?.message || error[0]} />
979
+ )}
980
+ </ScrollView>
981
+ )}
982
+ {!loading && !error && product && (
983
+ <ProductActions ios={Platform?.OS === 'ios'} isColumn={isHaveWeight}>
984
+ <View style={styles.actionContainer}>
985
+ <View>
986
+ <OText size={16} lineHeight={24} weight={'600'}>
987
+ {productCart.total ? parsePrice(productCart?.total) : ''}
988
+ </OText>
989
+ {product?.minimum_per_order && (productCart?.quantity + productAddedToCartLength) <= product?.minimum_per_order && productCart?.quantity !== 1 && <OText size={12} color={theme.colors?.red}>{t('MOBILE_MINIMUM_TO_ORDER', 'Min. _number_ ').replace('_number_', product?.minimum_per_order)}</OText>}
990
+ {product?.maximum_per_order && (productCart?.quantity + productAddedToCartLength) >= product?.maximum_per_order && <OText size={12} color={theme.colors?.red}>{t('MOBILE_MAXIMUM_TO_ORDER', 'Max. _number_'.replace('_number_', product?.maximum_per_order))}</OText>}
991
+ </View>
992
+ {productCart && !isSoldOut && maxProductQuantity > 0 && (
993
+ <>
994
+ <View style={styles.quantityControl}>
995
+ <TouchableOpacity
996
+ onPress={decrement}
997
+ disabled={productCart.quantity === 1 || !productCart.quantity || isSoldOut || ((productCart?.quantity + productAddedToCartLength) <= product?.minimum_per_order)}>
998
+ <OIcon
999
+ src={theme.images.general.minus}
1000
+ width={20}
1001
+ color={
1002
+ productCart.quantity === 1 || isSoldOut
1003
+ ? theme.colors.backgroundGray
1004
+ : theme.colors.backgroundDark
1005
+ }
1006
+ />
1007
+ </TouchableOpacity>
1008
+ {qtyBy?.pieces && (
1009
+ <TextInput
1010
+ keyboardType='numeric'
1011
+ value={`${productCart?.quantity > 0 ? productCart?.quantity : ''}`}
1012
+ onChangeText={(val: any) => onChangeProductCartQuantity(parseInt(val))}
1013
+ editable={!orderState.loading}
1014
+ style={{
1015
+ borderWidth: 1,
1016
+ textAlign: 'center',
1017
+ minWidth: 60,
1018
+ borderRadius: 8,
1019
+ borderColor: theme.colors.inputBorderColor,
1020
+ height: 44,
1021
+ marginHorizontal: 10,
1022
+ fontSize: 16
1023
+ }}
1024
+ />
1025
+ )}
1026
+ {qtyBy?.weight_unit && (
1027
+ <OText
1028
+ size={12}
1029
+ lineHeight={18}
1030
+ style={{ minWidth: 40, textAlign: 'center' }}
1031
+ >
1032
+ {productCart.quantity * product?.weight}
1033
+ </OText>
1034
+ )}
1035
+ <TouchableOpacity
1036
+ onPress={increment}
1037
+ disabled={
1038
+ maxProductQuantity <= 0 ||
1039
+ (productCart?.quantity + productAddedToCartLength) >= maxProductQuantity ||
1040
+ ((productCart?.quantity + productAddedToCartLength) >= product?.maximum_per_order && product?.maximum_per_order) ||
1041
+ isSoldOut
1042
+ }>
1043
+ <OIcon
1044
+ src={theme.images.general.plus}
1045
+ width={20}
1046
+ color={
1047
+ maxProductQuantity <= 0 ||
1048
+ (productCart?.quantity + productAddedToCartLength) >= maxProductQuantity ||
1049
+ ((productCart?.quantity + productAddedToCartLength) >= product?.maximum_per_order && product?.maximum_per_order) ||
1050
+ isSoldOut
1051
+ ? theme.colors.backgroundGray
1052
+ : theme.colors.backgroundDark
1053
+ }
1054
+ />
1055
+ </TouchableOpacity>
1056
+ </View>
1057
+ {isHaveWeight && (
1058
+ <WeightUnitSwitch>
1059
+ <TouchableOpacity
1060
+ onPress={() => handleSwitchQtyUnit('pieces')}
1061
+ >
1062
+ <WeightUnitItem active={qtyBy?.pieces}>
1063
+ <OText
1064
+ size={12}
1065
+ lineHeight={18}
1066
+ color={qtyBy?.pieces ? theme.colors.primary : theme.colors.textNormal}
1067
+ >
1068
+ {t('PIECES', 'pcs')}
1069
+ </OText>
1070
+ </WeightUnitItem>
1071
+ </TouchableOpacity>
1072
+ <View style={{ alignItems: 'flex-start' }}>
1073
+ <TouchableOpacity
1074
+ onPress={() => handleSwitchQtyUnit('weight_unit')}
1075
+ >
1076
+ <WeightUnitItem active={qtyBy?.weight_unit}>
1077
+ <OText
1078
+ size={12}
1079
+ lineHeight={18}
1080
+ color={qtyBy?.weight_unit ? theme.colors.primary : theme.colors.textNormal}
1081
+ >
1082
+ {product?.weight_unit}
1083
+ </OText>
1084
+ </WeightUnitItem>
1085
+ </TouchableOpacity>
1086
+ </View>
1087
+ </WeightUnitSwitch>
1088
+ )}
1089
+ </>
1090
+ )}
1091
+ {!isHaveWeight && <ActionButton />}
1092
+ </View>
1093
+ {isHaveWeight && <ActionButton />}
1094
+ </ProductActions>
1095
+ )}
1096
+ </SafeAreaView>
1097
+ );
1098
+ };
1099
+
1100
+
1101
+ export const ProductForm = (props: any) => {
1102
+ const productOptionsProps = {
1103
+ ...props,
1104
+ productCart: {
1105
+ ...props.productCart,
1106
+ quantity: props.productCart?.code
1107
+ ? props.productCart?.quantity
1108
+ : props?.product?.minimum_per_order || 1
1109
+ },
1110
+ UIComponent: ProductOptionsUI
1111
+ }
1112
+
1113
+ return <ProductOptions {...productOptionsProps} />
1114
+ };
1115
+
1116
+ ProductForm.defaultProps = {
1117
+ productAddedToCartLength: 0
1118
+ }