@zezosoft/zezo-ott-react-native-ui-kit 1.1.0 → 1.1.2

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 (512) hide show
  1. package/lib/module/Styles/globalStyles.js +0 -5
  2. package/lib/module/Styles/globalStyles.js.map +1 -1
  3. package/lib/module/components/Auth/AuthProvider/AuthProvider.js +64 -40
  4. package/lib/module/components/Auth/AuthProvider/AuthProvider.js.map +1 -1
  5. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js +5 -2
  6. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js.map +1 -1
  7. package/lib/module/components/Auth/Login/LoginWithEmail.js +17 -11
  8. package/lib/module/components/Auth/Login/LoginWithEmail.js.map +1 -1
  9. package/lib/module/components/Auth/Login/LoginWithPhone.js +12 -6
  10. package/lib/module/components/Auth/Login/LoginWithPhone.js.map +1 -1
  11. package/lib/module/components/Auth/OTP/OTP.js +7 -4
  12. package/lib/module/components/Auth/OTP/OTP.js.map +1 -1
  13. package/lib/module/components/Auth/QrLogin/QrLogin.js +133 -86
  14. package/lib/module/components/Auth/QrLogin/QrLogin.js.map +1 -1
  15. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js +174 -109
  16. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js.map +1 -1
  17. package/lib/module/components/Auth/SignUp/SignUp.js +19 -13
  18. package/lib/module/components/Auth/SignUp/SignUp.js.map +1 -1
  19. package/lib/module/components/Auth/SplashScreen/SplashScreen.js +54 -36
  20. package/lib/module/components/Auth/SplashScreen/SplashScreen.js.map +1 -1
  21. package/lib/module/components/Auth/SplashScreen/components/SplashImage/SplashImage.js +29 -11
  22. package/lib/module/components/Auth/SplashScreen/components/SplashImage/SplashImage.js.map +1 -1
  23. package/lib/module/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.js +13 -7
  24. package/lib/module/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.js.map +1 -1
  25. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js +33 -21
  26. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js.map +1 -1
  27. package/lib/module/components/BackgroundLayout/BackgroundLayout.js +26 -20
  28. package/lib/module/components/BackgroundLayout/BackgroundLayout.js.map +1 -1
  29. package/lib/module/components/BlogView/BlogView.js +36 -20
  30. package/lib/module/components/BlogView/BlogView.js.map +1 -1
  31. package/lib/module/components/BottomSheet/BottomSheet.js +152 -0
  32. package/lib/module/components/BottomSheet/BottomSheet.js.map +1 -0
  33. package/lib/module/components/BottomSheet/index.js +4 -0
  34. package/lib/module/components/BottomSheet/index.js.map +1 -0
  35. package/lib/module/components/Button/BackBtn.js +46 -16
  36. package/lib/module/components/Button/BackBtn.js.map +1 -1
  37. package/lib/module/components/Button/PrimaryBtn.js +19 -13
  38. package/lib/module/components/Button/PrimaryBtn.js.map +1 -1
  39. package/lib/module/components/Button/SecondaryBtn.js +19 -13
  40. package/lib/module/components/Button/SecondaryBtn.js.map +1 -1
  41. package/lib/module/components/Button/TextButton.js +19 -13
  42. package/lib/module/components/Button/TextButton.js.map +1 -1
  43. package/lib/module/components/Content/Card/Category/Category.js +70 -37
  44. package/lib/module/components/Content/Card/Category/Category.js.map +1 -1
  45. package/lib/module/components/Content/Card/Sliders/Styles/One.js +40 -32
  46. package/lib/module/components/Content/Card/Sliders/Styles/One.js.map +1 -1
  47. package/lib/module/components/Content/Card/Sliders/Styles/Two.js +109 -48
  48. package/lib/module/components/Content/Card/Sliders/Styles/Two.js.map +1 -1
  49. package/lib/module/components/Content/Card/Styles/RotateInOut.js +4 -11
  50. package/lib/module/components/Content/Card/Styles/RotateInOut.js.map +1 -1
  51. package/lib/module/components/Content/Card/components/CardPoster.js +105 -43
  52. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  53. package/lib/module/components/Content/Card/components/RentOrBuyIcon.js +18 -17
  54. package/lib/module/components/Content/Card/components/RentOrBuyIcon.js.map +1 -1
  55. package/lib/module/components/Content/Card/components/ThumbnailCard.js +78 -28
  56. package/lib/module/components/Content/Card/components/ThumbnailCard.js.map +1 -1
  57. package/lib/module/components/Content/Content.js +44 -25
  58. package/lib/module/components/Content/Content.js.map +1 -1
  59. package/lib/module/components/Content/Sections.js +37 -29
  60. package/lib/module/components/Content/Sections.js.map +1 -1
  61. package/lib/module/components/ContentView/ContentView.js +70 -41
  62. package/lib/module/components/ContentView/ContentView.js.map +1 -1
  63. package/lib/module/components/ContentView/MoreContentList.js +74 -40
  64. package/lib/module/components/ContentView/MoreContentList.js.map +1 -1
  65. package/lib/module/components/ContentView/components/AboutSection.js +40 -19
  66. package/lib/module/components/ContentView/components/AboutSection.js.map +1 -1
  67. package/lib/module/components/ContentView/components/CastCard.js +6 -7
  68. package/lib/module/components/ContentView/components/CastCard.js.map +1 -1
  69. package/lib/module/components/ContentView/components/EpisodeCard.js +2 -2
  70. package/lib/module/components/ContentView/components/EpisodeCard.js.map +1 -1
  71. package/lib/module/components/ContentView/components/GenreTags.js +25 -13
  72. package/lib/module/components/ContentView/components/GenreTags.js.map +1 -1
  73. package/lib/module/components/ContentView/components/HeroBanner.js +39 -11
  74. package/lib/module/components/ContentView/components/HeroBanner.js.map +1 -1
  75. package/lib/module/components/ContentView/components/MiniInfo.js +84 -77
  76. package/lib/module/components/ContentView/components/MiniInfo.js.map +1 -1
  77. package/lib/module/components/ContentView/components/PlayButton.js +11 -7
  78. package/lib/module/components/ContentView/components/PlayButton.js.map +1 -1
  79. package/lib/module/components/ContentView/components/Title.js +12 -12
  80. package/lib/module/components/ContentView/components/Title.js.map +1 -1
  81. package/lib/module/components/ContentView/components/TrailerButton.js +12 -7
  82. package/lib/module/components/ContentView/components/TrailerButton.js.map +1 -1
  83. package/lib/module/components/Fallbacks/NoContentFallback.js +27 -22
  84. package/lib/module/components/Fallbacks/NoContentFallback.js.map +1 -1
  85. package/lib/module/components/Fallbacks/NotFoundFallback.js +6 -4
  86. package/lib/module/components/Fallbacks/NotFoundFallback.js.map +1 -1
  87. package/lib/module/components/Headers/AppHeader.js +22 -13
  88. package/lib/module/components/Headers/AppHeader.js.map +1 -1
  89. package/lib/module/components/Headers/Three.js +6 -5
  90. package/lib/module/components/Headers/Three.js.map +1 -1
  91. package/lib/module/components/Headers/Two.js +19 -14
  92. package/lib/module/components/Headers/Two.js.map +1 -1
  93. package/lib/module/components/Input/InputOne.js +46 -31
  94. package/lib/module/components/Input/InputOne.js.map +1 -1
  95. package/lib/module/components/Loader/Loader.js +2 -2
  96. package/lib/module/components/Loader/Loader.js.map +1 -1
  97. package/lib/module/components/Logo/Logo.js +17 -14
  98. package/lib/module/components/Logo/Logo.js.map +1 -1
  99. package/lib/module/components/Reels/ReelsSeries/MediaControls/BottomControls.js +134 -0
  100. package/lib/module/components/Reels/ReelsSeries/MediaControls/BottomControls.js.map +1 -0
  101. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js +154 -0
  102. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js.map +1 -0
  103. package/lib/module/components/Reels/ReelsSeries/MediaControls/MiddleControls.js +173 -0
  104. package/lib/module/components/Reels/ReelsSeries/MediaControls/MiddleControls.js.map +1 -0
  105. package/lib/module/components/Reels/ReelsSeries/MediaControls/RightControls.js +77 -0
  106. package/lib/module/components/Reels/ReelsSeries/MediaControls/RightControls.js.map +1 -0
  107. package/lib/module/components/Reels/ReelsSeries/MediaControls/TopControls.js +132 -0
  108. package/lib/module/components/Reels/ReelsSeries/MediaControls/TopControls.js.map +1 -0
  109. package/lib/module/components/Reels/ReelsSeries/Model/DetailsModal.js +165 -0
  110. package/lib/module/components/Reels/ReelsSeries/Model/DetailsModal.js.map +1 -0
  111. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js +106 -0
  112. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js.map +1 -0
  113. package/lib/module/components/Reels/ReelsSeries/Model/UnlockModal.js +124 -0
  114. package/lib/module/components/Reels/ReelsSeries/Model/UnlockModal.js.map +1 -0
  115. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js +102 -64
  116. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js.map +1 -1
  117. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js +241 -232
  118. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js.map +1 -1
  119. package/lib/module/components/Reels/ReelsSeries/components/AnimatedThreeLines.js +153 -0
  120. package/lib/module/components/Reels/ReelsSeries/components/AnimatedThreeLines.js.map +1 -0
  121. package/lib/module/components/Reels/ReelsSeries/{Model → components}/Episodes.js +46 -36
  122. package/lib/module/components/Reels/ReelsSeries/components/Episodes.js.map +1 -0
  123. package/lib/module/components/Reels/ReelsSeries/components/GradientOverlay.js +35 -0
  124. package/lib/module/components/Reels/ReelsSeries/components/GradientOverlay.js.map +1 -0
  125. package/lib/module/components/Reels/ReelsSeries/components/Like.js +37 -0
  126. package/lib/module/components/Reels/ReelsSeries/components/Like.js.map +1 -0
  127. package/lib/module/components/Reels/ReelsSeries/components/RotatingLoader.js +55 -0
  128. package/lib/module/components/Reels/ReelsSeries/components/RotatingLoader.js.map +1 -0
  129. package/lib/module/components/Reels/ReelsSeries/components/Synopsis.js +268 -0
  130. package/lib/module/components/Reels/ReelsSeries/components/Synopsis.js.map +1 -0
  131. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js +143 -0
  132. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js.map +1 -0
  133. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.js +56 -0
  134. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.js.map +1 -0
  135. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/index.js +5 -0
  136. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/index.js.map +1 -0
  137. package/lib/module/components/Reels/utils/Controls/gestureUtils.js +30 -0
  138. package/lib/module/components/Reels/utils/Controls/gestureUtils.js.map +1 -0
  139. package/lib/module/components/Reels/utils/Controls/index.js +7 -0
  140. package/lib/module/components/Reels/utils/Controls/index.js.map +1 -0
  141. package/lib/module/components/Reels/utils/Controls/overlayUtils.js +28 -0
  142. package/lib/module/components/Reels/utils/Controls/overlayUtils.js.map +1 -0
  143. package/lib/module/components/Reels/utils/Controls/videoControlsConstants.js +27 -0
  144. package/lib/module/components/Reels/utils/Controls/videoControlsConstants.js.map +1 -0
  145. package/lib/module/components/Reels/utils/Controls/videoRef.js +5 -0
  146. package/lib/module/components/Reels/utils/Controls/videoRef.js.map +1 -0
  147. package/lib/module/components/Reels/utils/index.js +4 -0
  148. package/lib/module/components/Reels/utils/index.js.map +1 -0
  149. package/lib/module/components/Reels/utils/timeoutUtils.js +24 -0
  150. package/lib/module/components/Reels/utils/timeoutUtils.js.map +1 -0
  151. package/lib/module/components/Search/One.js +2 -1
  152. package/lib/module/components/Search/One.js.map +1 -1
  153. package/lib/module/components/Search/components/SearchCard.js +15 -19
  154. package/lib/module/components/Search/components/SearchCard.js.map +1 -1
  155. package/lib/module/components/Settings/AppSettings.js +97 -62
  156. package/lib/module/components/Settings/AppSettings.js.map +1 -1
  157. package/lib/module/components/Subscription/SubOne.js +313 -254
  158. package/lib/module/components/Subscription/SubOne.js.map +1 -1
  159. package/lib/module/components/Text/Text.js +15 -12
  160. package/lib/module/components/Text/Text.js.map +1 -1
  161. package/lib/module/components/User/DeviceSessions/DeviceSessions.js +25 -23
  162. package/lib/module/components/User/DeviceSessions/DeviceSessions.js.map +1 -1
  163. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js +23 -18
  164. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js.map +1 -1
  165. package/lib/module/components/User/PurchaseHistory/PurchaseHistory.js +38 -24
  166. package/lib/module/components/User/PurchaseHistory/PurchaseHistory.js.map +1 -1
  167. package/lib/module/components/User/WatchHistory/WatchHistory.js +21 -14
  168. package/lib/module/components/User/WatchHistory/WatchHistory.js.map +1 -1
  169. package/lib/module/components/User/WatchLater/WatchLater.js +30 -21
  170. package/lib/module/components/User/WatchLater/WatchLater.js.map +1 -1
  171. package/lib/module/components/User/components/UserAvatar.js +38 -19
  172. package/lib/module/components/User/components/UserAvatar.js.map +1 -1
  173. package/lib/module/components/User/components/UserSection.js +37 -17
  174. package/lib/module/components/User/components/UserSection.js.map +1 -1
  175. package/lib/module/components/View/View.js +7 -4
  176. package/lib/module/components/View/View.js.map +1 -1
  177. package/lib/module/components/index.js +1 -1
  178. package/lib/module/components/index.js.map +1 -1
  179. package/lib/module/hooks/index.js +17 -0
  180. package/lib/module/hooks/index.js.map +1 -0
  181. package/lib/module/hooks/useDebounce.js +25 -6
  182. package/lib/module/hooks/useDebounce.js.map +1 -1
  183. package/lib/module/hooks/useKeyboard.js +7 -4
  184. package/lib/module/hooks/useKeyboard.js.map +1 -1
  185. package/lib/module/hooks/useNavigationMode.js +10 -4
  186. package/lib/module/hooks/useNavigationMode.js.map +1 -1
  187. package/lib/module/hooks/usePaginatedSection.js +1 -1
  188. package/lib/module/hooks/usePaginatedSection.js.map +1 -1
  189. package/lib/module/hooks/usePrevious.js +30 -0
  190. package/lib/module/hooks/usePrevious.js.map +1 -0
  191. package/lib/module/hooks/useSafeCallback.js +33 -0
  192. package/lib/module/hooks/useSafeCallback.js.map +1 -0
  193. package/lib/module/hooks/useSkeletonItems.js +33 -0
  194. package/lib/module/hooks/useSkeletonItems.js.map +1 -0
  195. package/lib/module/hooks/useSplashCache.js +2 -1
  196. package/lib/module/hooks/useSplashCache.js.map +1 -1
  197. package/lib/module/hooks/useThemeColors.js +33 -0
  198. package/lib/module/hooks/useThemeColors.js.map +1 -0
  199. package/lib/module/theme/ThemeProvider.js +24 -15
  200. package/lib/module/theme/ThemeProvider.js.map +1 -1
  201. package/lib/module/theme/hook/useInternalTheme.js +18 -11
  202. package/lib/module/theme/hook/useInternalTheme.js.map +1 -1
  203. package/lib/module/theme/hook/useThemeStatusBar.js +10 -4
  204. package/lib/module/theme/hook/useThemeStatusBar.js.map +1 -1
  205. package/lib/module/theme/themes.js +3 -3
  206. package/lib/typescript/src/Styles/globalStyles.d.ts +0 -5
  207. package/lib/typescript/src/Styles/globalStyles.d.ts.map +1 -1
  208. package/lib/typescript/src/components/Auth/AuthProvider/AuthProvider.d.ts.map +1 -1
  209. package/lib/typescript/src/components/Auth/ForgotPassword/ForgotPassword.d.ts.map +1 -1
  210. package/lib/typescript/src/components/Auth/Login/LoginWithEmail.d.ts.map +1 -1
  211. package/lib/typescript/src/components/Auth/Login/LoginWithPhone.d.ts.map +1 -1
  212. package/lib/typescript/src/components/Auth/OTP/OTP.d.ts.map +1 -1
  213. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts +0 -15
  214. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts.map +1 -1
  215. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts +0 -1
  216. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts.map +1 -1
  217. package/lib/typescript/src/components/Auth/SignUp/SignUp.d.ts.map +1 -1
  218. package/lib/typescript/src/components/Auth/SplashScreen/SplashScreen.d.ts.map +1 -1
  219. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashImage/SplashImage.d.ts.map +1 -1
  220. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.d.ts.map +1 -1
  221. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +1 -1
  222. package/lib/typescript/src/components/Auth/index.d.ts.map +1 -1
  223. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts +1 -1
  224. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts.map +1 -1
  225. package/lib/typescript/src/components/BlogView/BlogView.d.ts +2 -1
  226. package/lib/typescript/src/components/BlogView/BlogView.d.ts.map +1 -1
  227. package/lib/typescript/src/components/BottomSheet/BottomSheet.d.ts +18 -0
  228. package/lib/typescript/src/components/BottomSheet/BottomSheet.d.ts.map +1 -0
  229. package/lib/typescript/src/components/BottomSheet/index.d.ts +3 -0
  230. package/lib/typescript/src/components/BottomSheet/index.d.ts.map +1 -0
  231. package/lib/typescript/src/components/Button/BackBtn.d.ts +5 -3
  232. package/lib/typescript/src/components/Button/BackBtn.d.ts.map +1 -1
  233. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts +2 -1
  234. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts.map +1 -1
  235. package/lib/typescript/src/components/Button/SecondaryBtn.d.ts +2 -1
  236. package/lib/typescript/src/components/Button/SecondaryBtn.d.ts.map +1 -1
  237. package/lib/typescript/src/components/Button/TextButton.d.ts +2 -2
  238. package/lib/typescript/src/components/Button/TextButton.d.ts.map +1 -1
  239. package/lib/typescript/src/components/Button/index.d.ts +4 -2
  240. package/lib/typescript/src/components/Button/index.d.ts.map +1 -1
  241. package/lib/typescript/src/components/Content/Card/Category/Category.d.ts.map +1 -1
  242. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts.map +1 -1
  243. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts.map +1 -1
  244. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts.map +1 -1
  245. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  246. package/lib/typescript/src/components/Content/Card/components/RentOrBuyIcon.d.ts +2 -2
  247. package/lib/typescript/src/components/Content/Card/components/RentOrBuyIcon.d.ts.map +1 -1
  248. package/lib/typescript/src/components/Content/Card/components/ThumbnailCard.d.ts +2 -0
  249. package/lib/typescript/src/components/Content/Card/components/ThumbnailCard.d.ts.map +1 -1
  250. package/lib/typescript/src/components/Content/Content.d.ts +2 -0
  251. package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
  252. package/lib/typescript/src/components/Content/Sections.d.ts +2 -2
  253. package/lib/typescript/src/components/Content/Sections.d.ts.map +1 -1
  254. package/lib/typescript/src/components/ContentView/ContentView.d.ts +6 -1
  255. package/lib/typescript/src/components/ContentView/ContentView.d.ts.map +1 -1
  256. package/lib/typescript/src/components/ContentView/MoreContentList.d.ts.map +1 -1
  257. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts +2 -1
  258. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts.map +1 -1
  259. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts +6 -1
  260. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts.map +1 -1
  261. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts +2 -1
  262. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts.map +1 -1
  263. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts +1 -1
  264. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts.map +1 -1
  265. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts +2 -1
  266. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts.map +1 -1
  267. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts +1 -1
  268. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts.map +1 -1
  269. package/lib/typescript/src/components/ContentView/components/PlayButton.d.ts +2 -1
  270. package/lib/typescript/src/components/ContentView/components/PlayButton.d.ts.map +1 -1
  271. package/lib/typescript/src/components/ContentView/components/Title.d.ts +1 -1
  272. package/lib/typescript/src/components/ContentView/components/Title.d.ts.map +1 -1
  273. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts +2 -1
  274. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts.map +1 -1
  275. package/lib/typescript/src/components/Fallbacks/NoContentFallback.d.ts +2 -1
  276. package/lib/typescript/src/components/Fallbacks/NoContentFallback.d.ts.map +1 -1
  277. package/lib/typescript/src/components/Fallbacks/NotFoundFallback.d.ts +1 -1
  278. package/lib/typescript/src/components/Fallbacks/NotFoundFallback.d.ts.map +1 -1
  279. package/lib/typescript/src/components/Headers/AppHeader.d.ts +2 -2
  280. package/lib/typescript/src/components/Headers/AppHeader.d.ts.map +1 -1
  281. package/lib/typescript/src/components/Headers/Three.d.ts +2 -2
  282. package/lib/typescript/src/components/Headers/Three.d.ts.map +1 -1
  283. package/lib/typescript/src/components/Headers/Two.d.ts +2 -2
  284. package/lib/typescript/src/components/Headers/Two.d.ts.map +1 -1
  285. package/lib/typescript/src/components/Headers/index.d.ts +2 -2
  286. package/lib/typescript/src/components/Input/Input.d.ts +1 -1
  287. package/lib/typescript/src/components/Input/InputOne.d.ts +2 -2
  288. package/lib/typescript/src/components/Input/InputOne.d.ts.map +1 -1
  289. package/lib/typescript/src/components/Loader/Loader.d.ts.map +1 -1
  290. package/lib/typescript/src/components/Logo/Logo.d.ts +2 -1
  291. package/lib/typescript/src/components/Logo/Logo.d.ts.map +1 -1
  292. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/BottomControls.d.ts +14 -0
  293. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/BottomControls.d.ts.map +1 -0
  294. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts +60 -0
  295. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts.map +1 -0
  296. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.d.ts +14 -0
  297. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.d.ts.map +1 -0
  298. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/RightControls.d.ts +14 -0
  299. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/RightControls.d.ts.map +1 -0
  300. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/TopControls.d.ts +12 -0
  301. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/TopControls.d.ts.map +1 -0
  302. package/lib/typescript/src/components/Reels/ReelsSeries/Model/DetailsModal.d.ts +16 -0
  303. package/lib/typescript/src/components/Reels/ReelsSeries/Model/DetailsModal.d.ts.map +1 -0
  304. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts +15 -0
  305. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts.map +1 -0
  306. package/lib/typescript/src/components/Reels/ReelsSeries/Model/UnlockModal.d.ts +14 -0
  307. package/lib/typescript/src/components/Reels/ReelsSeries/Model/UnlockModal.d.ts.map +1 -0
  308. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts +8 -2
  309. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts.map +1 -1
  310. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts +8 -2
  311. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts.map +1 -1
  312. package/lib/typescript/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.d.ts +13 -0
  313. package/lib/typescript/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.d.ts.map +1 -0
  314. package/lib/typescript/src/components/Reels/ReelsSeries/{Model → components}/Episodes.d.ts +3 -2
  315. package/lib/typescript/src/components/Reels/ReelsSeries/components/Episodes.d.ts.map +1 -0
  316. package/lib/typescript/src/components/Reels/ReelsSeries/components/GradientOverlay.d.ts +7 -0
  317. package/lib/typescript/src/components/Reels/ReelsSeries/components/GradientOverlay.d.ts.map +1 -0
  318. package/lib/typescript/src/components/Reels/ReelsSeries/components/Like.d.ts +7 -0
  319. package/lib/typescript/src/components/Reels/ReelsSeries/components/Like.d.ts.map +1 -0
  320. package/lib/typescript/src/components/Reels/ReelsSeries/components/RotatingLoader.d.ts +12 -0
  321. package/lib/typescript/src/components/Reels/ReelsSeries/components/RotatingLoader.d.ts.map +1 -0
  322. package/lib/typescript/src/components/Reels/ReelsSeries/components/Synopsis.d.ts +12 -0
  323. package/lib/typescript/src/components/Reels/ReelsSeries/components/Synopsis.d.ts.map +1 -0
  324. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts +11 -0
  325. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts.map +1 -0
  326. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.d.ts +10 -0
  327. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.d.ts.map +1 -0
  328. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/index.d.ts +3 -0
  329. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/index.d.ts.map +1 -0
  330. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts +13 -0
  331. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts.map +1 -1
  332. package/lib/typescript/src/components/Reels/utils/Controls/gestureUtils.d.ts +10 -0
  333. package/lib/typescript/src/components/Reels/utils/Controls/gestureUtils.d.ts.map +1 -0
  334. package/lib/typescript/src/components/Reels/utils/Controls/index.d.ts +5 -0
  335. package/lib/typescript/src/components/Reels/utils/Controls/index.d.ts.map +1 -0
  336. package/lib/typescript/src/components/Reels/utils/Controls/overlayUtils.d.ts +12 -0
  337. package/lib/typescript/src/components/Reels/utils/Controls/overlayUtils.d.ts.map +1 -0
  338. package/lib/typescript/src/components/Reels/utils/Controls/videoControlsConstants.d.ts +24 -0
  339. package/lib/typescript/src/components/Reels/utils/Controls/videoControlsConstants.d.ts.map +1 -0
  340. package/lib/typescript/src/components/Reels/utils/Controls/videoRef.d.ts +3 -0
  341. package/lib/typescript/src/components/Reels/utils/Controls/videoRef.d.ts.map +1 -0
  342. package/lib/typescript/src/components/Reels/utils/index.d.ts +2 -0
  343. package/lib/typescript/src/components/Reels/utils/index.d.ts.map +1 -0
  344. package/lib/typescript/src/components/Reels/utils/timeoutUtils.d.ts +14 -0
  345. package/lib/typescript/src/components/Reels/utils/timeoutUtils.d.ts.map +1 -0
  346. package/lib/typescript/src/components/Search/One.d.ts.map +1 -1
  347. package/lib/typescript/src/components/Search/components/SearchCard.d.ts +2 -5
  348. package/lib/typescript/src/components/Search/components/SearchCard.d.ts.map +1 -1
  349. package/lib/typescript/src/components/Search/index.d.ts +1 -1
  350. package/lib/typescript/src/components/Settings/AppSettings.d.ts +2 -2
  351. package/lib/typescript/src/components/Settings/AppSettings.d.ts.map +1 -1
  352. package/lib/typescript/src/components/Subscription/SubOne.d.ts.map +1 -1
  353. package/lib/typescript/src/components/Subscription/index.d.ts.map +1 -1
  354. package/lib/typescript/src/components/Text/Text.d.ts +2 -2
  355. package/lib/typescript/src/components/Text/Text.d.ts.map +1 -1
  356. package/lib/typescript/src/components/User/DeviceSessions/DeviceSessions.d.ts +1 -1
  357. package/lib/typescript/src/components/User/DeviceSessions/DeviceSessions.d.ts.map +1 -1
  358. package/lib/typescript/src/components/User/ProfileUpdate/ProfileUpdate.d.ts +1 -1
  359. package/lib/typescript/src/components/User/ProfileUpdate/ProfileUpdate.d.ts.map +1 -1
  360. package/lib/typescript/src/components/User/PurchaseHistory/PurchaseHistory.d.ts +1 -1
  361. package/lib/typescript/src/components/User/PurchaseHistory/PurchaseHistory.d.ts.map +1 -1
  362. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts +1 -1
  363. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts.map +1 -1
  364. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts +1 -1
  365. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts.map +1 -1
  366. package/lib/typescript/src/components/User/components/UserAvatar.d.ts +1 -1
  367. package/lib/typescript/src/components/User/components/UserAvatar.d.ts.map +1 -1
  368. package/lib/typescript/src/components/User/components/UserSection.d.ts +1 -1
  369. package/lib/typescript/src/components/User/components/UserSection.d.ts.map +1 -1
  370. package/lib/typescript/src/components/View/View.d.ts +2 -0
  371. package/lib/typescript/src/components/View/View.d.ts.map +1 -1
  372. package/lib/typescript/src/components/index.d.ts +1 -1
  373. package/lib/typescript/src/components/index.d.ts.map +1 -1
  374. package/lib/typescript/src/hooks/index.d.ts +14 -0
  375. package/lib/typescript/src/hooks/index.d.ts.map +1 -0
  376. package/lib/typescript/src/hooks/useDebounce.d.ts.map +1 -1
  377. package/lib/typescript/src/hooks/useKeyboard.d.ts.map +1 -1
  378. package/lib/typescript/src/hooks/useNavigationMode.d.ts.map +1 -1
  379. package/lib/typescript/src/hooks/usePrevious.d.ts +12 -0
  380. package/lib/typescript/src/hooks/usePrevious.d.ts.map +1 -0
  381. package/lib/typescript/src/hooks/useSafeCallback.d.ts +15 -0
  382. package/lib/typescript/src/hooks/useSafeCallback.d.ts.map +1 -0
  383. package/lib/typescript/src/hooks/useSkeletonItems.d.ts +11 -0
  384. package/lib/typescript/src/hooks/useSkeletonItems.d.ts.map +1 -0
  385. package/lib/typescript/src/hooks/useSplashCache.d.ts.map +1 -1
  386. package/lib/typescript/src/hooks/useThemeColors.d.ts +27 -0
  387. package/lib/typescript/src/hooks/useThemeColors.d.ts.map +1 -0
  388. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
  389. package/lib/typescript/src/theme/hook/useInternalTheme.d.ts.map +1 -1
  390. package/lib/typescript/src/theme/hook/useThemeStatusBar.d.ts.map +1 -1
  391. package/package.json +2 -2
  392. package/src/Styles/globalStyles.ts +0 -5
  393. package/src/components/Auth/AuthProvider/AuthProvider.tsx +288 -212
  394. package/src/components/Auth/ForgotPassword/ForgotPassword.tsx +11 -4
  395. package/src/components/Auth/Login/LoginWithEmail.tsx +266 -238
  396. package/src/components/Auth/Login/LoginWithPhone.tsx +18 -6
  397. package/src/components/Auth/OTP/OTP.tsx +21 -5
  398. package/src/components/Auth/QrLogin/QrLogin.tsx +225 -185
  399. package/src/components/Auth/QrLogin/components/QrViewArea.tsx +282 -166
  400. package/src/components/Auth/SignUp/SignUp.tsx +312 -293
  401. package/src/components/Auth/SplashScreen/SplashScreen.tsx +186 -131
  402. package/src/components/Auth/SplashScreen/components/SplashImage/SplashImage.tsx +32 -15
  403. package/src/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.tsx +11 -5
  404. package/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.tsx +34 -18
  405. package/src/components/BackgroundLayout/BackgroundLayout.tsx +43 -37
  406. package/src/components/BlogView/BlogView.tsx +66 -30
  407. package/src/components/BottomSheet/BottomSheet.tsx +195 -0
  408. package/src/components/BottomSheet/index.ts +2 -0
  409. package/src/components/Button/BackBtn.tsx +87 -24
  410. package/src/components/Button/PrimaryBtn.tsx +42 -25
  411. package/src/components/Button/SecondaryBtn.tsx +41 -25
  412. package/src/components/Button/TextButton.tsx +54 -32
  413. package/src/components/Content/Card/Category/Category.tsx +94 -56
  414. package/src/components/Content/Card/Sliders/Styles/One.tsx +63 -47
  415. package/src/components/Content/Card/Sliders/Styles/Two.tsx +131 -51
  416. package/src/components/Content/Card/Styles/RotateInOut.tsx +7 -9
  417. package/src/components/Content/Card/components/CardPoster.tsx +136 -55
  418. package/src/components/Content/Card/components/RentOrBuyIcon.tsx +58 -38
  419. package/src/components/Content/Card/components/ThumbnailCard.tsx +122 -47
  420. package/src/components/Content/Content.tsx +164 -97
  421. package/src/components/Content/Sections.tsx +99 -43
  422. package/src/components/ContentView/ContentView.tsx +194 -128
  423. package/src/components/ContentView/MoreContentList.tsx +215 -151
  424. package/src/components/ContentView/components/AboutSection.tsx +132 -93
  425. package/src/components/ContentView/components/CastCard.tsx +148 -138
  426. package/src/components/ContentView/components/EpisodeCard.tsx +160 -155
  427. package/src/components/ContentView/components/GenreTags.tsx +68 -53
  428. package/src/components/ContentView/components/HeroBanner.tsx +326 -284
  429. package/src/components/ContentView/components/MiniInfo.tsx +181 -159
  430. package/src/components/ContentView/components/PlayButton.tsx +27 -16
  431. package/src/components/ContentView/components/Title.tsx +89 -72
  432. package/src/components/ContentView/components/TrailerButton.tsx +35 -22
  433. package/src/components/Fallbacks/NoContentFallback.tsx +107 -103
  434. package/src/components/Fallbacks/NotFoundFallback.tsx +12 -4
  435. package/src/components/Headers/AppHeader.tsx +42 -26
  436. package/src/components/Headers/Three.tsx +12 -8
  437. package/src/components/Headers/Two.tsx +31 -10
  438. package/src/components/Input/InputOne.tsx +136 -108
  439. package/src/components/Loader/Loader.tsx +2 -2
  440. package/src/components/Logo/Logo.tsx +43 -27
  441. package/src/components/Reels/ReelsSeries/MediaControls/BottomControls.tsx +156 -0
  442. package/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.tsx +234 -0
  443. package/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.tsx +196 -0
  444. package/src/components/Reels/ReelsSeries/MediaControls/RightControls.tsx +92 -0
  445. package/src/components/Reels/ReelsSeries/MediaControls/TopControls.tsx +163 -0
  446. package/src/components/Reels/ReelsSeries/Model/DetailsModal.tsx +210 -0
  447. package/src/components/Reels/ReelsSeries/Model/SettingModal.tsx +143 -0
  448. package/src/components/Reels/ReelsSeries/Model/UnlockModal.tsx +154 -0
  449. package/src/components/Reels/ReelsSeries/ReelsSeries.tsx +142 -74
  450. package/src/components/Reels/ReelsSeries/ReelsSeriesItem.tsx +349 -250
  451. package/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.tsx +184 -0
  452. package/src/components/Reels/ReelsSeries/{Model → components}/Episodes.tsx +54 -33
  453. package/src/components/Reels/ReelsSeries/components/GradientOverlay.tsx +41 -0
  454. package/src/components/Reels/ReelsSeries/components/Like.tsx +40 -0
  455. package/src/components/Reels/ReelsSeries/components/RotatingLoader.tsx +79 -0
  456. package/src/components/Reels/ReelsSeries/components/Synopsis.tsx +332 -0
  457. package/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.tsx +190 -0
  458. package/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.tsx +80 -0
  459. package/src/components/Reels/ReelsSeries/components/VideoControls/index.ts +2 -0
  460. package/src/components/Reels/ReelsSeries/types.ts +13 -2
  461. package/src/components/Reels/utils/Controls/gestureUtils.ts +42 -0
  462. package/src/components/Reels/utils/Controls/index.ts +4 -0
  463. package/src/components/Reels/utils/Controls/overlayUtils.ts +35 -0
  464. package/src/components/Reels/utils/Controls/videoControlsConstants.ts +25 -0
  465. package/src/components/Reels/utils/Controls/videoRef.ts +4 -0
  466. package/src/components/Reels/utils/index.ts +1 -0
  467. package/src/components/Reels/utils/timeoutUtils.ts +29 -0
  468. package/src/components/Search/One.tsx +2 -4
  469. package/src/components/Search/components/SearchCard.tsx +19 -13
  470. package/src/components/Settings/AppSettings.tsx +217 -128
  471. package/src/components/Subscription/SubOne.tsx +394 -317
  472. package/src/components/Text/Text.tsx +33 -22
  473. package/src/components/User/DeviceSessions/DeviceSessions.tsx +129 -102
  474. package/src/components/User/ProfileUpdate/ProfileUpdate.tsx +36 -17
  475. package/src/components/User/PurchaseHistory/PurchaseHistory.tsx +194 -140
  476. package/src/components/User/WatchHistory/WatchHistory.tsx +63 -36
  477. package/src/components/User/WatchLater/WatchLater.tsx +119 -81
  478. package/src/components/User/components/UserAvatar.tsx +49 -15
  479. package/src/components/User/components/UserSection.tsx +71 -37
  480. package/src/components/View/View.tsx +10 -2
  481. package/src/components/index.ts +1 -1
  482. package/src/hooks/index.ts +14 -0
  483. package/src/hooks/useDebounce.ts +25 -6
  484. package/src/hooks/useKeyboard.ts +12 -5
  485. package/src/hooks/useNavigationMode.ts +16 -5
  486. package/src/hooks/usePaginatedSection.ts +1 -1
  487. package/src/hooks/usePrevious.ts +28 -0
  488. package/src/hooks/useSafeCallback.ts +43 -0
  489. package/src/hooks/useSkeletonItems.ts +30 -0
  490. package/src/hooks/useSplashCache.ts +2 -1
  491. package/src/hooks/useThemeColors.ts +51 -0
  492. package/src/theme/ThemeProvider.tsx +33 -11
  493. package/src/theme/hook/useInternalTheme.ts +19 -13
  494. package/src/theme/hook/useThemeStatusBar.ts +14 -5
  495. package/src/theme/themes.ts +3 -3
  496. package/lib/module/components/Reels/ReelsSeries/Model/Episodes.js.map +0 -1
  497. package/lib/module/components/Reels/ReelsSeries/Model/Synopsis.js +0 -212
  498. package/lib/module/components/Reels/ReelsSeries/Model/Synopsis.js.map +0 -1
  499. package/lib/module/components/Reels/ReelsSeries/ReelSeriesDetailsModal.js +0 -182
  500. package/lib/module/components/Reels/ReelsSeries/ReelSeriesDetailsModal.js.map +0 -1
  501. package/lib/module/components/Reels/ReelsSeries/ReelSeriesOverlay.js +0 -203
  502. package/lib/module/components/Reels/ReelsSeries/ReelSeriesOverlay.js.map +0 -1
  503. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Episodes.d.ts.map +0 -1
  504. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Synopsis.d.ts +0 -9
  505. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Synopsis.d.ts.map +0 -1
  506. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.d.ts +0 -13
  507. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.d.ts.map +0 -1
  508. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesOverlay.d.ts +0 -18
  509. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesOverlay.d.ts.map +0 -1
  510. package/src/components/Reels/ReelsSeries/Model/Synopsis.tsx +0 -242
  511. package/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.tsx +0 -209
  512. package/src/components/Reels/ReelsSeries/ReelSeriesOverlay.tsx +0 -185
@@ -2,7 +2,7 @@
2
2
  * @author Naresh Dhamu
3
3
  * @lastModified Mon 16 Jun 2025 at 03:05 PM
4
4
  */
5
- import React, { useCallback } from 'react';
5
+ import React, { useCallback, useMemo } from 'react';
6
6
  import {
7
7
  StyleSheet,
8
8
  View,
@@ -84,274 +84,302 @@ type LoginWithEmailProps = {
84
84
  renderTopBackBtn?: (props: { onPress: () => void }) => React.ReactNode;
85
85
  };
86
86
 
87
- const LoginWithEmail: React.FC<LoginWithEmailProps> = ({
88
- title = 'Login',
89
- onSubmit,
90
- onSignup,
91
- onForgotPassword,
92
- onSwitchToPhoneLogin,
93
- onTopBackBtnPress,
94
- containerStyle,
95
- titleStyle,
96
- formStyle,
97
- inputStyle,
98
- inputContainerStyle,
99
- loadingSubmitBtn,
100
- topBackBtnStyle,
101
- minPasswordLength = 6,
102
- backgroundImage,
103
- logoUri,
104
- theme: overrideTheme,
105
- text,
106
- signupTextProps,
107
- signupLinkTextProps,
108
- renderLogo,
109
- renderForgotPassword,
110
- renderEmailHeader,
111
- renderSignupPrompt,
112
- renderSubmitButton,
113
- renderSwitchToPhoneLogin,
114
- renderTopBackBtn,
115
- }) => {
116
- const { isKeyboardOpen } = useKeyboard();
117
- const { theme: resolvedTheme } = useInternalTheme(overrideTheme);
118
- const [isLoading, setIsLoading] = React.useState(false);
119
- const {
120
- control,
121
- handleSubmit,
122
- formState: { errors, isValid, touchedFields },
123
- } = useForm<FormValues>({
124
- defaultValues: { email: '', password: '' },
125
- mode: 'onChange',
126
- });
87
+ const LoginWithEmail: React.FC<LoginWithEmailProps> = React.memo(
88
+ ({
89
+ title = 'Login',
90
+ onSubmit,
91
+ onSignup,
92
+ onForgotPassword,
93
+ onSwitchToPhoneLogin,
94
+ onTopBackBtnPress,
95
+ containerStyle,
96
+ titleStyle,
97
+ formStyle,
98
+ inputStyle,
99
+ inputContainerStyle,
100
+ loadingSubmitBtn,
101
+ topBackBtnStyle,
102
+ minPasswordLength = 6,
103
+ backgroundImage,
104
+ logoUri,
105
+ theme: overrideTheme,
106
+ text,
107
+ signupTextProps,
108
+ signupLinkTextProps,
109
+ renderLogo,
110
+ renderForgotPassword,
111
+ renderEmailHeader,
112
+ renderSignupPrompt,
113
+ renderSubmitButton,
114
+ renderSwitchToPhoneLogin,
115
+ renderTopBackBtn,
116
+ }) => {
117
+ const { isKeyboardOpen } = useKeyboard();
118
+ const { theme: resolvedTheme } = useInternalTheme(overrideTheme);
119
+ const [isLoading, setIsLoading] = React.useState(false);
120
+ const {
121
+ control,
122
+ handleSubmit,
123
+ formState: { errors, isValid, touchedFields },
124
+ } = useForm<FormValues>({
125
+ defaultValues: { email: '', password: '' },
126
+ mode: 'onChange',
127
+ });
127
128
 
128
- const handleFormSubmit = useCallback(
129
- async (data: FormValues) => {
130
- if (!onSubmit) return;
131
- setIsLoading(true);
132
- try {
133
- await onSubmit(data);
134
- } catch (error) {
135
- console.error('Form submission error:', error);
136
- } finally {
137
- setIsLoading(false);
138
- }
139
- },
140
- [onSubmit]
141
- );
129
+ const handleFormSubmit = useCallback(
130
+ async (data: FormValues) => {
131
+ if (!onSubmit) return;
132
+ setIsLoading(true);
133
+ try {
134
+ await onSubmit(data);
135
+ } catch (error) {
136
+ console.error('Form submission error:', error);
137
+ } finally {
138
+ setIsLoading(false);
139
+ }
140
+ },
141
+ [onSubmit]
142
+ );
142
143
 
143
- const handleKeyboardDismiss = (callback?: () => void) => {
144
- Keyboard.dismiss();
145
- requestAnimationFrame(() => callback?.());
146
- };
144
+ const handleKeyboardDismiss = useCallback((callback?: () => void) => {
145
+ Keyboard.dismiss();
146
+ requestAnimationFrame(() => callback?.());
147
+ }, []);
147
148
 
148
- const shouldRender = (condition?: boolean | unknown): boolean =>
149
- typeof condition === 'function' || !!condition;
149
+ const shouldRender = useMemo(
150
+ () =>
151
+ (condition?: boolean | unknown): boolean =>
152
+ typeof condition === 'function' || !!condition,
153
+ []
154
+ );
150
155
 
151
- return (
152
- <BackgroundLayout
153
- backgroundImage={backgroundImage?.source}
154
- theme={overrideTheme}
155
- gradientSplitBackground={isKeyboardOpen ? 0.31 : 0.35}
156
- >
157
- <View style={[styles.container, containerStyle]}>
158
- {shouldRender(renderTopBackBtn || onTopBackBtnPress) && (
159
- <View style={styles.topBackBtnWrapper}>
160
- {renderTopBackBtn ? (
161
- renderTopBackBtn({
162
- onPress: onTopBackBtnPress ?? (() => {}),
163
- })
164
- ) : (
165
- <BackBtn
166
- theme={overrideTheme}
167
- style={topBackBtnStyle}
168
- onPress={onTopBackBtnPress}
169
- />
170
- )}
171
- </View>
172
- )}
173
- <HideKeyboard>
174
- <View style={styles.centerContent}>
175
- {renderLogo ? (
176
- renderLogo()
177
- ) : logoUri ? (
178
- <Logo logoUri={logoUri} />
179
- ) : null}
156
+ // Memoize gradient split background
157
+ const gradientSplitBackground = useMemo(
158
+ () => (isKeyboardOpen ? 0.31 : 0.35),
159
+ [isKeyboardOpen]
160
+ );
180
161
 
181
- {renderEmailHeader ? (
182
- renderEmailHeader()
183
- ) : (
184
- <Text style={[styles.title, titleStyle]}>{title}</Text>
185
- )}
162
+ // Memoize disabled state
163
+ const isDisabled = useMemo(
164
+ () => loadingSubmitBtn || isLoading,
165
+ [loadingSubmitBtn, isLoading]
166
+ );
186
167
 
187
- <View style={[styles.form, formStyle]}>
188
- <Controller
189
- control={control}
190
- name="email"
191
- rules={{
192
- required: 'Email is required',
193
- pattern: {
194
- value: /^\S+@\S+\.\S+$/,
195
- message: 'Enter a valid email address',
196
- },
197
- }}
198
- render={({ field: { onChange, onBlur, value } }) => (
199
- <Input.One
200
- label={text?.emailLabel || 'Email'}
201
- placeholder={text?.emailPlaceholder || 'Email'}
202
- value={value}
203
- onChangeText={(inputText) => {
204
- const sanitized = inputText.replace(/[^\w@.\-+]/g, '');
205
- onChange(sanitized);
206
- }}
207
- onBlur={onBlur}
208
- disabled={loadingSubmitBtn || isLoading}
209
- error={!!touchedFields.email && !!errors.email}
210
- errorMessage={errors.email?.message}
211
- inputStyle={inputStyle}
212
- containerStyle={inputContainerStyle}
213
- theme={overrideTheme}
214
- textContentType="emailAddress"
215
- autoCapitalize="none"
216
- keyboardType="email-address"
217
- autoCorrect={false}
218
- />
219
- )}
220
- />
168
+ return (
169
+ <BackgroundLayout
170
+ backgroundImage={backgroundImage?.source}
171
+ theme={overrideTheme}
172
+ gradientSplitBackground={gradientSplitBackground}
173
+ >
174
+ <View style={[styles.container, containerStyle]}>
175
+ {shouldRender(renderTopBackBtn || onTopBackBtnPress) && (
176
+ <View style={styles.topBackBtnWrapper}>
177
+ {renderTopBackBtn ? (
178
+ renderTopBackBtn({
179
+ onPress: onTopBackBtnPress ?? (() => {}),
180
+ })
181
+ ) : (
182
+ <BackBtn
183
+ theme={overrideTheme}
184
+ style={topBackBtnStyle}
185
+ onPress={onTopBackBtnPress}
186
+ />
187
+ )}
188
+ </View>
189
+ )}
190
+ <HideKeyboard>
191
+ <View style={styles.centerContent}>
192
+ {renderLogo ? (
193
+ renderLogo()
194
+ ) : logoUri ? (
195
+ <Logo logoUri={logoUri} />
196
+ ) : null}
221
197
 
222
- <Controller
223
- control={control}
224
- name="password"
225
- rules={{
226
- required: 'Password is required',
227
- minLength: {
228
- value: minPasswordLength,
229
- message: `Password must be at least ${minPasswordLength} characters`,
230
- },
231
- }}
232
- render={({ field: { onChange, onBlur, value } }) => (
233
- <>
198
+ {renderEmailHeader ? (
199
+ renderEmailHeader()
200
+ ) : (
201
+ <Text style={[styles.title, titleStyle]}>{title}</Text>
202
+ )}
203
+
204
+ <View style={[styles.form, formStyle]}>
205
+ <Controller
206
+ control={control}
207
+ name="email"
208
+ rules={{
209
+ required: 'Email is required',
210
+ pattern: {
211
+ value: /^\S+@\S+\.\S+$/,
212
+ message: 'Enter a valid email address',
213
+ },
214
+ }}
215
+ render={({ field: { onChange, onBlur, value } }) => (
234
216
  <Input.One
235
- label={text?.passwordLabel || 'Password'}
236
- placeholder={text?.passwordPlaceholder || 'Password'}
217
+ label={text?.emailLabel || 'Email'}
218
+ placeholder={text?.emailPlaceholder || 'Email'}
237
219
  value={value}
238
- secureTextEntry
239
220
  onChangeText={(inputText) => {
240
221
  const sanitized = inputText.replace(/[^\w@.\-+]/g, '');
241
222
  onChange(sanitized);
242
223
  }}
243
224
  onBlur={onBlur}
244
- disabled={loadingSubmitBtn || isLoading}
245
- error={!!touchedFields.password && !!errors.password}
246
- errorMessage={errors.password?.message}
225
+ disabled={isDisabled}
226
+ error={!!touchedFields.email && !!errors.email}
227
+ errorMessage={errors.email?.message}
247
228
  inputStyle={inputStyle}
248
229
  containerStyle={inputContainerStyle}
249
- textContentType="none"
230
+ theme={overrideTheme}
231
+ textContentType="emailAddress"
250
232
  autoCapitalize="none"
251
- spellCheck={false}
233
+ keyboardType="email-address"
252
234
  autoCorrect={false}
253
- autoComplete="off"
235
+ />
236
+ )}
237
+ />
238
+
239
+ <Controller
240
+ control={control}
241
+ name="password"
242
+ rules={{
243
+ required: 'Password is required',
244
+ minLength: {
245
+ value: minPasswordLength,
246
+ message: `Password must be at least ${minPasswordLength} characters`,
247
+ },
248
+ }}
249
+ render={({ field: { onChange, onBlur, value } }) => (
250
+ <>
251
+ <Input.One
252
+ label={text?.passwordLabel || 'Password'}
253
+ placeholder={text?.passwordPlaceholder || 'Password'}
254
+ value={value}
255
+ secureTextEntry
256
+ onChangeText={(inputText) => {
257
+ const sanitized = inputText.replace(
258
+ /[^\w@.\-+]/g,
259
+ ''
260
+ );
261
+ onChange(sanitized);
262
+ }}
263
+ onBlur={onBlur}
264
+ disabled={isDisabled}
265
+ error={!!touchedFields.password && !!errors.password}
266
+ errorMessage={errors.password?.message}
267
+ inputStyle={inputStyle}
268
+ containerStyle={inputContainerStyle}
269
+ textContentType="none"
270
+ autoCapitalize="none"
271
+ spellCheck={false}
272
+ autoCorrect={false}
273
+ autoComplete="off"
274
+ theme={overrideTheme}
275
+ />
276
+ {!isKeyboardOpen &&
277
+ shouldRender(
278
+ renderForgotPassword || onForgotPassword
279
+ ) &&
280
+ (renderForgotPassword ? (
281
+ renderForgotPassword()
282
+ ) : (
283
+ <TextButton
284
+ title={text?.forgotPassword || 'Forgot password?'}
285
+ onPress={() =>
286
+ handleKeyboardDismiss(onForgotPassword)
287
+ }
288
+ color={resolvedTheme.colors.button}
289
+ align="right"
290
+ style={styles.forgotPasswordText}
291
+ />
292
+ ))}
293
+ </>
294
+ )}
295
+ />
296
+
297
+ {!isKeyboardOpen &&
298
+ (renderSubmitButton ? (
299
+ renderSubmitButton({
300
+ onPress: handleSubmit(handleFormSubmit),
301
+ disabled: loadingSubmitBtn || !isValid || isLoading,
302
+ loading: loadingSubmitBtn || isLoading,
303
+ })
304
+ ) : (
305
+ <Button.Primary
306
+ title={text?.loginButton || 'Login'}
307
+ onPress={handleSubmit(handleFormSubmit)}
308
+ disabled={isDisabled || !isValid}
254
309
  theme={overrideTheme}
310
+ titleStyle={{
311
+ fontSize: RFValue(14),
312
+ }}
313
+ loadingText={
314
+ text?.loadingSubmitBtnText || 'Logging in...'
315
+ }
316
+ loading={isDisabled}
255
317
  />
256
- {!isKeyboardOpen &&
257
- shouldRender(renderForgotPassword || onForgotPassword) &&
258
- (renderForgotPassword ? (
259
- renderForgotPassword()
260
- ) : (
261
- <TextButton
262
- title={text?.forgotPassword || 'Forgot password?'}
263
- onPress={() =>
264
- handleKeyboardDismiss(onForgotPassword)
265
- }
266
- color={resolvedTheme.colors.button}
267
- align="right"
268
- style={styles.forgotPasswordText}
269
- />
270
- ))}
271
- </>
272
- )}
273
- />
318
+ ))}
319
+ </View>
274
320
 
275
321
  {!isKeyboardOpen &&
276
- (renderSubmitButton ? (
277
- renderSubmitButton({
278
- onPress: handleSubmit(handleFormSubmit),
279
- disabled: loadingSubmitBtn || !isValid || isLoading,
280
- loading: loadingSubmitBtn || isLoading,
322
+ shouldRender(
323
+ onSwitchToPhoneLogin || renderSwitchToPhoneLogin
324
+ ) &&
325
+ (renderSwitchToPhoneLogin ? (
326
+ renderSwitchToPhoneLogin({
327
+ onPress: () => handleKeyboardDismiss(onSwitchToPhoneLogin),
281
328
  })
282
329
  ) : (
283
- <Button.Primary
284
- title={text?.loginButton || 'Login'}
285
- onPress={handleSubmit(handleFormSubmit)}
286
- disabled={loadingSubmitBtn || !isValid || isLoading}
287
- theme={overrideTheme}
288
- titleStyle={{
289
- fontSize: RFValue(14),
290
- }}
291
- loadingText={text?.loadingSubmitBtnText || 'Logging in...'}
292
- loading={loadingSubmitBtn || isLoading}
330
+ <TextButton
331
+ title={text?.switchToPhoneLogin || 'Login with Phone'}
332
+ onPress={() => handleKeyboardDismiss(onSwitchToPhoneLogin)}
333
+ color={resolvedTheme.colors.button}
334
+ style={styles.switchPhoneText}
335
+ underline
336
+ bold
337
+ align="center"
293
338
  />
294
339
  ))}
295
340
  </View>
296
341
 
297
342
  {!isKeyboardOpen &&
298
- shouldRender(onSwitchToPhoneLogin || renderSwitchToPhoneLogin) &&
299
- (renderSwitchToPhoneLogin ? (
300
- renderSwitchToPhoneLogin({
301
- onPress: () => handleKeyboardDismiss(onSwitchToPhoneLogin),
302
- })
303
- ) : (
304
- <TextButton
305
- title={text?.switchToPhoneLogin || 'Login with Phone'}
306
- onPress={() => handleKeyboardDismiss(onSwitchToPhoneLogin)}
307
- color={resolvedTheme.colors.button}
308
- style={styles.switchPhoneText}
309
- underline
310
- bold
311
- align="center"
312
- />
313
- ))}
314
- </View>
315
-
316
- {!isKeyboardOpen && shouldRender(onSignup || renderSignupPrompt) && (
317
- <View
318
- style={[
319
- styles.signupContainer,
320
- {
321
- bottom: getResponsiveBottomSpacing(35),
322
- },
323
- ]}
324
- >
325
- {renderSignupPrompt ? (
326
- renderSignupPrompt({
327
- onPress: () => handleKeyboardDismiss(onSignup),
328
- })
329
- ) : (
330
- <View style={styles.loginRow}>
331
- <Text
332
- style={[styles.loginPrompt, signupTextProps]}
333
- color={resolvedTheme.colors.textPrimary}
334
- >
335
- {text?.signupPrompt || `Don't have an account?`}
336
- </Text>
337
- <TextButton
338
- title={text?.signupLink || 'Sign Up'}
339
- onPress={() => handleKeyboardDismiss(onSignup)}
340
- bold
341
- underline
342
- align="center"
343
- color={resolvedTheme.colors.button}
344
- style={signupLinkTextProps}
345
- />
343
+ shouldRender(onSignup || renderSignupPrompt) && (
344
+ <View
345
+ style={[
346
+ styles.signupContainer,
347
+ {
348
+ bottom: getResponsiveBottomSpacing(35),
349
+ },
350
+ ]}
351
+ >
352
+ {renderSignupPrompt ? (
353
+ renderSignupPrompt({
354
+ onPress: () => handleKeyboardDismiss(onSignup),
355
+ })
356
+ ) : (
357
+ <View style={styles.loginRow}>
358
+ <Text
359
+ style={[styles.loginPrompt, signupTextProps]}
360
+ color={resolvedTheme.colors.textPrimary}
361
+ >
362
+ {text?.signupPrompt || `Don't have an account?`}
363
+ </Text>
364
+ <TextButton
365
+ title={text?.signupLink || 'Sign Up'}
366
+ onPress={() => handleKeyboardDismiss(onSignup)}
367
+ bold
368
+ underline
369
+ align="center"
370
+ color={resolvedTheme.colors.button}
371
+ style={signupLinkTextProps}
372
+ />
373
+ </View>
374
+ )}
346
375
  </View>
347
376
  )}
348
- </View>
349
- )}
350
- </HideKeyboard>
351
- </View>
352
- </BackgroundLayout>
353
- );
354
- };
377
+ </HideKeyboard>
378
+ </View>
379
+ </BackgroundLayout>
380
+ );
381
+ }
382
+ );
355
383
 
356
384
  export default LoginWithEmail;
357
385
 
@@ -135,6 +135,18 @@ const LoginWithPhone: React.FC<LoginWithPhoneProps> = ({
135
135
  }
136
136
  }, [onLoginWithEmail]);
137
137
 
138
+ // Memoize gradient split background
139
+ const gradientSplitBackground = useMemo(
140
+ () => (isKeyboardOpen ? 0.3 : 0.4),
141
+ [isKeyboardOpen]
142
+ );
143
+
144
+ // Memoize disabled state
145
+ const isDisabled = useMemo(
146
+ () => loadingSubmitBtn || isLoading,
147
+ [loadingSubmitBtn, isLoading]
148
+ );
149
+
138
150
  const styles = useMemo(
139
151
  () =>
140
152
  StyleSheet.create({
@@ -182,7 +194,7 @@ const LoginWithPhone: React.FC<LoginWithPhoneProps> = ({
182
194
  <BackgroundLayout
183
195
  backgroundImage={backgroundImage?.source}
184
196
  theme={overrideTheme}
185
- gradientSplitBackground={isKeyboardOpen ? 0.3 : 0.4}
197
+ gradientSplitBackground={gradientSplitBackground}
186
198
  >
187
199
  <View
188
200
  style={[styles.container, containerStyle]}
@@ -235,7 +247,7 @@ const LoginWithPhone: React.FC<LoginWithPhoneProps> = ({
235
247
  placeholder={
236
248
  text.phonePlaceholder || DEFAULT_TEXT.phonePlaceholder
237
249
  }
238
- disabled={loadingSubmitBtn || isLoading}
250
+ disabled={isDisabled}
239
251
  error={!!errors.phone}
240
252
  errorMessage={errors.phone?.message}
241
253
  inputStyle={inputStyle}
@@ -249,20 +261,20 @@ const LoginWithPhone: React.FC<LoginWithPhoneProps> = ({
249
261
  {renderSubmitButton ? (
250
262
  renderSubmitButton({
251
263
  onPress: handleSubmit(handleFormSubmit),
252
- disabled: !isValid || loadingSubmitBtn || isLoading,
253
- loading: loadingSubmitBtn || isLoading,
264
+ disabled: !isValid || isDisabled,
265
+ loading: isDisabled,
254
266
  })
255
267
  ) : (
256
268
  <Button.Primary
257
269
  title={text.loginButton || DEFAULT_TEXT.loginButton}
258
- disabled={loadingSubmitBtn || !isValid || isLoading}
270
+ disabled={!isValid || isDisabled}
259
271
  theme={overrideTheme}
260
272
  onPress={handleSubmit(handleFormSubmit)}
261
273
  loadingText={
262
274
  text.loadingSubmitBtnText ||
263
275
  DEFAULT_TEXT.loadingSubmitBtnText
264
276
  }
265
- loading={loadingSubmitBtn || isLoading}
277
+ loading={isDisabled}
266
278
  />
267
279
  )}
268
280
  </View>
@@ -275,15 +275,31 @@ const OTP: React.FC<OTPProps> = ({
275
275
  }
276
276
  }, [onResendOtp, resendDisabledTime]);
277
277
 
278
- const isLoading = loading || isSubmitting;
279
- const isSubmitDisabled = otp.length !== otpDigitCount || isLoading;
280
- const shouldRender = (condition?: boolean | unknown): boolean =>
281
- typeof condition === 'function' || !!condition;
278
+ const isLoading = useMemo(
279
+ () => loading || isSubmitting,
280
+ [loading, isSubmitting]
281
+ );
282
+ const isSubmitDisabled = useMemo(
283
+ () => otp.length !== otpDigitCount || isLoading,
284
+ [otp.length, otpDigitCount, isLoading]
285
+ );
286
+ const shouldRender = useMemo(
287
+ () =>
288
+ (condition?: boolean | unknown): boolean =>
289
+ typeof condition === 'function' || !!condition,
290
+ []
291
+ );
292
+
293
+ // Memoize gradient split background
294
+ const gradientSplitBackground = useMemo(
295
+ () => (isKeyboardOpen ? 0.3 : 0.4),
296
+ [isKeyboardOpen]
297
+ );
282
298
  return (
283
299
  <BackgroundLayout
284
300
  theme={overrideTheme}
285
301
  backgroundImage={backgroundImage?.source}
286
- gradientSplitBackground={isKeyboardOpen ? 0.3 : 0.4}
302
+ gradientSplitBackground={gradientSplitBackground}
287
303
  >
288
304
  <View style={[styles.container, containerStyle]}>
289
305
  {/* Top Back Button */}