@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
@@ -3,7 +3,8 @@
3
3
  * @lastModified Mon 06 Oct 2025 at 03:45 PM
4
4
  */
5
5
 
6
- import React from 'react';
6
+ import React, { useMemo } from 'react';
7
+ import { useSafePressHandler } from '../../hooks/useSafeCallback';
7
8
  import {
8
9
  TouchableOpacity,
9
10
  ActivityIndicator,
@@ -44,17 +45,46 @@ export const SecondaryBtn: React.FC<SecondaryBtnProps> = ({
44
45
  }) => {
45
46
  const { theme: appliedTheme } = useInternalTheme(theme);
46
47
 
47
- const backgroundColor =
48
- disabled || loading
49
- ? appliedTheme.colors?.buttonDisabled
50
- : appliedTheme.colors?.button;
48
+ const backgroundColor = useMemo(
49
+ () =>
50
+ disabled || loading
51
+ ? appliedTheme.colors?.buttonDisabled
52
+ : appliedTheme.colors?.button,
53
+ [
54
+ disabled,
55
+ loading,
56
+ appliedTheme.colors?.buttonDisabled,
57
+ appliedTheme.colors?.button,
58
+ ]
59
+ );
60
+
61
+ const buttonStyle = useMemo(
62
+ () => [styles.button, { backgroundColor }, containerStyle],
63
+ [backgroundColor, containerStyle]
64
+ );
65
+
66
+ const textStyle = useMemo(
67
+ () => [styles.text, { color: appliedTheme.colors.buttonText }, titleStyle],
68
+ [appliedTheme.colors.buttonText, titleStyle]
69
+ );
70
+
71
+ const loadingTextStyle = useMemo(
72
+ () => [
73
+ styles.text,
74
+ { color: appliedTheme.colors.buttonText, opacity: 0.75 },
75
+ titleStyle,
76
+ ],
77
+ [appliedTheme.colors.buttonText, titleStyle]
78
+ );
79
+
80
+ const handlePress = useSafePressHandler(onPress, disabled || loading);
51
81
 
52
82
  return (
53
83
  <TouchableOpacity
54
- onPress={onPress}
84
+ onPress={handlePress}
55
85
  disabled={disabled || loading}
56
86
  activeOpacity={0.8}
57
- style={[styles.button, { backgroundColor }, containerStyle]}
87
+ style={buttonStyle}
58
88
  accessibilityRole="button"
59
89
  accessibilityState={{ disabled: disabled || loading }}
60
90
  >
@@ -67,32 +97,18 @@ export const SecondaryBtn: React.FC<SecondaryBtnProps> = ({
67
97
  color={appliedTheme.colors.buttonText}
68
98
  style={{ marginRight: scale(6) }}
69
99
  />
70
- <Text
71
- style={[
72
- styles.text,
73
- { color: appliedTheme.colors.buttonText, opacity: 0.75 },
74
- titleStyle,
75
- ]}
76
- >
77
- {loadingText}
78
- </Text>
100
+ <Text style={loadingTextStyle}>{loadingText}</Text>
79
101
  </>
80
102
  ) : (
81
- <Text
82
- style={[
83
- styles.text,
84
- { color: appliedTheme.colors.buttonText },
85
- titleStyle,
86
- ]}
87
- >
88
- {title}
89
- </Text>
103
+ <Text style={textStyle}>{title}</Text>
90
104
  )}
91
105
  </View>
92
106
  </TouchableOpacity>
93
107
  );
94
108
  };
95
109
 
110
+ export default React.memo(SecondaryBtn);
111
+
96
112
  const styles = StyleSheet.create({
97
113
  button: {
98
114
  width: '100%',
@@ -1,4 +1,5 @@
1
- import React from 'react';
1
+ import React, { useMemo } from 'react';
2
+ import { useSafePressHandler } from '../../hooks/useSafeCallback';
2
3
  import {
3
4
  StyleSheet,
4
5
  Pressable,
@@ -39,25 +40,58 @@ const TextButton: React.FC<TextButtonProps> = ({
39
40
  }) => {
40
41
  const { theme } = useInternalTheme();
41
42
 
42
- const alignSelfMap: Record<
43
- 'left' | 'center' | 'right',
44
- ViewStyle['alignSelf']
45
- > = {
46
- left: 'flex-start',
47
- center: 'center',
48
- right: 'flex-end',
49
- };
50
- const alignSelf = alignSelfMap[align];
43
+ const alignSelfMap = useMemo<
44
+ Record<'left' | 'center' | 'right', ViewStyle['alignSelf']>
45
+ >(
46
+ () => ({
47
+ left: 'flex-start',
48
+ center: 'center',
49
+ right: 'flex-end',
50
+ }),
51
+ []
52
+ );
53
+
54
+ const alignSelf = useMemo(() => alignSelfMap[align], [alignSelfMap, align]);
55
+
56
+ const textStyle = useMemo<TextStyle>(
57
+ () => ({
58
+ textAlign: align,
59
+ textDecorationLine: underline ? 'underline' : 'none',
60
+ fontWeight: bold ? '700' : '400',
61
+ }),
62
+ [align, underline, bold]
63
+ );
64
+
65
+ const textColor = useMemo(
66
+ () => color || theme.colors.textPrimary,
67
+ [color, theme.colors.textPrimary]
68
+ );
69
+
70
+ const justifyContent = useMemo<ViewStyle['justifyContent']>(
71
+ () =>
72
+ align === 'left'
73
+ ? 'flex-start'
74
+ : align === 'right'
75
+ ? 'flex-end'
76
+ : 'center',
77
+ [align]
78
+ );
79
+
80
+ const rowStyle = useMemo<ViewStyle[]>(
81
+ () => [styles.row, { justifyContent }],
82
+ [justifyContent]
83
+ );
84
+
85
+ const finalTextStyle = useMemo(
86
+ () => [styles.text, textStyle, style],
87
+ [textStyle, style]
88
+ );
51
89
 
52
- const textStyle: TextStyle = {
53
- textAlign: align,
54
- textDecorationLine: underline ? 'underline' : 'none',
55
- fontWeight: bold ? '700' : '400',
56
- };
90
+ const handlePress = useSafePressHandler(onPress, disabled);
57
91
 
58
92
  return (
59
93
  <Pressable
60
- onPress={onPress}
94
+ onPress={handlePress}
61
95
  disabled={disabled}
62
96
  accessibilityRole="button"
63
97
  accessibilityState={{ disabled }}
@@ -69,23 +103,11 @@ const TextButton: React.FC<TextButtonProps> = ({
69
103
  disabled && styles.disabled,
70
104
  ]}
71
105
  >
72
- <View
73
- style={[
74
- styles.row,
75
- {
76
- justifyContent:
77
- align === 'left'
78
- ? 'flex-start'
79
- : align === 'right'
80
- ? 'flex-end'
81
- : 'center',
82
- },
83
- ]}
84
- >
106
+ <View style={rowStyle}>
85
107
  {leftIcon && <View style={styles.iconSpacing}>{leftIcon}</View>}
86
108
  <Text
87
- color={color || theme.colors.textPrimary}
88
- style={[styles.text, textStyle, style]}
109
+ color={textColor}
110
+ style={finalTextStyle}
89
111
  size={12}
90
112
  numberOfLines={1}
91
113
  allowFontScaling={false}
@@ -97,7 +119,7 @@ const TextButton: React.FC<TextButtonProps> = ({
97
119
  );
98
120
  };
99
121
 
100
- export default TextButton;
122
+ export default React.memo(TextButton);
101
123
 
102
124
  const styles = StyleSheet.create({
103
125
  defaultContainer: {
@@ -9,7 +9,6 @@ import React, {
9
9
  useCallback,
10
10
  useMemo,
11
11
  useState,
12
- useEffect,
13
12
  } from 'react';
14
13
  import {
15
14
  View,
@@ -51,13 +50,8 @@ const ITEM_WIDTH = scale(80);
51
50
  const CONTAINER_PADDING = scale(14);
52
51
  const { width: SCREEN_WIDTH } = Dimensions.get('window');
53
52
 
54
- function usePrevious<T>(value: T): T | undefined {
55
- const ref = useRef<T>(undefined);
56
- useEffect(() => {
57
- ref.current = value;
58
- }, [value]);
59
- return ref.current;
60
- }
53
+ import { usePrevious } from '../../../../hooks/usePrevious';
54
+ import { useSkeletonItems } from '../../../../hooks/useSkeletonItems';
61
55
 
62
56
  const CategoryCard = React.memo(
63
57
  ({
@@ -72,6 +66,19 @@ const CategoryCard = React.memo(
72
66
  const flatListRef = useRef<FlatList<ICategory>>(null);
73
67
  const [itemWidths, setItemWidths] = useState<number[]>([]);
74
68
 
69
+ // Memoize theme colors
70
+ const themeColors = useMemo(
71
+ () => ({
72
+ primary: appliedTheme.colors.primary,
73
+ outline: appliedTheme.colors.outline,
74
+ buttonText: appliedTheme.colors.buttonText,
75
+ textPrimary: appliedTheme.colors.textPrimary,
76
+ skeletonBaseColor: appliedTheme.colors.skeletonBaseColor,
77
+ skeletonHighlightColor: appliedTheme.colors.skeletonHighlightColor,
78
+ }),
79
+ [appliedTheme.colors]
80
+ );
81
+
75
82
  const selectedCategory = useMemo(
76
83
  () => activeCategory || category?.[0] || null,
77
84
  [activeCategory, category]
@@ -79,6 +86,26 @@ const CategoryCard = React.memo(
79
86
 
80
87
  const prevCategoryId = usePrevious(selectedCategory?._id);
81
88
 
89
+ // Memoize skeleton items
90
+ const skeletonItems = useSkeletonItems(5);
91
+
92
+ // Memoize skeleton item style
93
+ const skeletonItemStyle = useMemo(
94
+ () => ({
95
+ width: ITEM_WIDTH - scale(20),
96
+ height: verticalScale(26),
97
+ borderRadius: scale(8),
98
+ marginRight: scale(8),
99
+ }),
100
+ []
101
+ );
102
+
103
+ // Memoize list container style with flexDirection
104
+ const listContainerStyle = useMemo(
105
+ () => [styles.listContainer, { flexDirection: 'row' as const }],
106
+ []
107
+ );
108
+
82
109
  const scrollToCategory = useCallback(
83
110
  (index: number, animated: boolean) => {
84
111
  if (!flatListRef.current || index < 0 || index >= category.length)
@@ -141,6 +168,34 @@ const CategoryCard = React.memo(
141
168
  [category, onPressCategory, scrollToCategory]
142
169
  );
143
170
 
171
+ // Memoize filled mode selected style
172
+ const filledSelectedStyle = useMemo(
173
+ () => ({
174
+ borderRadius: scale(8),
175
+ borderWidth: scale(1),
176
+ borderColor: themeColors.primary,
177
+ backgroundColor: themeColors.primary,
178
+ }),
179
+ [themeColors.primary]
180
+ );
181
+
182
+ // Memoize filled mode unselected style
183
+ const filledUnselectedStyle = useMemo(
184
+ () => ({
185
+ borderRadius: scale(8),
186
+ borderWidth: scale(1),
187
+ borderColor: themeColors.outline,
188
+ backgroundColor: 'transparent',
189
+ }),
190
+ [themeColors.outline]
191
+ );
192
+
193
+ // Memoize underline style
194
+ const underlineStyle = useMemo(
195
+ () => [styles.underline, { backgroundColor: themeColors.primary }],
196
+ [themeColors.primary]
197
+ );
198
+
144
199
  const renderItem = useCallback(
145
200
  ({ item, index }: ListRenderItemInfo<ICategory>) => {
146
201
  const isSelected = item._id === selectedCategory?._id;
@@ -148,25 +203,19 @@ const CategoryCard = React.memo(
148
203
 
149
204
  const containerStyle = [
150
205
  styles.tabContainer,
151
- isFilledMode && {
152
- borderRadius: scale(8),
153
- borderWidth: scale(1),
154
- borderColor: isSelected
155
- ? appliedTheme.colors.primary
156
- : appliedTheme.colors.outline,
157
- backgroundColor: isSelected
158
- ? appliedTheme.colors.primary
159
- : 'transparent',
160
- },
206
+ isFilledMode &&
207
+ (isSelected ? filledSelectedStyle : filledUnselectedStyle),
161
208
  ];
162
209
 
163
210
  const textColor = isFilledMode
164
211
  ? isSelected
165
- ? appliedTheme.colors.buttonText
166
- : appliedTheme.colors.textPrimary
212
+ ? themeColors.buttonText
213
+ : themeColors.textPrimary
167
214
  : isSelected
168
- ? appliedTheme.colors.primary
169
- : appliedTheme.colors.textPrimary;
215
+ ? themeColors.primary
216
+ : themeColors.textPrimary;
217
+
218
+ const textStyle = [styles.tabText, { color: textColor }];
170
219
 
171
220
  return (
172
221
  <TouchableOpacity
@@ -176,52 +225,37 @@ const CategoryCard = React.memo(
176
225
  onLayout={(event) => onItemLayout(event, index)}
177
226
  accessibilityLabel={`Select category ${item.name}`}
178
227
  >
179
- <Text
180
- style={[
181
- styles.tabText,
182
- {
183
- color: textColor,
184
- },
185
- ]}
186
- >
187
- {item.name}
188
- </Text>
189
- {mode === 'text' && isSelected && (
190
- <View
191
- style={[
192
- styles.underline,
193
- { backgroundColor: appliedTheme.colors.primary },
194
- ]}
195
- />
196
- )}
228
+ <Text style={textStyle}>{item.name}</Text>
229
+ {mode === 'text' && isSelected && <View style={underlineStyle} />}
197
230
  </TouchableOpacity>
198
231
  );
199
232
  },
200
- [selectedCategory, mode, appliedTheme, handlePress, onItemLayout]
233
+ [
234
+ selectedCategory,
235
+ mode,
236
+ themeColors,
237
+ handlePress,
238
+ onItemLayout,
239
+ filledSelectedStyle,
240
+ filledUnselectedStyle,
241
+ underlineStyle,
242
+ ]
201
243
  );
202
244
 
203
245
  const renderSkeleton = useCallback(
204
246
  () => (
205
247
  <SkeletonPlaceholder
206
- backgroundColor={appliedTheme.colors.skeletonBaseColor}
207
- highlightColor={appliedTheme.colors.skeletonHighlightColor}
248
+ backgroundColor={themeColors.skeletonBaseColor}
249
+ highlightColor={themeColors.skeletonHighlightColor}
208
250
  >
209
- <View style={[styles.listContainer, { flexDirection: 'row' }]}>
210
- {[...Array(5)].map((_, index) => (
211
- <View
212
- key={index}
213
- style={{
214
- width: ITEM_WIDTH - scale(20),
215
- height: verticalScale(26),
216
- borderRadius: scale(8),
217
- marginRight: scale(8),
218
- }}
219
- />
251
+ <View style={listContainerStyle}>
252
+ {skeletonItems.map((_, index) => (
253
+ <View key={index} style={skeletonItemStyle} />
220
254
  ))}
221
255
  </View>
222
256
  </SkeletonPlaceholder>
223
257
  ),
224
- [appliedTheme]
258
+ [themeColors, listContainerStyle, skeletonItems, skeletonItemStyle]
225
259
  );
226
260
 
227
261
  const getItemLayout = useCallback(
@@ -235,6 +269,9 @@ const CategoryCard = React.memo(
235
269
  [itemWidths]
236
270
  );
237
271
 
272
+ // Memoize keyExtractor
273
+ const keyExtractor = useCallback((item: ICategory) => item._id, []);
274
+
238
275
  return (
239
276
  <View style={styles.container}>
240
277
  {isLoading ? (
@@ -243,7 +280,7 @@ const CategoryCard = React.memo(
243
280
  <FlatList
244
281
  ref={flatListRef}
245
282
  data={category}
246
- keyExtractor={(item) => item._id}
283
+ keyExtractor={keyExtractor}
247
284
  horizontal
248
285
  showsHorizontalScrollIndicator={false}
249
286
  contentContainerStyle={styles.listContainer}
@@ -256,6 +293,7 @@ const CategoryCard = React.memo(
256
293
  initialNumToRender={10}
257
294
  maxToRenderPerBatch={12}
258
295
  windowSize={5}
296
+ removeClippedSubviews
259
297
  />
260
298
  )}
261
299
  </View>
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import React, { memo, useCallback, useMemo, useState } from 'react';
7
+ import { useSkeletonItems } from '../../../../../hooks/useSkeletonItems';
7
8
  import {
8
9
  View,
9
10
  TouchableOpacity,
@@ -22,6 +23,7 @@ import type { ISectionContent } from '../../../../../types';
22
23
  import { useInternalTheme } from '../../../../../theme/hook/useInternalTheme';
23
24
  import { RFValue } from 'react-native-responsive-fontsize';
24
25
  import RentOrBuyIcon from '../../components/RentOrBuyIcon';
26
+ import { ThumbnailCard } from '../../components/ThumbnailCard';
25
27
  import type { ThemeOverride } from '../../../../../theme/themes';
26
28
  import type { IContentData } from '@zezosoft/zezo-ott-api-client';
27
29
 
@@ -48,19 +50,18 @@ type ImageTouchableProps = {
48
50
  onImagePress?: () => void;
49
51
  };
50
52
 
51
- const ImageTouchable: React.FC<ImageTouchableProps> = ({
52
- children,
53
- onImagePress,
54
- }) => (
55
- <TouchableOpacity
56
- activeOpacity={0.8}
57
- style={styles.imageWrapper}
58
- onPress={onImagePress}
59
- accessibilityRole="button"
60
- accessibilityLabel="View content"
61
- >
62
- {children}
63
- </TouchableOpacity>
53
+ const ImageTouchable = memo<ImageTouchableProps>(
54
+ ({ children, onImagePress }) => (
55
+ <TouchableOpacity
56
+ activeOpacity={0.8}
57
+ style={styles.imageWrapper}
58
+ onPress={onImagePress}
59
+ accessibilityRole="button"
60
+ accessibilityLabel="View content"
61
+ >
62
+ {children}
63
+ </TouchableOpacity>
64
+ )
64
65
  );
65
66
 
66
67
  // Main component
@@ -86,6 +87,27 @@ const SliderOne: React.FC<SliderOneProps> = ({
86
87
 
87
88
  const handleSnapToItem = useCallback((i: number) => setActiveIndex(i), []);
88
89
 
90
+ // Memoize skeleton items
91
+ const skeletonItems = useSkeletonItems(skeletonCount);
92
+
93
+ // Memoize indicator array
94
+ const indicatorArray = useMemo(
95
+ () => Array.from({ length: contentData.length }, (_, i) => i),
96
+ [contentData.length]
97
+ );
98
+
99
+ // Memoize play icon style
100
+ const playIconStyle = useMemo(
101
+ () => [styles.playIcon, { backgroundColor: appliedTheme.colors.button }],
102
+ [appliedTheme.colors.button]
103
+ );
104
+
105
+ // Memoize play text style
106
+ const playTextStyle = useMemo(
107
+ () => [styles.playText, { color: appliedTheme.colors.white }],
108
+ [appliedTheme.colors.white]
109
+ );
110
+
89
111
  // Render carousel item
90
112
  const renderCarouselItem = useCallback(
91
113
  ({ item }: { item: IContentData }) => (
@@ -95,15 +117,14 @@ const SliderOne: React.FC<SliderOneProps> = ({
95
117
  theme={appliedTheme}
96
118
  content_offering_type={item.content_offering_type}
97
119
  />
98
- <FastImage
99
- source={{
100
- uri: item.thumbnail,
101
- priority: FastImage.priority.normal,
102
- cache: FastImage.cacheControl.immutable,
103
- }}
104
- style={styles.sliderImage}
120
+ <ThumbnailCard
121
+ thumbnailUri={item.thumbnail}
122
+ theme={appliedTheme}
123
+ isLoading={false}
124
+ borderRadius={BORDER_RADIUS}
125
+ wrapperStyle={styles.imageWrapper}
126
+ imageStyle={styles.sliderImage}
105
127
  resizeMode={FastImage.resizeMode.cover}
106
- accessibilityLabel={`Image of ${item.name || 'content'}`}
107
128
  />
108
129
  {showPlayIcon && (
109
130
  <LinearGradient
@@ -113,10 +134,7 @@ const SliderOne: React.FC<SliderOneProps> = ({
113
134
  <View style={styles.playOverlay}>
114
135
  <TouchableOpacity
115
136
  onPress={() => onPressItem?.(item)}
116
- style={[
117
- styles.playIcon,
118
- { backgroundColor: appliedTheme.colors.button },
119
- ]}
137
+ style={playIconStyle}
120
138
  activeOpacity={0.8}
121
139
  accessibilityRole="button"
122
140
  accessibilityLabel="Play content"
@@ -128,10 +146,7 @@ const SliderOne: React.FC<SliderOneProps> = ({
128
146
  />
129
147
  </TouchableOpacity>
130
148
  <Text
131
- style={[
132
- styles.playText,
133
- { color: appliedTheme.colors.white },
134
- ]}
149
+ style={playTextStyle}
135
150
  numberOfLines={1}
136
151
  accessibilityLabel={item.name}
137
152
  >
@@ -143,7 +158,7 @@ const SliderOne: React.FC<SliderOneProps> = ({
143
158
  </ImageTouchable>
144
159
  </View>
145
160
  ),
146
- [appliedTheme, showPlayIcon, onPressItem]
161
+ [appliedTheme, showPlayIcon, onPressItem, playIconStyle, playTextStyle]
147
162
  );
148
163
 
149
164
  // Render skeleton item
@@ -209,16 +224,19 @@ const SliderOne: React.FC<SliderOneProps> = ({
209
224
  ]
210
225
  );
211
226
 
212
- // Common carousel props
213
- const carouselProps = {
214
- width: CAROUSEL_WIDTH,
215
- height: CAROUSEL_HEIGHT,
216
- autoPlay: !isLoading && contentData.length > 1,
217
- loop: true,
218
- scrollAnimationDuration: 1000,
219
- autoPlayInterval: 2500,
220
- style: styles.carousel,
221
- };
227
+ // Common carousel props - memoized
228
+ const carouselProps = useMemo(
229
+ () => ({
230
+ width: CAROUSEL_WIDTH,
231
+ height: CAROUSEL_HEIGHT,
232
+ autoPlay: !isLoading && contentData.length > 1,
233
+ loop: true,
234
+ scrollAnimationDuration: 1000,
235
+ autoPlayInterval: 2500,
236
+ style: styles.carousel,
237
+ }),
238
+ [isLoading, contentData.length]
239
+ );
222
240
  if (!data) {
223
241
  return null;
224
242
  }
@@ -231,7 +249,7 @@ const SliderOne: React.FC<SliderOneProps> = ({
231
249
  >
232
250
  <Carousel
233
251
  {...carouselProps}
234
- data={Array.from({ length: skeletonCount })}
252
+ data={skeletonItems}
235
253
  renderItem={renderSkeletonItem}
236
254
  mode="parallax"
237
255
  modeConfig={{
@@ -244,10 +262,9 @@ const SliderOne: React.FC<SliderOneProps> = ({
244
262
  />
245
263
  <View style={styles.indicatorContainer}>
246
264
  <View style={styles.indicator}>
247
- {Array.from(
248
- { length: isLoading ? skeletonCount : contentData.length },
249
- renderIndicator
250
- )}
265
+ {isLoading
266
+ ? skeletonItems.map((_, i) => renderIndicator(0, i))
267
+ : indicatorArray.map((i) => renderIndicator(0, i))}
251
268
  </View>
252
269
  </View>
253
270
  </View>
@@ -279,7 +296,7 @@ const SliderOne: React.FC<SliderOneProps> = ({
279
296
  {index === 0 && (
280
297
  <View style={styles.indicatorContainer}>
281
298
  <View style={styles.indicator}>
282
- {Array.from({ length: contentData.length }, renderIndicator)}
299
+ {indicatorArray.map((i) => renderIndicator(0, i))}
283
300
  </View>
284
301
  </View>
285
302
  )}
@@ -312,7 +329,6 @@ const styles = StyleSheet.create({
312
329
  width: '100%',
313
330
  aspectRatio: 16 / 9,
314
331
  borderRadius: BORDER_RADIUS,
315
- backgroundColor: '#444',
316
332
  },
317
333
  gradientOverlay: {
318
334
  ...StyleSheet.absoluteFillObject,