@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
@@ -42,6 +42,182 @@ export type Plan = {
42
42
  };
43
43
  };
44
44
 
45
+ // Memoized Plan Details Modal Component
46
+ const PlanDetailsModalContent = memo<{
47
+ plan: Plan;
48
+ colors: {
49
+ surface: string;
50
+ background: string;
51
+ textPrimary: string;
52
+ textSecondary: string;
53
+ primary: string;
54
+ };
55
+ onClose: () => void;
56
+ }>(({ plan, colors, onClose }) => {
57
+ const modalContentStyle = useMemo(
58
+ () => [styles.modalContent, { backgroundColor: colors.surface }],
59
+ [colors.surface]
60
+ );
61
+
62
+ const modalTitleStyle = useMemo(
63
+ () => [styles.modalTitle, { color: colors.textPrimary }],
64
+ [colors.textPrimary]
65
+ );
66
+
67
+ const modalCloseButtonStyle = useMemo(
68
+ () => [styles.modalCloseButton, { backgroundColor: colors.background }],
69
+ [colors.background]
70
+ );
71
+
72
+ const priceHighlightBoxStyle = useMemo(
73
+ () => [styles.priceHighlightBox, { backgroundColor: colors.background }],
74
+ [colors.background]
75
+ );
76
+
77
+ const platformBadgeStyle = useMemo(
78
+ () => [
79
+ styles.platformBadge,
80
+ {
81
+ backgroundColor: colors.surface,
82
+ borderColor: colors.primary,
83
+ },
84
+ ],
85
+ [colors.surface, colors.primary]
86
+ );
87
+
88
+ const modalPriceLabelStyle = useMemo(
89
+ () => [styles.modalPriceLabel, { color: colors.textSecondary }],
90
+ [colors.textSecondary]
91
+ );
92
+
93
+ const modalPriceValueStyle = useMemo(
94
+ () => [styles.modalPriceValue, { color: colors.primary }],
95
+ [colors.primary]
96
+ );
97
+
98
+ const modalPriceDurationStyle = useMemo(
99
+ () => [styles.modalPriceDuration, { color: colors.textSecondary }],
100
+ [colors.textSecondary]
101
+ );
102
+
103
+ const modalSectionTitleStyle = useMemo(
104
+ () => [styles.modalSectionTitle, { color: colors.textPrimary }],
105
+ [colors.textPrimary]
106
+ );
107
+
108
+ const platformBadgeTextStyle = useMemo(
109
+ () => [styles.platformBadgeText, { color: colors.textPrimary }],
110
+ [colors.textPrimary]
111
+ );
112
+
113
+ const benefitBulletStyle = useMemo(
114
+ () => [styles.benefitBullet, { color: colors.primary }],
115
+ [colors.primary]
116
+ );
117
+
118
+ const benefitTextStyle = useMemo(
119
+ () => [styles.benefitText, { color: colors.textSecondary }],
120
+ [colors.textSecondary]
121
+ );
122
+
123
+ const modalSectionValueStyle = useMemo(
124
+ () => [styles.modalSectionValue, { color: colors.textSecondary }],
125
+ [colors.textSecondary]
126
+ );
127
+
128
+ return (
129
+ <View style={modalContentStyle}>
130
+ <View style={styles.modalHeader}>
131
+ <Text style={modalTitleStyle}>{plan.title || 'Plan Details'}</Text>
132
+ <TouchableOpacity
133
+ onPress={onClose}
134
+ style={modalCloseButtonStyle}
135
+ activeOpacity={0.7}
136
+ >
137
+ <X size={scale(20)} color={colors.textPrimary} />
138
+ </TouchableOpacity>
139
+ </View>
140
+
141
+ <ScrollView
142
+ style={styles.modalScrollView}
143
+ contentContainerStyle={styles.modalScrollContent}
144
+ showsVerticalScrollIndicator={false}
145
+ bounces={false}
146
+ scrollEventThrottle={16}
147
+ keyboardShouldPersistTaps="handled"
148
+ removeClippedSubviews={false}
149
+ nestedScrollEnabled={true}
150
+ >
151
+ <View style={[styles.modalSection, styles.modalFirstSection]}>
152
+ <View style={priceHighlightBoxStyle}>
153
+ <Text style={modalPriceLabelStyle}>PRICING</Text>
154
+ <Text style={modalPriceValueStyle}>{plan.price}</Text>
155
+ <Text style={modalPriceDurationStyle}>per {plan.duration}</Text>
156
+ </View>
157
+ </View>
158
+
159
+ <View style={styles.modalSection}>
160
+ <Text style={modalSectionTitleStyle}>Available On</Text>
161
+ <View style={platformBadgeStyle}>
162
+ <Text style={platformBadgeTextStyle}>{plan.platforms}</Text>
163
+ </View>
164
+ </View>
165
+
166
+ {plan.benefits && plan.benefits.length > 0 && (
167
+ <View style={styles.modalSection}>
168
+ <Text style={modalSectionTitleStyle}>Benefits</Text>
169
+ {plan.benefits.map((benefit, index) => (
170
+ <View
171
+ key={`benefit-${plan.id}-${index}`}
172
+ style={styles.benefitRow}
173
+ >
174
+ <Text style={benefitBulletStyle}>•</Text>
175
+ <Text style={benefitTextStyle}>{benefit}</Text>
176
+ </View>
177
+ ))}
178
+ </View>
179
+ )}
180
+
181
+ {plan.extraDetails?.description && (
182
+ <View style={styles.modalSection}>
183
+ <Text style={modalSectionTitleStyle}>Description</Text>
184
+ <Text style={modalSectionValueStyle}>
185
+ {plan.extraDetails.description}
186
+ </Text>
187
+ </View>
188
+ )}
189
+
190
+ {plan.extraDetails?.features &&
191
+ plan.extraDetails.features.length > 0 && (
192
+ <View style={styles.modalSection}>
193
+ <Text style={modalSectionTitleStyle}>Features</Text>
194
+ {plan.extraDetails.features.map((feature, index) => (
195
+ <View
196
+ key={`feature-${plan.id}-${index}`}
197
+ style={styles.benefitRow}
198
+ >
199
+ <Text style={benefitBulletStyle}>✓</Text>
200
+ <Text style={benefitTextStyle}>{feature}</Text>
201
+ </View>
202
+ ))}
203
+ </View>
204
+ )}
205
+
206
+ {plan.extraDetails?.terms && (
207
+ <View style={styles.modalSection}>
208
+ <Text style={modalSectionTitleStyle}>Terms & Conditions</Text>
209
+ <Text style={modalSectionValueStyle}>
210
+ {plan.extraDetails.terms}
211
+ </Text>
212
+ </View>
213
+ )}
214
+ </ScrollView>
215
+ </View>
216
+ );
217
+ });
218
+
219
+ PlanDetailsModalContent.displayName = 'PlanDetailsModalContent';
220
+
45
221
  type SubscriptionSliderOneProps = {
46
222
  theme?: ThemeOverride;
47
223
  headerTitleAlign?: 'center' | 'left';
@@ -66,6 +242,11 @@ type SubscriptionSliderOneProps = {
66
242
  };
67
243
  const CAROUSEL_WIDTH = Display.fullWidth;
68
244
  const CAROUSEL_HEIGHT = verticalScale(CAROUSEL_WIDTH / 1.4);
245
+
246
+ // Move parsePrice outside component to avoid recreation on every render
247
+ const parsePrice = (price: string) =>
248
+ parseFloat(price.replace(/[^\d.]/g, '')) || 0;
249
+
69
250
  const SubscriptionSliderOne = ({
70
251
  theme,
71
252
  onSubscribe,
@@ -83,8 +264,6 @@ const SubscriptionSliderOne = ({
83
264
  const colors = appliedTheme.colors;
84
265
  const [selectedPlan, setSelectedPlan] = useState<Plan | null>(null);
85
266
  const [isModalVisible, setIsModalVisible] = useState(false);
86
- const parsePrice = (price: string) =>
87
- parseFloat(price.replace(/[^\d.]/g, '')) || 0;
88
267
  const sortedPlans = useMemo(() => {
89
268
  return [...plans].sort((a, b) => {
90
269
  const aPopular = a?.isPopular ? 1 : 0;
@@ -101,9 +280,80 @@ const SubscriptionSliderOne = ({
101
280
  return 0;
102
281
  });
103
282
  }, [plans]);
283
+
104
284
  const placeholderData = useMemo(
105
285
  () => new Array(plans.length || 3).fill({}),
106
- [plans]
286
+ [plans.length]
287
+ );
288
+
289
+ const shouldLoop = useMemo(
290
+ () => sortedPlans.length > 1,
291
+ [sortedPlans.length]
292
+ );
293
+
294
+ const carouselModeConfig = useMemo(
295
+ () => ({
296
+ parallaxScrollingOffset: Display.fullWidth * 0.21,
297
+ parallaxAdjacentItemScale: 0.8,
298
+ }),
299
+ []
300
+ );
301
+
302
+ const errorMessageStyle = useMemo(
303
+ () => ({ color: colors.error }),
304
+ [colors.error]
305
+ );
306
+
307
+ const containerStyle = useMemo(
308
+ () => [styles.container, { backgroundColor: colors.background }],
309
+ [colors.background]
310
+ );
311
+
312
+ const headingStyle = useMemo(() => [styles.heading], []);
313
+
314
+ const subTextStyle = useMemo(
315
+ () => [styles.subText, { color: colors.onSurfaceVariant }],
316
+ [colors.onSurfaceVariant]
317
+ );
318
+
319
+ const infoStyle = useMemo(
320
+ () => [styles.info, { color: colors.onSurfaceVariant }],
321
+ [colors.onSurfaceVariant]
322
+ );
323
+
324
+ const cancelTextStyle = useMemo(
325
+ () => [styles.cancelText, { color: colors.onSurfaceVariant }],
326
+ [colors.onSurfaceVariant]
327
+ );
328
+
329
+ const extraContentTextStyle = useMemo(
330
+ () => [styles.extraContentTextText, { color: colors.onSurfaceVariant }],
331
+ [colors.onSurfaceVariant]
332
+ );
333
+
334
+ const modalColors = useMemo(
335
+ () => ({
336
+ surface: colors.surface,
337
+ background: colors.background,
338
+ textPrimary: colors.textPrimary,
339
+ textSecondary: colors.textSecondary,
340
+ primary: colors.primary,
341
+ }),
342
+ [
343
+ colors.surface,
344
+ colors.background,
345
+ colors.textPrimary,
346
+ colors.textSecondary,
347
+ colors.primary,
348
+ ]
349
+ );
350
+
351
+ const skeletonColors = useMemo(
352
+ () => ({
353
+ backgroundColor: colors.skeletonBaseColor,
354
+ highlightColor: colors.skeletonHighlightColor,
355
+ }),
356
+ [colors.skeletonBaseColor, colors.skeletonHighlightColor]
107
357
  );
108
358
 
109
359
  const renderSkeleton = useCallback(
@@ -115,14 +365,14 @@ const SubscriptionSliderOne = ({
115
365
  >
116
366
  <SkeletonPlaceholder
117
367
  borderRadius={20}
118
- backgroundColor={colors.skeletonBaseColor}
119
- highlightColor={colors.skeletonHighlightColor}
368
+ backgroundColor={skeletonColors.backgroundColor}
369
+ highlightColor={skeletonColors.highlightColor}
120
370
  >
121
371
  <View style={styles.card} />
122
372
  </SkeletonPlaceholder>
123
373
  </Animated.View>
124
374
  ),
125
- [colors.skeletonBaseColor, colors.skeletonHighlightColor]
375
+ [skeletonColors]
126
376
  );
127
377
 
128
378
  const openDetailsModal = useCallback((plan: Plan) => {
@@ -132,104 +382,145 @@ const SubscriptionSliderOne = ({
132
382
 
133
383
  const closeDetailsModal = useCallback(() => {
134
384
  setIsModalVisible(false);
135
- setSelectedPlan(null);
385
+ // Delay clearing selectedPlan to prevent flicker during close animation
386
+ setTimeout(() => {
387
+ setSelectedPlan(null);
388
+ }, 300);
136
389
  }, []);
137
390
 
391
+ const gradientConfig = useMemo(
392
+ () => ({
393
+ colors: colors.cardGradient,
394
+ start: { x: 1, y: 0 },
395
+ end: { x: 0, y: 1.2 },
396
+ locations: [0, 0.7, 1] as number[],
397
+ }),
398
+ [colors.cardGradient]
399
+ );
400
+
401
+ const cardStyle = useMemo(
402
+ () => [styles.card, { shadowColor: colors.primary }],
403
+ [colors.primary]
404
+ );
405
+
406
+ const handleSubscribe = useCallback(
407
+ (item: Plan) => {
408
+ onSubscribe?.(item);
409
+ },
410
+ [onSubscribe]
411
+ );
412
+
138
413
  const renderPlan = useCallback(
139
- ({ item }: { item: Plan }) => (
140
- <View style={styles.cardContainer}>
141
- <LinearGradient
142
- colors={colors.cardGradient}
143
- start={{ x: 1, y: 0 }}
144
- end={{ x: 0, y: 1.2 }}
145
- locations={[0, 0.7, 1]}
146
- style={[styles.card, { shadowColor: colors.primary }]}
147
- >
148
- {item?.isPopular && (
149
- <View
150
- style={[styles.popularBadge, { backgroundColor: colors.button }]}
151
- >
152
- <Text style={[styles.popularText, { color: colors.buttonText }]}>
153
- POPULAR
154
- </Text>
155
- </View>
156
- )}
414
+ ({ item }: { item: Plan }) => {
415
+ const isPopular = item?.isPopular;
416
+ const hasBenefits = !!item.benefits?.length;
417
+ const benefitsCount = item.benefits?.length || 0;
418
+ const showViewDetails = hasBenefits || !!item.extraDetails;
419
+ const isSubscribing = subscribeLoadingId === item.id;
420
+ const viewDetailsText =
421
+ hasBenefits && benefitsCount > 4 ? 'View More Details' : 'View Details';
157
422
 
158
- <Text
159
- numberOfLines={1}
160
- style={[styles.cardTitle, { color: colors.white }]}
423
+ return (
424
+ <View style={styles.cardContainer}>
425
+ <LinearGradient
426
+ colors={gradientConfig.colors}
427
+ start={gradientConfig.start}
428
+ end={gradientConfig.end}
429
+ locations={gradientConfig.locations}
430
+ style={cardStyle}
161
431
  >
162
- {item.title}
163
- </Text>
164
- <Text style={[styles.price, { color: colors.white }]}>
165
- {item.price}
166
- </Text>
167
- <Text style={[styles.per, { color: colors.white }]}>
168
- {item.duration}
169
- </Text>
170
- <Text style={[styles.platforms, { color: colors.white }]}>
171
- {item.platforms}
172
- </Text>
173
- {!!item.benefits?.length && (
174
- <View style={styles.benefitsContainer}>
175
- {item.benefits.slice(0, 4).map((benefit, i) => (
432
+ {isPopular && (
433
+ <View
434
+ style={[
435
+ styles.popularBadge,
436
+ { backgroundColor: colors.button },
437
+ ]}
438
+ >
176
439
  <Text
177
- key={i}
178
- numberOfLines={1}
179
- style={[styles.benefit, { color: colors.white }]}
440
+ style={[styles.popularText, { color: colors.buttonText }]}
180
441
  >
181
- • {benefit}
442
+ POPULAR
182
443
  </Text>
183
- ))}
184
- </View>
185
- )}
186
- {(item.benefits?.length || item.extraDetails) && (
187
- <TouchableOpacity
188
- style={styles.viewDetailsButton}
189
- onPress={() => openDetailsModal(item)}
190
- activeOpacity={0.7}
444
+ </View>
445
+ )}
446
+
447
+ <Text
448
+ numberOfLines={1}
449
+ style={[styles.cardTitle, { color: colors.white }]}
191
450
  >
192
- <Text style={[styles.viewDetailsText, { color: colors.white }]}>
193
- {item.benefits && item.benefits.length > 4
194
- ? 'View More Details'
195
- : 'View Details'}
196
- </Text>
197
- </TouchableOpacity>
198
- )}
199
- <TouchableOpacity
200
- style={[styles.subscribeButton, { backgroundColor: colors.button }]}
201
- onPress={() => onSubscribe?.(item)}
202
- activeOpacity={0.8}
203
- disabled={subscribeLoadingId === item.id}
204
- >
205
- {subscribeLoadingId === item.id ? (
206
- <ActivityIndicator size="small" color={colors.buttonText} />
207
- ) : (
208
- <Text
209
- style={[styles.subscribeText, { color: colors.buttonText }]}
451
+ {item.title}
452
+ </Text>
453
+ <Text style={[styles.price, { color: colors.white }]}>
454
+ {item.price}
455
+ </Text>
456
+ <Text style={[styles.per, { color: colors.white }]}>
457
+ {item.duration}
458
+ </Text>
459
+ <Text style={[styles.platforms, { color: colors.white }]}>
460
+ {item.platforms}
461
+ </Text>
462
+ {hasBenefits && item.benefits && (
463
+ <View style={styles.benefitsContainer}>
464
+ {item.benefits.slice(0, 4).map((benefit, i) => (
465
+ <Text
466
+ key={`${item.id}-benefit-${i}`}
467
+ numberOfLines={1}
468
+ style={[styles.benefit, { color: colors.white }]}
469
+ >
470
+ • {benefit}
471
+ </Text>
472
+ ))}
473
+ </View>
474
+ )}
475
+ {showViewDetails && (
476
+ <TouchableOpacity
477
+ style={styles.viewDetailsButton}
478
+ onPress={() => openDetailsModal(item)}
479
+ activeOpacity={0.7}
210
480
  >
211
- {subscribeButtonText}
212
- </Text>
481
+ <Text style={[styles.viewDetailsText, { color: colors.white }]}>
482
+ {viewDetailsText}
483
+ </Text>
484
+ </TouchableOpacity>
213
485
  )}
214
- </TouchableOpacity>
215
- </LinearGradient>
216
- </View>
217
- ),
486
+ <TouchableOpacity
487
+ style={[
488
+ styles.subscribeButton,
489
+ { backgroundColor: colors.button },
490
+ ]}
491
+ onPress={() => handleSubscribe(item)}
492
+ activeOpacity={0.8}
493
+ disabled={isSubscribing}
494
+ >
495
+ {isSubscribing ? (
496
+ <ActivityIndicator size="small" color={colors.buttonText} />
497
+ ) : (
498
+ <Text
499
+ style={[styles.subscribeText, { color: colors.buttonText }]}
500
+ >
501
+ {subscribeButtonText}
502
+ </Text>
503
+ )}
504
+ </TouchableOpacity>
505
+ </LinearGradient>
506
+ </View>
507
+ );
508
+ },
218
509
  [
510
+ gradientConfig,
511
+ cardStyle,
219
512
  colors.button,
220
513
  colors.buttonText,
221
- colors.cardGradient,
222
- colors.primary,
223
514
  colors.white,
224
- onSubscribe,
225
515
  subscribeButtonText,
226
516
  subscribeLoadingId,
227
517
  openDetailsModal,
518
+ handleSubscribe,
228
519
  ]
229
520
  );
230
521
 
231
522
  return (
232
- <View style={[styles.container, { backgroundColor: colors.background }]}>
523
+ <View style={containerStyle}>
233
524
  <AppHeader
234
525
  title={header.topTitle}
235
526
  onBackPress={onBackPress}
@@ -237,16 +528,14 @@ const SubscriptionSliderOne = ({
237
528
  theme={theme}
238
529
  />
239
530
  <View style={styles.content}>
240
- <Text style={[styles.heading]} color={colors.textPrimary}>
531
+ <Text style={headingStyle} color={colors.textPrimary}>
241
532
  {header.title}
242
533
  </Text>
243
- <Text style={[styles.subText, { color: colors.onSurfaceVariant }]}>
244
- {header.subTitle}
245
- </Text>
534
+ <Text style={subTextStyle}>{header.subTitle}</Text>
246
535
 
247
536
  {!plans || (plans.length === 0 && !isLoading && errorMessage) ? (
248
537
  <View style={styles.errorMessage}>
249
- <Text style={{ color: colors.error }}>{errorMessage}</Text>
538
+ <Text style={errorMessageStyle}>{errorMessage}</Text>
250
539
  </View>
251
540
  ) : (
252
541
  <Carousel
@@ -254,39 +543,23 @@ const SubscriptionSliderOne = ({
254
543
  height={CAROUSEL_HEIGHT}
255
544
  data={isLoading ? placeholderData : sortedPlans}
256
545
  renderItem={isLoading ? renderSkeleton : renderPlan}
257
- loop={
258
- ((isLoading ? sortedPlans.length : sortedPlans.length) || 0) > 1
259
- }
546
+ loop={shouldLoop}
260
547
  autoPlay={false}
261
548
  scrollAnimationDuration={500}
262
549
  mode="parallax"
263
- modeConfig={{
264
- parallaxScrollingOffset: Display.fullWidth * 0.21,
265
- parallaxAdjacentItemScale: 0.8,
266
- }}
550
+ modeConfig={carouselModeConfig}
267
551
  />
268
552
  )}
269
553
 
270
- <Text style={[styles.info, { color: colors.onSurfaceVariant }]}>
271
- {footer.title}
272
- </Text>
273
- <Text style={[styles.cancelText, { color: colors.onSurfaceVariant }]}>
274
- {footer.subTitle}
275
- </Text>
554
+ <Text style={infoStyle}>{footer.title}</Text>
555
+ <Text style={cancelTextStyle}>{footer.subTitle}</Text>
276
556
 
277
557
  {extraContentText && (
278
558
  <View style={styles.extraContentTextWrapper}>
279
559
  {React.isValidElement(extraContentText) ? (
280
560
  extraContentText
281
561
  ) : (
282
- <Text
283
- style={[
284
- styles.extraContentTextText,
285
- { color: colors.onSurfaceVariant },
286
- ]}
287
- >
288
- {extraContentText}
289
- </Text>
562
+ <Text style={extraContentTextStyle}>{extraContentText}</Text>
290
563
  )}
291
564
  </View>
292
565
  )}
@@ -298,219 +571,23 @@ const SubscriptionSliderOne = ({
298
571
  onBackButtonPress={closeDetailsModal}
299
572
  backdropOpacity={0.35}
300
573
  useNativeDriver={true}
574
+ useNativeDriverForBackdrop={true}
301
575
  onSwipeComplete={closeDetailsModal}
302
576
  propagateSwipe
303
577
  style={styles.modal}
578
+ hideModalContentWhileAnimating={true}
579
+ animationIn="slideInUp"
580
+ animationOut="slideOutDown"
581
+ animationInTiming={300}
582
+ animationOutTiming={300}
304
583
  >
305
- <View
306
- style={[styles.modalContent, { backgroundColor: colors.surface }]}
307
- >
308
- <View style={styles.modalHeader}>
309
- <Text style={[styles.modalTitle, { color: colors.textPrimary }]}>
310
- {selectedPlan?.title || 'Plan Details'}
311
- </Text>
312
- <TouchableOpacity
313
- onPress={closeDetailsModal}
314
- style={[
315
- styles.modalCloseButton,
316
- { backgroundColor: colors.background },
317
- ]}
318
- activeOpacity={0.7}
319
- >
320
- <X size={scale(20)} color={colors.textPrimary} />
321
- </TouchableOpacity>
322
- </View>
323
-
324
- <ScrollView
325
- style={styles.modalScrollView}
326
- contentContainerStyle={styles.modalScrollContent}
327
- showsVerticalScrollIndicator={false}
328
- bounces={false}
329
- scrollEventThrottle={16}
330
- keyboardShouldPersistTaps="handled"
331
- removeClippedSubviews={false}
332
- nestedScrollEnabled={true}
333
- >
334
- {selectedPlan && (
335
- <>
336
- <View style={[styles.modalSection, styles.modalFirstSection]}>
337
- <View
338
- style={[
339
- styles.priceHighlightBox,
340
- { backgroundColor: colors.background },
341
- ]}
342
- >
343
- <Text
344
- style={[
345
- styles.modalPriceLabel,
346
- { color: colors.textSecondary },
347
- ]}
348
- >
349
- PRICING
350
- </Text>
351
- <Text
352
- style={[
353
- styles.modalPriceValue,
354
- { color: colors.primary },
355
- ]}
356
- >
357
- {selectedPlan.price}
358
- </Text>
359
- <Text
360
- style={[
361
- styles.modalPriceDuration,
362
- { color: colors.textSecondary },
363
- ]}
364
- >
365
- per {selectedPlan.duration}
366
- </Text>
367
- </View>
368
- </View>
369
-
370
- <View style={[styles.modalSection]}>
371
- <Text
372
- style={[
373
- styles.modalSectionTitle,
374
- { color: colors.textPrimary },
375
- ]}
376
- >
377
- Available On
378
- </Text>
379
- <View
380
- style={[
381
- styles.platformBadge,
382
- {
383
- backgroundColor: colors.surface,
384
- borderColor: colors.primary,
385
- },
386
- ]}
387
- >
388
- <Text
389
- style={[
390
- styles.platformBadgeText,
391
- { color: colors.textPrimary },
392
- ]}
393
- >
394
- {selectedPlan.platforms}
395
- </Text>
396
- </View>
397
- </View>
398
-
399
- {selectedPlan.benefits &&
400
- selectedPlan.benefits.length > 0 && (
401
- <View style={styles.modalSection}>
402
- <Text
403
- style={[
404
- styles.modalSectionTitle,
405
- { color: colors.textPrimary },
406
- ]}
407
- >
408
- Benefits
409
- </Text>
410
- {selectedPlan.benefits.map((benefit, index) => (
411
- <View key={index} style={styles.benefitRow}>
412
- <Text
413
- style={[
414
- styles.benefitBullet,
415
- { color: colors.primary },
416
- ]}
417
- >
418
-
419
- </Text>
420
- <Text
421
- style={[
422
- styles.benefitText,
423
- { color: colors.textSecondary },
424
- ]}
425
- >
426
- {benefit}
427
- </Text>
428
- </View>
429
- ))}
430
- </View>
431
- )}
432
-
433
- {selectedPlan.extraDetails?.description && (
434
- <View style={styles.modalSection}>
435
- <Text
436
- style={[
437
- styles.modalSectionTitle,
438
- { color: colors.textPrimary },
439
- ]}
440
- >
441
- Description
442
- </Text>
443
- <Text
444
- style={[
445
- styles.modalSectionValue,
446
- { color: colors.textSecondary },
447
- ]}
448
- >
449
- {selectedPlan.extraDetails.description}
450
- </Text>
451
- </View>
452
- )}
453
-
454
- {selectedPlan.extraDetails?.features &&
455
- selectedPlan.extraDetails.features.length > 0 && (
456
- <View style={styles.modalSection}>
457
- <Text
458
- style={[
459
- styles.modalSectionTitle,
460
- { color: colors.textPrimary },
461
- ]}
462
- >
463
- Features
464
- </Text>
465
- {selectedPlan.extraDetails.features.map(
466
- (feature, index) => (
467
- <View key={index} style={styles.benefitRow}>
468
- <Text
469
- style={[
470
- styles.benefitBullet,
471
- { color: colors.primary },
472
- ]}
473
- >
474
-
475
- </Text>
476
- <Text
477
- style={[
478
- styles.benefitText,
479
- { color: colors.textSecondary },
480
- ]}
481
- >
482
- {feature}
483
- </Text>
484
- </View>
485
- )
486
- )}
487
- </View>
488
- )}
489
-
490
- {selectedPlan.extraDetails?.terms && (
491
- <View style={styles.modalSection}>
492
- <Text
493
- style={[
494
- styles.modalSectionTitle,
495
- { color: colors.textPrimary },
496
- ]}
497
- >
498
- Terms & Conditions
499
- </Text>
500
- <Text
501
- style={[
502
- styles.modalSectionValue,
503
- { color: colors.textSecondary },
504
- ]}
505
- >
506
- {selectedPlan.extraDetails.terms}
507
- </Text>
508
- </View>
509
- )}
510
- </>
511
- )}
512
- </ScrollView>
513
- </View>
584
+ {selectedPlan && (
585
+ <PlanDetailsModalContent
586
+ plan={selectedPlan}
587
+ colors={modalColors}
588
+ onClose={closeDetailsModal}
589
+ />
590
+ )}
514
591
  </Modal>
515
592
  </View>
516
593
  </View>