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

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 (667) hide show
  1. package/lib/module/components/Auth/AuthProvider/AuthProvider.js +5 -2
  2. package/lib/module/components/Auth/AuthProvider/AuthProvider.js.map +1 -1
  3. package/lib/module/components/Auth/One/ForgotPassword/ForgotPassword.js +232 -0
  4. package/lib/module/components/Auth/One/ForgotPassword/ForgotPassword.js.map +1 -0
  5. package/lib/module/components/Auth/One/Login/LoginWithEmail.js +324 -0
  6. package/lib/module/components/Auth/One/Login/LoginWithEmail.js.map +1 -0
  7. package/lib/module/components/Auth/{Login → One/Login}/LoginWithPhone.js +13 -11
  8. package/lib/module/components/Auth/One/Login/LoginWithPhone.js.map +1 -0
  9. package/lib/module/components/Auth/One/OTP/OTP.js +301 -0
  10. package/lib/module/components/Auth/One/OTP/OTP.js.map +1 -0
  11. package/lib/module/components/Auth/One/QrLogin/QrLogin.js +479 -0
  12. package/lib/module/components/Auth/One/QrLogin/QrLogin.js.map +1 -0
  13. package/lib/module/components/Auth/One/QrLogin/components/QrViewArea.js +295 -0
  14. package/lib/module/components/Auth/One/QrLogin/components/QrViewArea.js.map +1 -0
  15. package/lib/module/components/Auth/One/SignUp/SignUp.js +362 -0
  16. package/lib/module/components/Auth/One/SignUp/SignUp.js.map +1 -0
  17. package/lib/module/components/Auth/{SplashScreen → One/SplashScreen}/SplashScreen.js +8 -5
  18. package/lib/module/components/Auth/One/SplashScreen/SplashScreen.js.map +1 -0
  19. package/lib/module/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.js +80 -0
  20. package/lib/module/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.js.map +1 -0
  21. package/lib/module/components/Auth/{SplashScreen → One/SplashScreen}/components/SplashLottie/SplashLottie.js +1 -1
  22. package/lib/module/components/Auth/One/SplashScreen/components/SplashLottie/SplashLottie.js.map +1 -0
  23. package/lib/module/components/Auth/{SplashScreen → One/SplashScreen}/components/SplashVideo/SplashVideo.js +42 -21
  24. package/lib/module/components/Auth/One/SplashScreen/components/SplashVideo/SplashVideo.js.map +1 -0
  25. package/lib/module/components/Auth/One/index.js +25 -0
  26. package/lib/module/components/Auth/One/index.js.map +1 -0
  27. package/lib/module/components/Auth/Two/AuthHeader/AuthHeader.js +93 -0
  28. package/lib/module/components/Auth/Two/AuthHeader/AuthHeader.js.map +1 -0
  29. package/lib/module/components/Auth/{ForgotPassword → Two/ForgotPassword}/ForgotPassword.js +55 -28
  30. package/lib/module/components/Auth/Two/ForgotPassword/ForgotPassword.js.map +1 -0
  31. package/lib/module/components/Auth/Two/Login/AuthLoginShell.js +138 -0
  32. package/lib/module/components/Auth/Two/Login/AuthLoginShell.js.map +1 -0
  33. package/lib/module/components/Auth/Two/Login/LoginWithEmail.js +226 -0
  34. package/lib/module/components/Auth/Two/Login/LoginWithEmail.js.map +1 -0
  35. package/lib/module/components/Auth/Two/Login/LoginWithPhone.js +143 -0
  36. package/lib/module/components/Auth/Two/Login/LoginWithPhone.js.map +1 -0
  37. package/lib/module/components/Auth/{OTP → Two/OTP}/OTP.js +93 -63
  38. package/lib/module/components/Auth/Two/OTP/OTP.js.map +1 -0
  39. package/lib/module/components/Auth/Two/QrLogin/QrLogin.js +479 -0
  40. package/lib/module/components/Auth/Two/QrLogin/QrLogin.js.map +1 -0
  41. package/lib/module/components/Auth/Two/QrLogin/components/QrViewArea.js +295 -0
  42. package/lib/module/components/Auth/Two/QrLogin/components/QrViewArea.js.map +1 -0
  43. package/lib/module/components/Auth/Two/SignUp/SignUp.js +379 -0
  44. package/lib/module/components/Auth/Two/SignUp/SignUp.js.map +1 -0
  45. package/lib/module/components/Auth/Two/SplashScreen/SplashScreen.js +141 -0
  46. package/lib/module/components/Auth/Two/SplashScreen/SplashScreen.js.map +1 -0
  47. package/lib/module/components/Auth/{SplashScreen → Two/SplashScreen}/components/SplashImage/SplashImage.js +1 -1
  48. package/lib/module/components/Auth/Two/SplashScreen/components/SplashImage/SplashImage.js.map +1 -0
  49. package/lib/module/components/Auth/Two/SplashScreen/components/SplashLottie/SplashLottie.js +63 -0
  50. package/lib/module/components/Auth/Two/SplashScreen/components/SplashLottie/SplashLottie.js.map +1 -0
  51. package/lib/module/components/Auth/Two/SplashScreen/components/SplashVideo/SplashVideo.js +157 -0
  52. package/lib/module/components/Auth/Two/SplashScreen/components/SplashVideo/SplashVideo.js.map +1 -0
  53. package/lib/module/components/Auth/Two/index.js +29 -0
  54. package/lib/module/components/Auth/Two/index.js.map +1 -0
  55. package/lib/module/components/Auth/index.js +7 -22
  56. package/lib/module/components/Auth/index.js.map +1 -1
  57. package/lib/module/components/BackgroundLayout/BackgroundLayout.js +7 -3
  58. package/lib/module/components/BackgroundLayout/BackgroundLayout.js.map +1 -1
  59. package/lib/module/components/BackgroundLayout/BackgroundLayoutOne.js +52 -0
  60. package/lib/module/components/BackgroundLayout/BackgroundLayoutOne.js.map +1 -0
  61. package/lib/module/components/BottomSheet/BottomSheet.js +7 -3
  62. package/lib/module/components/BottomSheet/BottomSheet.js.map +1 -1
  63. package/lib/module/components/BottomSheet/BottomSheetOne.js +170 -0
  64. package/lib/module/components/BottomSheet/BottomSheetOne.js.map +1 -0
  65. package/lib/module/components/BottomSheet/index.js +1 -0
  66. package/lib/module/components/BottomSheet/index.js.map +1 -1
  67. package/lib/module/components/Button/PrimaryBtn.js +16 -6
  68. package/lib/module/components/Button/PrimaryBtn.js.map +1 -1
  69. package/lib/module/components/Content/Card/Category/Category.js +88 -13
  70. package/lib/module/components/Content/Card/Category/Category.js.map +1 -1
  71. package/lib/module/components/Content/Card/Category/CategroyTwo.js +287 -0
  72. package/lib/module/components/Content/Card/Category/CategroyTwo.js.map +1 -0
  73. package/lib/module/components/Content/Card/NowWatching/NowWatching.js +237 -108
  74. package/lib/module/components/Content/Card/NowWatching/NowWatching.js.map +1 -1
  75. package/lib/module/components/Content/Card/Sliders/Styles/One.js +191 -132
  76. package/lib/module/components/Content/Card/Sliders/Styles/One.js.map +1 -1
  77. package/lib/module/components/Content/Card/Sliders/Styles/Three.js +714 -0
  78. package/lib/module/components/Content/Card/Sliders/Styles/Three.js.map +1 -0
  79. package/lib/module/components/Content/Card/Sliders/Styles/Two.js +139 -92
  80. package/lib/module/components/Content/Card/Sliders/Styles/Two.js.map +1 -1
  81. package/lib/module/components/Content/Card/Sliders/index.js +3 -1
  82. package/lib/module/components/Content/Card/Sliders/index.js.map +1 -1
  83. package/lib/module/components/Content/Card/Styles/Five.js +132 -48
  84. package/lib/module/components/Content/Card/Styles/Five.js.map +1 -1
  85. package/lib/module/components/Content/Card/Styles/Four.js +127 -59
  86. package/lib/module/components/Content/Card/Styles/Four.js.map +1 -1
  87. package/lib/module/components/Content/Card/Styles/One.js +126 -50
  88. package/lib/module/components/Content/Card/Styles/One.js.map +1 -1
  89. package/lib/module/components/Content/Card/Styles/RotateInOut.js +139 -53
  90. package/lib/module/components/Content/Card/Styles/RotateInOut.js.map +1 -1
  91. package/lib/module/components/Content/Card/Styles/Six.js +207 -115
  92. package/lib/module/components/Content/Card/Styles/Six.js.map +1 -1
  93. package/lib/module/components/Content/Card/Styles/Three.js +119 -94
  94. package/lib/module/components/Content/Card/Styles/Three.js.map +1 -1
  95. package/lib/module/components/Content/Card/Styles/TopTen.js +187 -171
  96. package/lib/module/components/Content/Card/Styles/TopTen.js.map +1 -1
  97. package/lib/module/components/Content/Card/Styles/Two.js +145 -64
  98. package/lib/module/components/Content/Card/Styles/Two.js.map +1 -1
  99. package/lib/module/components/Content/Card/components/AdsPoster.js +162 -0
  100. package/lib/module/components/Content/Card/components/AdsPoster.js.map +1 -0
  101. package/lib/module/components/Content/Card/components/CardPoster.js +217 -135
  102. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  103. package/lib/module/components/Content/Card/components/NavigateToMore.js +26 -2
  104. package/lib/module/components/Content/Card/components/NavigateToMore.js.map +1 -1
  105. package/lib/module/components/Content/Card/components/index.js +4 -0
  106. package/lib/module/components/Content/Card/components/index.js.map +1 -0
  107. package/lib/module/components/Content/Content.js +90 -33
  108. package/lib/module/components/Content/Content.js.map +1 -1
  109. package/lib/module/components/Content/Sections.js +41 -11
  110. package/lib/module/components/Content/Sections.js.map +1 -1
  111. package/lib/module/components/Content/types.js +4 -0
  112. package/lib/module/components/Content/types.js.map +1 -0
  113. package/lib/module/components/ContentView/MoreContentList.js +1 -0
  114. package/lib/module/components/ContentView/MoreContentList.js.map +1 -1
  115. package/lib/module/components/ContentView/{ContentView.js → One/ContentViewOne.js} +6 -5
  116. package/lib/module/components/ContentView/One/ContentViewOne.js.map +1 -0
  117. package/lib/module/components/ContentView/{components → One/components}/AboutSection.js +2 -2
  118. package/lib/module/components/ContentView/One/components/AboutSection.js.map +1 -0
  119. package/lib/module/components/ContentView/{components → One/components}/CastCard.js +2 -2
  120. package/lib/module/components/ContentView/One/components/CastCard.js.map +1 -0
  121. package/lib/module/components/ContentView/{components → One/components}/EpisodeCard.js +5 -6
  122. package/lib/module/components/ContentView/One/components/EpisodeCard.js.map +1 -0
  123. package/lib/module/components/ContentView/{components → One/components}/GenreTags.js +2 -2
  124. package/lib/module/components/ContentView/One/components/GenreTags.js.map +1 -0
  125. package/lib/module/components/ContentView/{components → One/components}/HeroBanner.js +45 -44
  126. package/lib/module/components/ContentView/One/components/HeroBanner.js.map +1 -0
  127. package/lib/module/components/ContentView/{components → One/components}/MiniInfo.js +50 -5
  128. package/lib/module/components/ContentView/One/components/MiniInfo.js.map +1 -0
  129. package/lib/module/components/ContentView/{components → One/components}/PlayButton.js +1 -1
  130. package/lib/module/components/ContentView/One/components/PlayButton.js.map +1 -0
  131. package/lib/module/components/ContentView/{components → One/components}/Title.js +1 -1
  132. package/lib/module/components/ContentView/One/components/Title.js.map +1 -0
  133. package/lib/module/components/ContentView/{components → One/components}/TrailerButton.js +2 -2
  134. package/lib/module/components/ContentView/One/components/TrailerButton.js.map +1 -0
  135. package/lib/module/components/ContentView/Two/ContentViewTwo.js +220 -0
  136. package/lib/module/components/ContentView/Two/ContentViewTwo.js.map +1 -0
  137. package/lib/module/components/ContentView/Two/components/AboutSection.js +150 -0
  138. package/lib/module/components/ContentView/Two/components/AboutSection.js.map +1 -0
  139. package/lib/module/components/ContentView/Two/components/Details.js +156 -0
  140. package/lib/module/components/ContentView/Two/components/Details.js.map +1 -0
  141. package/lib/module/components/ContentView/Two/components/EpisodeCard.js +425 -0
  142. package/lib/module/components/ContentView/Two/components/EpisodeCard.js.map +1 -0
  143. package/lib/module/components/ContentView/Two/components/GenreTags.js +86 -0
  144. package/lib/module/components/ContentView/Two/components/GenreTags.js.map +1 -0
  145. package/lib/module/components/ContentView/Two/components/HeroBanner.js +339 -0
  146. package/lib/module/components/ContentView/Two/components/HeroBanner.js.map +1 -0
  147. package/lib/module/components/ContentView/Two/components/LikeShareActions.js +88 -0
  148. package/lib/module/components/ContentView/Two/components/LikeShareActions.js.map +1 -0
  149. package/lib/module/components/ContentView/Two/components/MoreLikeThisContentList .js +235 -0
  150. package/lib/module/components/ContentView/Two/components/MoreLikeThisContentList .js.map +1 -0
  151. package/lib/module/components/ContentView/Two/components/PlayOrTrailer.js +120 -0
  152. package/lib/module/components/ContentView/Two/components/PlayOrTrailer.js.map +1 -0
  153. package/lib/module/components/ContentView/Two/components/SectionTabs.js +112 -0
  154. package/lib/module/components/ContentView/Two/components/SectionTabs.js.map +1 -0
  155. package/lib/module/components/ContentView/Two/components/Title.js +146 -0
  156. package/lib/module/components/ContentView/Two/components/Title.js.map +1 -0
  157. package/lib/module/components/ContentView/Two/components/index.js +18 -0
  158. package/lib/module/components/ContentView/Two/components/index.js.map +1 -0
  159. package/lib/module/components/ContentView/index.js +6 -1
  160. package/lib/module/components/ContentView/index.js.map +1 -1
  161. package/lib/module/components/Headers/Four.js +68 -0
  162. package/lib/module/components/Headers/Four.js.map +1 -0
  163. package/lib/module/components/Headers/Three.js +75 -24
  164. package/lib/module/components/Headers/Three.js.map +1 -1
  165. package/lib/module/components/Headers/index.js +3 -1
  166. package/lib/module/components/Headers/index.js.map +1 -1
  167. package/lib/module/components/Input/Input.js +5 -1
  168. package/lib/module/components/Input/Input.js.map +1 -1
  169. package/lib/module/components/Input/InputThree.js +157 -0
  170. package/lib/module/components/Input/InputThree.js.map +1 -0
  171. package/lib/module/components/Input/PhoneNumberInput.js.map +1 -1
  172. package/lib/module/components/Input/PhoneNumberInputTwo.js +316 -0
  173. package/lib/module/components/Input/PhoneNumberInputTwo.js.map +1 -0
  174. package/lib/module/components/Loader/Loader.js +14 -6
  175. package/lib/module/components/Loader/Loader.js.map +1 -1
  176. package/lib/module/components/Logo/Logo.js +42 -17
  177. package/lib/module/components/Logo/Logo.js.map +1 -1
  178. package/lib/module/components/NewRelease/NewReleaseSheet.js +227 -0
  179. package/lib/module/components/NewRelease/NewReleaseSheet.js.map +1 -0
  180. package/lib/module/components/NewRelease/index.js +4 -0
  181. package/lib/module/components/NewRelease/index.js.map +1 -0
  182. package/lib/module/components/Reels/ReelsSeries/MediaControls/BottomControls.js +92 -17
  183. package/lib/module/components/Reels/ReelsSeries/MediaControls/BottomControls.js.map +1 -1
  184. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js +65 -2
  185. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js.map +1 -1
  186. package/lib/module/components/Reels/ReelsSeries/MediaControls/RightControls.js +2 -1
  187. package/lib/module/components/Reels/ReelsSeries/MediaControls/RightControls.js.map +1 -1
  188. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js +4 -2
  189. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js.map +1 -1
  190. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js +80 -46
  191. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js.map +1 -1
  192. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js +78 -29
  193. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js.map +1 -1
  194. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js +21 -34
  195. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js.map +1 -1
  196. package/lib/module/components/Reels/ReelsSeries/useReelsWatchProgress.js +58 -0
  197. package/lib/module/components/Reels/ReelsSeries/useReelsWatchProgress.js.map +1 -0
  198. package/lib/module/components/Reels/ReelsSeries/utils/quality.js +44 -0
  199. package/lib/module/components/Reels/ReelsSeries/utils/quality.js.map +1 -0
  200. package/lib/module/components/Reels/index.js +1 -0
  201. package/lib/module/components/Reels/index.js.map +1 -1
  202. package/lib/module/components/Search/One.js +7 -4
  203. package/lib/module/components/Search/One.js.map +1 -1
  204. package/lib/module/components/Search/components/SearchCard.js +59 -7
  205. package/lib/module/components/Search/components/SearchCard.js.map +1 -1
  206. package/lib/module/components/User/PurchaseHistory/PurchaseHistory.js +2 -1
  207. package/lib/module/components/User/PurchaseHistory/PurchaseHistory.js.map +1 -1
  208. package/lib/module/components/User/WatchHistory/WatchHistory.js +1 -0
  209. package/lib/module/components/User/WatchHistory/WatchHistory.js.map +1 -1
  210. package/lib/module/components/User/WatchLater/WatchLater.js +1 -0
  211. package/lib/module/components/User/WatchLater/WatchLater.js.map +1 -1
  212. package/lib/module/components/common/AppStatusBar.js +2 -1
  213. package/lib/module/components/common/AppStatusBar.js.map +1 -1
  214. package/lib/module/components/index.js +1 -0
  215. package/lib/module/components/index.js.map +1 -1
  216. package/lib/module/constants/dummySections.js +47 -5
  217. package/lib/module/constants/dummySections.js.map +1 -1
  218. package/lib/module/hooks/Images/index.js +5 -0
  219. package/lib/module/hooks/Images/index.js.map +1 -0
  220. package/lib/module/hooks/Images/useImageLoader.js +168 -0
  221. package/lib/module/hooks/Images/useImageLoader.js.map +1 -0
  222. package/lib/module/hooks/Images/useImageValidation.js +36 -0
  223. package/lib/module/hooks/Images/useImageValidation.js.map +1 -0
  224. package/lib/module/hooks/index.js +3 -0
  225. package/lib/module/hooks/index.js.map +1 -1
  226. package/lib/module/hooks/useAdTracking.js +270 -0
  227. package/lib/module/hooks/useAdTracking.js.map +1 -0
  228. package/lib/module/hooks/useCards.js +164 -0
  229. package/lib/module/hooks/useCards.js.map +1 -0
  230. package/lib/module/hooks/usePaginatedSection.js +11 -6
  231. package/lib/module/hooks/usePaginatedSection.js.map +1 -1
  232. package/lib/module/hooks/useSplashCache.js +78 -60
  233. package/lib/module/hooks/useSplashCache.js.map +1 -1
  234. package/lib/module/theme/ThemeProvider.js +14 -2
  235. package/lib/module/theme/ThemeProvider.js.map +1 -1
  236. package/lib/module/theme/hook/index.js +0 -1
  237. package/lib/module/theme/hook/index.js.map +1 -1
  238. package/lib/module/theme/hook/useInternalTheme.js +21 -7
  239. package/lib/module/theme/hook/useInternalTheme.js.map +1 -1
  240. package/lib/module/theme/themes.js +2 -0
  241. package/lib/module/theme/themes.js.map +1 -1
  242. package/lib/module/theme/utils/validateColor.js +84 -0
  243. package/lib/module/theme/utils/validateColor.js.map +1 -0
  244. package/lib/module/utils/colorUtils.js +68 -0
  245. package/lib/module/utils/colorUtils.js.map +1 -0
  246. package/lib/typescript/src/components/Auth/{ForgotPassword → One/ForgotPassword}/ForgotPassword.d.ts +1 -1
  247. package/lib/typescript/src/components/Auth/One/ForgotPassword/ForgotPassword.d.ts.map +1 -0
  248. package/lib/typescript/src/components/Auth/{Login → One/Login}/LoginWithEmail.d.ts +1 -1
  249. package/lib/typescript/src/components/Auth/One/Login/LoginWithEmail.d.ts.map +1 -0
  250. package/lib/typescript/src/components/Auth/{Login → One/Login}/LoginWithPhone.d.ts +1 -1
  251. package/lib/typescript/src/components/Auth/One/Login/LoginWithPhone.d.ts.map +1 -0
  252. package/lib/typescript/src/components/Auth/{OTP → One/OTP}/OTP.d.ts +1 -1
  253. package/lib/typescript/src/components/Auth/One/OTP/OTP.d.ts.map +1 -0
  254. package/lib/typescript/src/components/Auth/{QrLogin → One/QrLogin}/QrLogin.d.ts +3 -1
  255. package/lib/typescript/src/components/Auth/One/QrLogin/QrLogin.d.ts.map +1 -0
  256. package/lib/typescript/src/components/Auth/{QrLogin → One/QrLogin}/components/QrViewArea.d.ts +1 -1
  257. package/lib/typescript/src/components/Auth/One/QrLogin/components/QrViewArea.d.ts.map +1 -0
  258. package/lib/typescript/src/components/Auth/{SignUp → One/SignUp}/SignUp.d.ts +1 -1
  259. package/lib/typescript/src/components/Auth/One/SignUp/SignUp.d.ts.map +1 -0
  260. package/lib/typescript/src/components/Auth/{SplashScreen → One/SplashScreen}/SplashScreen.d.ts +1 -1
  261. package/lib/typescript/src/components/Auth/One/SplashScreen/SplashScreen.d.ts.map +1 -0
  262. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.d.ts +14 -0
  263. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.d.ts.map +1 -0
  264. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashLottie/SplashLottie.d.ts.map +1 -0
  265. package/lib/typescript/src/components/Auth/One/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +1 -0
  266. package/lib/typescript/src/components/Auth/One/index.d.ts +234 -0
  267. package/lib/typescript/src/components/Auth/One/index.d.ts.map +1 -0
  268. package/lib/typescript/src/components/Auth/Two/AuthHeader/AuthHeader.d.ts +16 -0
  269. package/lib/typescript/src/components/Auth/Two/AuthHeader/AuthHeader.d.ts.map +1 -0
  270. package/lib/typescript/src/components/Auth/Two/ForgotPassword/ForgotPassword.d.ts +53 -0
  271. package/lib/typescript/src/components/Auth/Two/ForgotPassword/ForgotPassword.d.ts.map +1 -0
  272. package/lib/typescript/src/components/Auth/Two/Login/AuthLoginShell.d.ts +17 -0
  273. package/lib/typescript/src/components/Auth/Two/Login/AuthLoginShell.d.ts.map +1 -0
  274. package/lib/typescript/src/components/Auth/Two/Login/LoginWithEmail.d.ts +52 -0
  275. package/lib/typescript/src/components/Auth/Two/Login/LoginWithEmail.d.ts.map +1 -0
  276. package/lib/typescript/src/components/Auth/Two/Login/LoginWithPhone.d.ts +37 -0
  277. package/lib/typescript/src/components/Auth/Two/Login/LoginWithPhone.d.ts.map +1 -0
  278. package/lib/typescript/src/components/Auth/Two/OTP/OTP.d.ts +63 -0
  279. package/lib/typescript/src/components/Auth/Two/OTP/OTP.d.ts.map +1 -0
  280. package/lib/typescript/src/components/Auth/Two/QrLogin/QrLogin.d.ts +19 -0
  281. package/lib/typescript/src/components/Auth/Two/QrLogin/QrLogin.d.ts.map +1 -0
  282. package/lib/typescript/src/components/Auth/Two/QrLogin/components/QrViewArea.d.ts +14 -0
  283. package/lib/typescript/src/components/Auth/Two/QrLogin/components/QrViewArea.d.ts.map +1 -0
  284. package/lib/typescript/src/components/Auth/Two/SignUp/SignUp.d.ts +67 -0
  285. package/lib/typescript/src/components/Auth/Two/SignUp/SignUp.d.ts.map +1 -0
  286. package/lib/typescript/src/components/Auth/Two/SplashScreen/SplashScreen.d.ts +35 -0
  287. package/lib/typescript/src/components/Auth/Two/SplashScreen/SplashScreen.d.ts.map +1 -0
  288. package/lib/typescript/src/components/Auth/Two/SplashScreen/components/SplashImage/SplashImage.d.ts.map +1 -0
  289. package/lib/typescript/src/components/Auth/Two/SplashScreen/components/SplashLottie/SplashLottie.d.ts +17 -0
  290. package/lib/typescript/src/components/Auth/Two/SplashScreen/components/SplashLottie/SplashLottie.d.ts.map +1 -0
  291. package/lib/typescript/src/components/Auth/Two/SplashScreen/components/SplashVideo/SplashVideo.d.ts +20 -0
  292. package/lib/typescript/src/components/Auth/Two/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +1 -0
  293. package/lib/typescript/src/components/Auth/Two/index.d.ts +220 -0
  294. package/lib/typescript/src/components/Auth/Two/index.d.ts.map +1 -0
  295. package/lib/typescript/src/components/Auth/index.d.ts +447 -232
  296. package/lib/typescript/src/components/Auth/index.d.ts.map +1 -1
  297. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts.map +1 -1
  298. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayoutOne.d.ts +7 -0
  299. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayoutOne.d.ts.map +1 -0
  300. package/lib/typescript/src/components/BottomSheet/BottomSheet.d.ts.map +1 -1
  301. package/lib/typescript/src/components/BottomSheet/BottomSheetOne.d.ts +19 -0
  302. package/lib/typescript/src/components/BottomSheet/BottomSheetOne.d.ts.map +1 -0
  303. package/lib/typescript/src/components/BottomSheet/index.d.ts +2 -0
  304. package/lib/typescript/src/components/BottomSheet/index.d.ts.map +1 -1
  305. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts +1 -0
  306. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts.map +1 -1
  307. package/lib/typescript/src/components/Button/index.d.ts +1 -0
  308. package/lib/typescript/src/components/Button/index.d.ts.map +1 -1
  309. package/lib/typescript/src/components/Content/Card/Category/Category.d.ts.map +1 -1
  310. package/lib/typescript/src/components/Content/Card/Category/CategroyTwo.d.ts +26 -0
  311. package/lib/typescript/src/components/Content/Card/Category/CategroyTwo.d.ts.map +1 -0
  312. package/lib/typescript/src/components/Content/Card/NowWatching/NowWatching.d.ts.map +1 -1
  313. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts.map +1 -1
  314. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Three.d.ts +19 -0
  315. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Three.d.ts.map +1 -0
  316. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts.map +1 -1
  317. package/lib/typescript/src/components/Content/Card/Sliders/index.d.ts +11 -0
  318. package/lib/typescript/src/components/Content/Card/Sliders/index.d.ts.map +1 -1
  319. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts +13 -1
  320. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts.map +1 -1
  321. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts +13 -1
  322. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts.map +1 -1
  323. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts +15 -3
  324. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts.map +1 -1
  325. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts +13 -1
  326. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts.map +1 -1
  327. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts +1 -0
  328. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts.map +1 -1
  329. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts +13 -5
  330. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts.map +1 -1
  331. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts +1 -0
  332. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts.map +1 -1
  333. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts +13 -1
  334. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts.map +1 -1
  335. package/lib/typescript/src/components/Content/Card/components/AdsPoster.d.ts +26 -0
  336. package/lib/typescript/src/components/Content/Card/components/AdsPoster.d.ts.map +1 -0
  337. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts +4 -1
  338. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  339. package/lib/typescript/src/components/Content/Card/components/NavigateToMore.d.ts +3 -0
  340. package/lib/typescript/src/components/Content/Card/components/NavigateToMore.d.ts.map +1 -1
  341. package/lib/typescript/src/components/Content/Card/components/index.d.ts +2 -0
  342. package/lib/typescript/src/components/Content/Card/components/index.d.ts.map +1 -0
  343. package/lib/typescript/src/components/Content/Card/index.d.ts +76 -6
  344. package/lib/typescript/src/components/Content/Card/index.d.ts.map +1 -1
  345. package/lib/typescript/src/components/Content/Content.d.ts +2 -51
  346. package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
  347. package/lib/typescript/src/components/Content/Sections.d.ts +2 -39
  348. package/lib/typescript/src/components/Content/Sections.d.ts.map +1 -1
  349. package/lib/typescript/src/components/Content/types.d.ts +149 -0
  350. package/lib/typescript/src/components/Content/types.d.ts.map +1 -0
  351. package/lib/typescript/src/components/ContentView/MoreContentList.d.ts.map +1 -1
  352. package/lib/typescript/src/components/ContentView/One/ContentViewOne.d.ts +15 -0
  353. package/lib/typescript/src/components/ContentView/One/ContentViewOne.d.ts.map +1 -0
  354. package/lib/typescript/src/components/ContentView/{components → One/components}/AboutSection.d.ts +1 -1
  355. package/lib/typescript/src/components/ContentView/One/components/AboutSection.d.ts.map +1 -0
  356. package/lib/typescript/src/components/ContentView/{components → One/components}/CastCard.d.ts +1 -1
  357. package/lib/typescript/src/components/ContentView/One/components/CastCard.d.ts.map +1 -0
  358. package/lib/typescript/src/components/ContentView/{components → One/components}/EpisodeCard.d.ts +1 -1
  359. package/lib/typescript/src/components/ContentView/One/components/EpisodeCard.d.ts.map +1 -0
  360. package/lib/typescript/src/components/ContentView/{components → One/components}/GenreTags.d.ts +1 -1
  361. package/lib/typescript/src/components/ContentView/One/components/GenreTags.d.ts.map +1 -0
  362. package/lib/typescript/src/components/ContentView/{components → One/components}/HeroBanner.d.ts +1 -1
  363. package/lib/typescript/src/components/ContentView/One/components/HeroBanner.d.ts.map +1 -0
  364. package/lib/typescript/src/components/ContentView/{components → One/components}/MiniInfo.d.ts +1 -1
  365. package/lib/typescript/src/components/ContentView/One/components/MiniInfo.d.ts.map +1 -0
  366. package/lib/typescript/src/components/ContentView/One/components/PlayButton.d.ts.map +1 -0
  367. package/lib/typescript/src/components/ContentView/{components → One/components}/Title.d.ts +1 -1
  368. package/lib/typescript/src/components/ContentView/One/components/Title.d.ts.map +1 -0
  369. package/lib/typescript/src/components/ContentView/One/components/TrailerButton.d.ts.map +1 -0
  370. package/lib/typescript/src/components/ContentView/Two/ContentViewTwo.d.ts +18 -0
  371. package/lib/typescript/src/components/ContentView/Two/ContentViewTwo.d.ts.map +1 -0
  372. package/lib/typescript/src/components/ContentView/Two/components/AboutSection.d.ts +27 -0
  373. package/lib/typescript/src/components/ContentView/Two/components/AboutSection.d.ts.map +1 -0
  374. package/lib/typescript/src/components/ContentView/Two/components/Details.d.ts +15 -0
  375. package/lib/typescript/src/components/ContentView/Two/components/Details.d.ts.map +1 -0
  376. package/lib/typescript/src/components/ContentView/Two/components/EpisodeCard.d.ts +23 -0
  377. package/lib/typescript/src/components/ContentView/Two/components/EpisodeCard.d.ts.map +1 -0
  378. package/lib/typescript/src/components/ContentView/Two/components/GenreTags.d.ts +22 -0
  379. package/lib/typescript/src/components/ContentView/Two/components/GenreTags.d.ts.map +1 -0
  380. package/lib/typescript/src/components/ContentView/Two/components/HeroBanner.d.ts +8 -0
  381. package/lib/typescript/src/components/ContentView/Two/components/HeroBanner.d.ts.map +1 -0
  382. package/lib/typescript/src/components/ContentView/Two/components/LikeShareActions.d.ts +25 -0
  383. package/lib/typescript/src/components/ContentView/Two/components/LikeShareActions.d.ts.map +1 -0
  384. package/lib/typescript/src/components/ContentView/Two/components/MoreLikeThisContentList .d.ts +26 -0
  385. package/lib/typescript/src/components/ContentView/Two/components/MoreLikeThisContentList .d.ts.map +1 -0
  386. package/lib/typescript/src/components/ContentView/Two/components/PlayOrTrailer.d.ts +21 -0
  387. package/lib/typescript/src/components/ContentView/Two/components/PlayOrTrailer.d.ts.map +1 -0
  388. package/lib/typescript/src/components/ContentView/Two/components/SectionTabs.d.ts +28 -0
  389. package/lib/typescript/src/components/ContentView/Two/components/SectionTabs.d.ts.map +1 -0
  390. package/lib/typescript/src/components/ContentView/Two/components/Title.d.ts +34 -0
  391. package/lib/typescript/src/components/ContentView/Two/components/Title.d.ts.map +1 -0
  392. package/lib/typescript/src/components/ContentView/Two/components/index.d.ts +15 -0
  393. package/lib/typescript/src/components/ContentView/Two/components/index.d.ts.map +1 -0
  394. package/lib/typescript/src/components/ContentView/index.d.ts +6 -1
  395. package/lib/typescript/src/components/ContentView/index.d.ts.map +1 -1
  396. package/lib/typescript/src/components/Headers/Four.d.ts +18 -0
  397. package/lib/typescript/src/components/Headers/Four.d.ts.map +1 -0
  398. package/lib/typescript/src/components/Headers/Three.d.ts +9 -1
  399. package/lib/typescript/src/components/Headers/Three.d.ts.map +1 -1
  400. package/lib/typescript/src/components/Headers/index.d.ts +1 -0
  401. package/lib/typescript/src/components/Headers/index.d.ts.map +1 -1
  402. package/lib/typescript/src/components/Input/Input.d.ts +2 -0
  403. package/lib/typescript/src/components/Input/Input.d.ts.map +1 -1
  404. package/lib/typescript/src/components/Input/InputThree.d.ts +22 -0
  405. package/lib/typescript/src/components/Input/InputThree.d.ts.map +1 -0
  406. package/lib/typescript/src/components/Input/PhoneNumberInput.d.ts.map +1 -1
  407. package/lib/typescript/src/components/Input/PhoneNumberInputTwo.d.ts +26 -0
  408. package/lib/typescript/src/components/Input/PhoneNumberInputTwo.d.ts.map +1 -0
  409. package/lib/typescript/src/components/Loader/Loader.d.ts +2 -0
  410. package/lib/typescript/src/components/Loader/Loader.d.ts.map +1 -1
  411. package/lib/typescript/src/components/Logo/Logo.d.ts +1 -1
  412. package/lib/typescript/src/components/Logo/Logo.d.ts.map +1 -1
  413. package/lib/typescript/src/components/NewRelease/NewReleaseSheet.d.ts +10 -0
  414. package/lib/typescript/src/components/NewRelease/NewReleaseSheet.d.ts.map +1 -0
  415. package/lib/typescript/src/components/NewRelease/index.d.ts +2 -0
  416. package/lib/typescript/src/components/NewRelease/index.d.ts.map +1 -0
  417. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/BottomControls.d.ts +2 -0
  418. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/BottomControls.d.ts.map +1 -1
  419. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts +1 -0
  420. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts.map +1 -1
  421. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/RightControls.d.ts.map +1 -1
  422. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts +2 -1
  423. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts.map +1 -1
  424. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts +9 -2
  425. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts.map +1 -1
  426. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts +11 -1
  427. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts.map +1 -1
  428. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts +11 -0
  429. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts.map +1 -1
  430. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts +15 -0
  431. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts.map +1 -1
  432. package/lib/typescript/src/components/Reels/ReelsSeries/useReelsWatchProgress.d.ts +34 -0
  433. package/lib/typescript/src/components/Reels/ReelsSeries/useReelsWatchProgress.d.ts.map +1 -0
  434. package/lib/typescript/src/components/Reels/ReelsSeries/utils/quality.d.ts +10 -0
  435. package/lib/typescript/src/components/Reels/ReelsSeries/utils/quality.d.ts.map +1 -0
  436. package/lib/typescript/src/components/Reels/index.d.ts +1 -0
  437. package/lib/typescript/src/components/Reels/index.d.ts.map +1 -1
  438. package/lib/typescript/src/components/Search/One.d.ts.map +1 -1
  439. package/lib/typescript/src/components/Search/components/SearchCard.d.ts +1 -0
  440. package/lib/typescript/src/components/Search/components/SearchCard.d.ts.map +1 -1
  441. package/lib/typescript/src/components/User/PurchaseHistory/PurchaseHistory.d.ts.map +1 -1
  442. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts.map +1 -1
  443. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts.map +1 -1
  444. package/lib/typescript/src/components/common/AppStatusBar.d.ts +1 -0
  445. package/lib/typescript/src/components/common/AppStatusBar.d.ts.map +1 -1
  446. package/lib/typescript/src/components/index.d.ts +1 -0
  447. package/lib/typescript/src/components/index.d.ts.map +1 -1
  448. package/lib/typescript/src/constants/dummySections.d.ts +8 -1
  449. package/lib/typescript/src/constants/dummySections.d.ts.map +1 -1
  450. package/lib/typescript/src/hooks/Images/index.d.ts +3 -0
  451. package/lib/typescript/src/hooks/Images/index.d.ts.map +1 -0
  452. package/lib/typescript/src/hooks/Images/useImageLoader.d.ts +36 -0
  453. package/lib/typescript/src/hooks/Images/useImageLoader.d.ts.map +1 -0
  454. package/lib/typescript/src/hooks/Images/useImageValidation.d.ts +17 -0
  455. package/lib/typescript/src/hooks/Images/useImageValidation.d.ts.map +1 -0
  456. package/lib/typescript/src/hooks/index.d.ts +3 -0
  457. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  458. package/lib/typescript/src/hooks/useAdTracking.d.ts +39 -0
  459. package/lib/typescript/src/hooks/useAdTracking.d.ts.map +1 -0
  460. package/lib/typescript/src/hooks/useCards.d.ts +36 -0
  461. package/lib/typescript/src/hooks/useCards.d.ts.map +1 -0
  462. package/lib/typescript/src/hooks/usePaginatedSection.d.ts +12 -2
  463. package/lib/typescript/src/hooks/usePaginatedSection.d.ts.map +1 -1
  464. package/lib/typescript/src/hooks/useSplashCache.d.ts.map +1 -1
  465. package/lib/typescript/src/theme/ThemeProvider.d.ts +2 -0
  466. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
  467. package/lib/typescript/src/theme/hook/index.d.ts +0 -1
  468. package/lib/typescript/src/theme/hook/index.d.ts.map +1 -1
  469. package/lib/typescript/src/theme/hook/useInternalTheme.d.ts.map +1 -1
  470. package/lib/typescript/src/theme/themes.d.ts +1 -0
  471. package/lib/typescript/src/theme/themes.d.ts.map +1 -1
  472. package/lib/typescript/src/theme/utils/validateColor.d.ts +21 -0
  473. package/lib/typescript/src/theme/utils/validateColor.d.ts.map +1 -0
  474. package/lib/typescript/src/types/content/content-view.types.d.ts +40 -1
  475. package/lib/typescript/src/types/content/content-view.types.d.ts.map +1 -1
  476. package/lib/typescript/src/types/sections/index.d.ts +7 -4
  477. package/lib/typescript/src/types/sections/index.d.ts.map +1 -1
  478. package/lib/typescript/src/utils/colorUtils.d.ts +19 -0
  479. package/lib/typescript/src/utils/colorUtils.d.ts.map +1 -0
  480. package/package.json +13 -4
  481. package/src/components/Auth/AuthProvider/AuthProvider.tsx +6 -2
  482. package/src/components/Auth/One/ForgotPassword/ForgotPassword.tsx +324 -0
  483. package/src/components/Auth/One/Login/LoginWithEmail.tsx +455 -0
  484. package/src/components/Auth/{Login → One/Login}/LoginWithPhone.tsx +12 -12
  485. package/src/components/Auth/One/OTP/OTP.tsx +465 -0
  486. package/src/components/Auth/One/QrLogin/QrLogin.tsx +602 -0
  487. package/src/components/Auth/One/QrLogin/components/QrViewArea.tsx +423 -0
  488. package/src/components/Auth/One/SignUp/SignUp.tsx +479 -0
  489. package/src/components/Auth/{SplashScreen → One/SplashScreen}/SplashScreen.tsx +10 -6
  490. package/src/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.tsx +103 -0
  491. package/src/components/Auth/{SplashScreen → One/SplashScreen}/components/SplashLottie/SplashLottie.tsx +1 -1
  492. package/src/components/Auth/{SplashScreen → One/SplashScreen}/components/SplashVideo/SplashVideo.tsx +35 -25
  493. package/src/components/Auth/One/index.ts +24 -0
  494. package/src/components/Auth/Two/AuthHeader/AuthHeader.tsx +108 -0
  495. package/src/components/Auth/{ForgotPassword → Two/ForgotPassword}/ForgotPassword.tsx +62 -35
  496. package/src/components/Auth/Two/Login/AuthLoginShell.tsx +173 -0
  497. package/src/components/Auth/Two/Login/LoginWithEmail.tsx +279 -0
  498. package/src/components/Auth/Two/Login/LoginWithPhone.tsx +188 -0
  499. package/src/components/Auth/{OTP → Two/OTP}/OTP.tsx +92 -81
  500. package/src/components/Auth/Two/QrLogin/QrLogin.tsx +602 -0
  501. package/src/components/Auth/Two/QrLogin/components/QrViewArea.tsx +423 -0
  502. package/src/components/Auth/Two/SignUp/SignUp.tsx +472 -0
  503. package/src/components/Auth/Two/SplashScreen/SplashScreen.tsx +248 -0
  504. package/src/components/Auth/{SplashScreen → Two/SplashScreen}/components/SplashImage/SplashImage.tsx +1 -1
  505. package/src/components/Auth/Two/SplashScreen/components/SplashLottie/SplashLottie.tsx +77 -0
  506. package/src/components/Auth/Two/SplashScreen/components/SplashVideo/SplashVideo.tsx +178 -0
  507. package/src/components/Auth/Two/index.ts +28 -0
  508. package/src/components/Auth/index.ts +7 -22
  509. package/src/components/BackgroundLayout/BackgroundLayout.tsx +2 -0
  510. package/src/components/BackgroundLayout/BackgroundLayoutOne.tsx +56 -0
  511. package/src/components/BottomSheet/BottomSheet.tsx +6 -1
  512. package/src/components/BottomSheet/BottomSheetOne.tsx +220 -0
  513. package/src/components/BottomSheet/index.ts +2 -0
  514. package/src/components/Button/PrimaryBtn.tsx +10 -2
  515. package/src/components/Content/Card/Category/Category.tsx +104 -10
  516. package/src/components/Content/Card/Category/CategroyTwo.tsx +429 -0
  517. package/src/components/Content/Card/NowWatching/NowWatching.tsx +281 -136
  518. package/src/components/Content/Card/Sliders/Styles/One.tsx +248 -152
  519. package/src/components/Content/Card/Sliders/Styles/Three.tsx +935 -0
  520. package/src/components/Content/Card/Sliders/Styles/Two.tsx +171 -102
  521. package/src/components/Content/Card/Sliders/index.ts +2 -0
  522. package/src/components/Content/Card/Styles/Five.tsx +162 -62
  523. package/src/components/Content/Card/Styles/Four.tsx +165 -85
  524. package/src/components/Content/Card/Styles/One.tsx +162 -71
  525. package/src/components/Content/Card/Styles/RotateInOut.tsx +158 -60
  526. package/src/components/Content/Card/Styles/Six.tsx +242 -142
  527. package/src/components/Content/Card/Styles/Three.tsx +160 -162
  528. package/src/components/Content/Card/Styles/TopTen.tsx +231 -191
  529. package/src/components/Content/Card/Styles/Two.tsx +183 -79
  530. package/src/components/Content/Card/components/AdsPoster.tsx +202 -0
  531. package/src/components/Content/Card/components/CardPoster.tsx +250 -151
  532. package/src/components/Content/Card/components/NavigateToMore.tsx +29 -1
  533. package/src/components/Content/Card/components/index.ts +1 -0
  534. package/src/components/Content/Content.tsx +103 -119
  535. package/src/components/Content/Sections.tsx +51 -45
  536. package/src/components/Content/types.ts +176 -0
  537. package/src/components/ContentView/MoreContentList.tsx +1 -0
  538. package/src/components/ContentView/{ContentView.tsx → One/ContentViewOne.tsx} +8 -7
  539. package/src/components/ContentView/{components → One/components}/AboutSection.tsx +3 -3
  540. package/src/components/ContentView/{components → One/components}/CastCard.tsx +3 -3
  541. package/src/components/ContentView/{components → One/components}/EpisodeCard.tsx +7 -8
  542. package/src/components/ContentView/{components → One/components}/GenreTags.tsx +3 -3
  543. package/src/components/ContentView/{components → One/components}/HeroBanner.tsx +44 -59
  544. package/src/components/ContentView/{components → One/components}/MiniInfo.tsx +69 -5
  545. package/src/components/ContentView/{components → One/components}/PlayButton.tsx +1 -1
  546. package/src/components/ContentView/{components → One/components}/Title.tsx +2 -2
  547. package/src/components/ContentView/{components → One/components}/TrailerButton.tsx +2 -2
  548. package/src/components/ContentView/Two/ContentViewTwo.tsx +343 -0
  549. package/src/components/ContentView/Two/components/AboutSection.tsx +216 -0
  550. package/src/components/ContentView/Two/components/Details.tsx +193 -0
  551. package/src/components/ContentView/Two/components/EpisodeCard.tsx +602 -0
  552. package/src/components/ContentView/Two/components/GenreTags.tsx +123 -0
  553. package/src/components/ContentView/Two/components/HeroBanner.tsx +402 -0
  554. package/src/components/ContentView/Two/components/LikeShareActions.tsx +125 -0
  555. package/src/components/ContentView/Two/components/MoreLikeThisContentList .tsx +305 -0
  556. package/src/components/ContentView/Two/components/PlayOrTrailer.tsx +133 -0
  557. package/src/components/ContentView/Two/components/SectionTabs.tsx +177 -0
  558. package/src/components/ContentView/Two/components/Title.tsx +226 -0
  559. package/src/components/ContentView/Two/components/index.ts +15 -0
  560. package/src/components/ContentView/index.ts +7 -1
  561. package/src/components/Headers/Four.tsx +83 -0
  562. package/src/components/Headers/Three.tsx +88 -25
  563. package/src/components/Headers/index.ts +2 -0
  564. package/src/components/Input/Input.ts +4 -0
  565. package/src/components/Input/InputThree.tsx +212 -0
  566. package/src/components/Input/PhoneNumberInput.tsx +4 -2
  567. package/src/components/Input/PhoneNumberInputTwo.tsx +418 -0
  568. package/src/components/Loader/Loader.tsx +25 -9
  569. package/src/components/Logo/Logo.tsx +53 -34
  570. package/src/components/NewRelease/NewReleaseSheet.tsx +250 -0
  571. package/src/components/NewRelease/index.ts +1 -0
  572. package/src/components/Reels/ReelsSeries/MediaControls/BottomControls.tsx +92 -27
  573. package/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.tsx +81 -1
  574. package/src/components/Reels/ReelsSeries/MediaControls/RightControls.tsx +4 -1
  575. package/src/components/Reels/ReelsSeries/Model/SettingModal.tsx +6 -3
  576. package/src/components/Reels/ReelsSeries/ReelsSeries.tsx +88 -55
  577. package/src/components/Reels/ReelsSeries/ReelsSeriesItem.tsx +92 -30
  578. package/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.tsx +35 -38
  579. package/src/components/Reels/ReelsSeries/types.ts +16 -0
  580. package/src/components/Reels/ReelsSeries/useReelsWatchProgress.ts +85 -0
  581. package/src/components/Reels/ReelsSeries/utils/quality.ts +48 -0
  582. package/src/components/Reels/index.ts +1 -0
  583. package/src/components/Search/One.tsx +8 -5
  584. package/src/components/Search/components/SearchCard.tsx +68 -11
  585. package/src/components/User/PurchaseHistory/PurchaseHistory.tsx +1 -0
  586. package/src/components/User/WatchHistory/WatchHistory.tsx +1 -0
  587. package/src/components/User/WatchLater/WatchLater.tsx +1 -0
  588. package/src/components/common/AppStatusBar.tsx +7 -1
  589. package/src/components/index.ts +1 -0
  590. package/src/constants/dummySections.ts +54 -3
  591. package/src/hooks/Images/index.ts +2 -0
  592. package/src/hooks/Images/useImageLoader.ts +206 -0
  593. package/src/hooks/Images/useImageValidation.ts +36 -0
  594. package/src/hooks/index.ts +3 -0
  595. package/src/hooks/useAdTracking.ts +349 -0
  596. package/src/hooks/useCards.ts +228 -0
  597. package/src/hooks/usePaginatedSection.ts +26 -7
  598. package/src/hooks/useSplashCache.ts +88 -69
  599. package/src/theme/ThemeProvider.tsx +15 -2
  600. package/src/theme/hook/index.ts +0 -1
  601. package/src/theme/hook/useInternalTheme.ts +22 -13
  602. package/src/theme/themes.ts +3 -0
  603. package/src/theme/utils/validateColor.ts +127 -0
  604. package/src/types/content/content-view.types.ts +43 -1
  605. package/src/types/sections/index.ts +7 -4
  606. package/src/utils/colorUtils.ts +70 -0
  607. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js.map +0 -1
  608. package/lib/module/components/Auth/Login/LoginWithEmail.js +0 -314
  609. package/lib/module/components/Auth/Login/LoginWithEmail.js.map +0 -1
  610. package/lib/module/components/Auth/Login/LoginWithPhone.js.map +0 -1
  611. package/lib/module/components/Auth/OTP/OTP.js.map +0 -1
  612. package/lib/module/components/Auth/QrLogin/QrLogin.js +0 -313
  613. package/lib/module/components/Auth/QrLogin/QrLogin.js.map +0 -1
  614. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js +0 -243
  615. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js.map +0 -1
  616. package/lib/module/components/Auth/SignUp/SignUp.js +0 -352
  617. package/lib/module/components/Auth/SignUp/SignUp.js.map +0 -1
  618. package/lib/module/components/Auth/SplashScreen/SplashScreen.js.map +0 -1
  619. package/lib/module/components/Auth/SplashScreen/components/SplashImage/SplashImage.js.map +0 -1
  620. package/lib/module/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.js.map +0 -1
  621. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js.map +0 -1
  622. package/lib/module/components/ContentView/ContentView.js.map +0 -1
  623. package/lib/module/components/ContentView/components/AboutSection.js.map +0 -1
  624. package/lib/module/components/ContentView/components/CastCard.js.map +0 -1
  625. package/lib/module/components/ContentView/components/EpisodeCard.js.map +0 -1
  626. package/lib/module/components/ContentView/components/GenreTags.js.map +0 -1
  627. package/lib/module/components/ContentView/components/HeroBanner.js.map +0 -1
  628. package/lib/module/components/ContentView/components/MiniInfo.js.map +0 -1
  629. package/lib/module/components/ContentView/components/PlayButton.js.map +0 -1
  630. package/lib/module/components/ContentView/components/Title.js.map +0 -1
  631. package/lib/module/components/ContentView/components/TrailerButton.js.map +0 -1
  632. package/lib/module/theme/hook/useThemeStatusBar.js +0 -33
  633. package/lib/module/theme/hook/useThemeStatusBar.js.map +0 -1
  634. package/lib/typescript/src/components/Auth/ForgotPassword/ForgotPassword.d.ts.map +0 -1
  635. package/lib/typescript/src/components/Auth/Login/LoginWithEmail.d.ts.map +0 -1
  636. package/lib/typescript/src/components/Auth/Login/LoginWithPhone.d.ts.map +0 -1
  637. package/lib/typescript/src/components/Auth/OTP/OTP.d.ts.map +0 -1
  638. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts.map +0 -1
  639. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts.map +0 -1
  640. package/lib/typescript/src/components/Auth/SignUp/SignUp.d.ts.map +0 -1
  641. package/lib/typescript/src/components/Auth/SplashScreen/SplashScreen.d.ts.map +0 -1
  642. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashImage/SplashImage.d.ts.map +0 -1
  643. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.d.ts.map +0 -1
  644. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +0 -1
  645. package/lib/typescript/src/components/ContentView/ContentView.d.ts +0 -15
  646. package/lib/typescript/src/components/ContentView/ContentView.d.ts.map +0 -1
  647. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts.map +0 -1
  648. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts.map +0 -1
  649. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts.map +0 -1
  650. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts.map +0 -1
  651. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts.map +0 -1
  652. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts.map +0 -1
  653. package/lib/typescript/src/components/ContentView/components/PlayButton.d.ts.map +0 -1
  654. package/lib/typescript/src/components/ContentView/components/Title.d.ts.map +0 -1
  655. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts.map +0 -1
  656. package/lib/typescript/src/theme/hook/useThemeStatusBar.d.ts +0 -10
  657. package/lib/typescript/src/theme/hook/useThemeStatusBar.d.ts.map +0 -1
  658. package/src/components/Auth/Login/LoginWithEmail.tsx +0 -441
  659. package/src/components/Auth/QrLogin/QrLogin.tsx +0 -342
  660. package/src/components/Auth/QrLogin/components/QrViewArea.tsx +0 -329
  661. package/src/components/Auth/SignUp/SignUp.tsx +0 -462
  662. package/src/theme/hook/useThemeStatusBar.ts +0 -42
  663. /package/lib/typescript/src/components/Auth/{SplashScreen → One/SplashScreen}/components/SplashLottie/SplashLottie.d.ts +0 -0
  664. /package/lib/typescript/src/components/Auth/{SplashScreen → One/SplashScreen}/components/SplashVideo/SplashVideo.d.ts +0 -0
  665. /package/lib/typescript/src/components/Auth/{SplashScreen → Two/SplashScreen}/components/SplashImage/SplashImage.d.ts +0 -0
  666. /package/lib/typescript/src/components/ContentView/{components → One/components}/PlayButton.d.ts +0 -0
  667. /package/lib/typescript/src/components/ContentView/{components → One/components}/TrailerButton.d.ts +0 -0
@@ -0,0 +1,935 @@
1
+ import {
2
+ StatusBar,
3
+ StyleSheet,
4
+ TouchableOpacity,
5
+ View,
6
+ useWindowDimensions,
7
+ type ViewToken,
8
+ type AccessibilityProps,
9
+ } from 'react-native';
10
+ import React, {
11
+ memo,
12
+ useCallback,
13
+ useEffect,
14
+ useMemo,
15
+ useRef,
16
+ useState,
17
+ } from 'react';
18
+ import LinearGradient from 'react-native-linear-gradient';
19
+ import { moderateScale, verticalScale } from 'react-native-size-matters';
20
+ import Animated, {
21
+ Extrapolation,
22
+ interpolate,
23
+ useAnimatedScrollHandler,
24
+ useAnimatedStyle,
25
+ useSharedValue,
26
+ type SharedValue,
27
+ } from 'react-native-reanimated';
28
+ import FastImage from 'react-native-fast-image';
29
+ import { ActivityIndicator } from 'react-native';
30
+ import { Play, Plus, CheckCircle2, Info } from 'lucide-react-native';
31
+ import { Text } from '../../../../Text';
32
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
33
+ import SkeletonPlaceholder from 'react-native-skeleton-placeholder';
34
+ import type { ISectionContent } from '../../../../../types';
35
+ import type { ITheme, ThemeOverride } from '../../../../../theme/themes';
36
+ import { useInternalTheme } from '../../../../../theme/hook/useInternalTheme';
37
+
38
+ type SkeletonItem = {
39
+ _id: string;
40
+ isSkeleton: true;
41
+ };
42
+
43
+ const SkeletonGradient = memo<{ theme: ITheme }>(({ theme }) => {
44
+ const gradients = [
45
+ {
46
+ colors: [theme.colors.background, 'rgba(0,0,0,0)'],
47
+ style: {
48
+ top: 0,
49
+ height: verticalScale(SLIDER_HEIGHT) / GRADIENT_DIVIDER_BOTTOM,
50
+ },
51
+ },
52
+ {
53
+ colors: ['rgba(0,0,0,0)', theme.colors.background],
54
+ style: { bottom: 0 },
55
+ },
56
+ ];
57
+
58
+ return (
59
+ <>
60
+ {gradients.map((g, i) => (
61
+ <LinearGradient
62
+ key={i}
63
+ colors={g.colors}
64
+ pointerEvents="none"
65
+ style={[StyleSheet.absoluteFillObject, g.style]}
66
+ />
67
+ ))}
68
+ </>
69
+ );
70
+ });
71
+
72
+ SkeletonGradient.displayName = 'SkeletonGradient';
73
+
74
+ const S = SkeletonPlaceholder.Item;
75
+
76
+ const ContentInfoSkeleton = memo<{ theme: ITheme }>(({ theme }) => {
77
+ const circle = moderateScale(44);
78
+
79
+ return (
80
+ <View
81
+ style={[
82
+ styles.contentInfoContainer,
83
+ { backgroundColor: theme.colors.background },
84
+ ]}
85
+ >
86
+ <SkeletonPlaceholder
87
+ backgroundColor={theme.colors.skeletonBaseColor}
88
+ highlightColor={theme.colors.skeletonHighlightColor}
89
+ >
90
+ <S
91
+ width={moderateScale(140)}
92
+ height={moderateScale(10)}
93
+ borderRadius={6}
94
+ alignSelf="center"
95
+ marginBottom={verticalScale(18)}
96
+ />
97
+ <S
98
+ height={verticalScale(60)}
99
+ justifyContent="center"
100
+ alignItems="center"
101
+ >
102
+ <S
103
+ width={circle}
104
+ height={circle}
105
+ borderRadius={circle / 2}
106
+ position="absolute"
107
+ left={moderateScale(16)}
108
+ />
109
+ <S
110
+ width={moderateScale(140)}
111
+ height={verticalScale(48)}
112
+ borderRadius={6}
113
+ />
114
+ <S
115
+ width={circle}
116
+ height={circle}
117
+ borderRadius={circle / 2}
118
+ position="absolute"
119
+ right={moderateScale(16)}
120
+ />
121
+ </S>
122
+ </SkeletonPlaceholder>
123
+ </View>
124
+ );
125
+ });
126
+
127
+ ContentInfoSkeleton.displayName = 'ContentInfoSkeleton';
128
+
129
+ const SLIDER_HEIGHT = 370;
130
+ const TITLE_IMAGE_HEIGHT = 55;
131
+ const TITLE_IMAGE_WIDTH_PERCENT = '80%';
132
+ // const SKELETON_COUNT = 1;
133
+ const AUTO_PLAY_INTERVAL = 5000;
134
+ const LOOP_MULTIPLIER = 3;
135
+ const VIEWABILITY_THRESHOLD = 50;
136
+ const GRADIENT_DIVIDER_BOTTOM = 2;
137
+ const GRADIENT_DIVIDER_TOP = 1.1;
138
+
139
+ type SliderThreeProps = {
140
+ index?: number;
141
+ data: ISectionContent | null;
142
+ onPressItem?: (item: IContentData) => void;
143
+ isLoading?: boolean;
144
+ theme?: ThemeOverride;
145
+ onToggleWatchlist?: (
146
+ item: IContentData,
147
+ { isFavorite }: { isFavorite: boolean }
148
+ ) => void;
149
+ checkWatchlistStatus?: (
150
+ itemIds: string[]
151
+ ) => Record<string, boolean> | Promise<Record<string, boolean>>;
152
+ } & AccessibilityProps;
153
+
154
+ type BackImageProps = {
155
+ item: IContentData;
156
+ index: number;
157
+ x: SharedValue<number>;
158
+ theme: ITheme;
159
+ sliderDataLength: number;
160
+ width: number;
161
+ };
162
+
163
+ type GradientProps = {
164
+ theme: ITheme;
165
+ };
166
+
167
+ type RenderItemProps = {
168
+ item: IContentData | SkeletonItem;
169
+ index: number;
170
+ x: SharedValue<number>;
171
+ theme: ITheme;
172
+ };
173
+
174
+ type ContentInfoProps = {
175
+ theme: ITheme;
176
+ item: IContentData;
177
+ onPressItem?: (item: IContentData) => void;
178
+ isFavorite?: boolean;
179
+ onToggleWatchlist?: (
180
+ item: IContentData,
181
+ { isFavorite }: { isFavorite: boolean }
182
+ ) => void;
183
+ };
184
+
185
+ const SliderThree: React.FC<SliderThreeProps> = ({
186
+ index = 0,
187
+ data,
188
+ onPressItem,
189
+ isLoading = false,
190
+ theme,
191
+ onToggleWatchlist,
192
+ checkWatchlistStatus,
193
+ accessibilityLabel = 'Netflix style slider',
194
+ accessibilityHint = 'Swipe to view content',
195
+ }) => {
196
+ const { width } = useWindowDimensions();
197
+ const { theme: appliedTheme } = useInternalTheme(theme);
198
+ const scrollX = useSharedValue(0);
199
+ const flatListRef =
200
+ useRef<Animated.FlatList<IContentData | SkeletonItem>>(null);
201
+
202
+ const autoPlayIntervalRef = useRef<NodeJS.Timeout | null>(null);
203
+ const currentIndexRef = useRef(0);
204
+ const isDraggingRef = useRef(false);
205
+ const watchlistCache = useRef<Map<string, boolean>>(new Map());
206
+ const isCheckingRef = useRef<boolean>(false);
207
+ const [isInWatchlist, setIsInWatchlist] = useState<boolean>(false);
208
+ const skeletonItems = useMemo<SkeletonItem[]>(
209
+ () =>
210
+ Array.from({ length: 3 }).map((_, i) => ({
211
+ _id: `skeleton-${i}`,
212
+ isSkeleton: true,
213
+ })),
214
+ []
215
+ );
216
+
217
+ const sliderData = useMemo<(IContentData | SkeletonItem)[]>(() => {
218
+ if (isLoading) return skeletonItems;
219
+
220
+ return (data?.data ?? []).filter(
221
+ (item): item is IContentData => !('type' in item && item.type === 'ads')
222
+ );
223
+ }, [data, isLoading, skeletonItems]);
224
+
225
+ const [currentIndex, setCurrentIndex] = useState(0);
226
+
227
+ useEffect(() => {
228
+ if (
229
+ !checkWatchlistStatus ||
230
+ sliderData.length === 0 ||
231
+ isCheckingRef.current
232
+ ) {
233
+ return;
234
+ }
235
+
236
+ const itemIds = sliderData
237
+ .filter((item): item is IContentData => item !== null && !!item._id)
238
+ .map((item) => item._id);
239
+
240
+ if (itemIds.length === 0) {
241
+ return;
242
+ }
243
+
244
+ const uncachedIds = itemIds.filter((id) => !watchlistCache.current.has(id));
245
+
246
+ if (uncachedIds.length === 0) {
247
+ if (sliderData[currentIndex]?._id) {
248
+ setIsInWatchlist(
249
+ watchlistCache.current.get(sliderData[currentIndex]._id) ?? false
250
+ );
251
+ }
252
+ return;
253
+ }
254
+
255
+ isCheckingRef.current = true;
256
+ (async () => {
257
+ try {
258
+ const result = checkWatchlistStatus(uncachedIds);
259
+ const statusResult = result instanceof Promise ? await result : result;
260
+ Object.entries(statusResult)?.forEach?.(([itemId, status]) => {
261
+ watchlistCache.current.set(itemId, status);
262
+ });
263
+ if (sliderData[currentIndex]?._id) {
264
+ setIsInWatchlist(
265
+ watchlistCache.current.get(sliderData[currentIndex]._id) ?? false
266
+ );
267
+ }
268
+ } catch (error) {
269
+ console.error('Error checking watchlist status:', error);
270
+ uncachedIds?.forEach?.((id) => watchlistCache.current.set(id, false));
271
+ if (sliderData[currentIndex]?._id) {
272
+ setIsInWatchlist(false);
273
+ }
274
+ } finally {
275
+ isCheckingRef.current = false;
276
+ }
277
+ })();
278
+ }, [sliderData, checkWatchlistStatus, currentIndex]);
279
+
280
+ const infiniteData = useMemo(() => {
281
+ if (!sliderData.length) return [];
282
+
283
+ if (isLoading) return sliderData;
284
+
285
+ return Array.from({ length: LOOP_MULTIPLIER }).flatMap(() => sliderData);
286
+ }, [sliderData, isLoading]);
287
+
288
+ const initialScrollIndex = useMemo(
289
+ () => (isLoading ? 0 : sliderData.length),
290
+ [isLoading, sliderData.length]
291
+ );
292
+
293
+ const [autoPlay, setAutoPlay] = useState(true);
294
+
295
+ const normalizeIndex = useCallback(
296
+ (idx: number) => (sliderData.length ? idx % sliderData.length : 0),
297
+ [sliderData.length]
298
+ );
299
+
300
+ const resetToMiddleSection = useCallback(() => {
301
+ const totalItems = sliderData.length;
302
+ const rawIndex = currentIndexRef.current;
303
+ const maxIndex = infiniteData.length - 1;
304
+
305
+ if (rawIndex < totalItems || rawIndex >= totalItems * 2) {
306
+ const middleIndex = totalItems + normalizeIndex(rawIndex);
307
+ if (middleIndex >= 0 && middleIndex <= maxIndex && flatListRef.current) {
308
+ flatListRef.current.scrollToIndex({
309
+ index: middleIndex,
310
+ animated: false,
311
+ });
312
+ currentIndexRef.current = middleIndex;
313
+ }
314
+ }
315
+ }, [sliderData.length, normalizeIndex, infiniteData.length]);
316
+
317
+ const onViewableItemsChangedRef = useRef<
318
+ ({ viewableItems }: { viewableItems: ViewToken[] }) => void
319
+ >(() => {});
320
+
321
+ const onViewableItemsChanged = useCallback(
322
+ ({ viewableItems }: { viewableItems: ViewToken[] }) => {
323
+ if (!viewableItems.length) return;
324
+
325
+ const rawIndex = viewableItems[0]?.index ?? 0;
326
+ currentIndexRef.current = rawIndex;
327
+ setCurrentIndex(normalizeIndex(rawIndex));
328
+ },
329
+ [normalizeIndex]
330
+ );
331
+
332
+ useEffect(() => {
333
+ onViewableItemsChangedRef.current = onViewableItemsChanged;
334
+ }, [onViewableItemsChanged]);
335
+
336
+ const stableOnViewableItemsChanged = useCallback(
337
+ ({ viewableItems }: { viewableItems: ViewToken[] }) => {
338
+ onViewableItemsChangedRef.current?.({ viewableItems });
339
+ },
340
+ []
341
+ );
342
+
343
+ const viewabilityConfigCallbackPairs = useRef([
344
+ {
345
+ viewabilityConfig: {
346
+ itemVisiblePercentThreshold: VIEWABILITY_THRESHOLD,
347
+ waitForInteraction: false,
348
+ },
349
+ onViewableItemsChanged: stableOnViewableItemsChanged,
350
+ },
351
+ ]);
352
+
353
+ const onScroll = useAnimatedScrollHandler({
354
+ onScroll: (event) => {
355
+ scrollX.value = event.contentOffset.x;
356
+ },
357
+ });
358
+
359
+ const handleScrollBeginDrag = useCallback(() => {
360
+ setAutoPlay(false);
361
+ isDraggingRef.current = true;
362
+ }, []);
363
+
364
+ const handleMomentumScrollEnd = useCallback(() => {
365
+ isDraggingRef.current = false;
366
+ resetToMiddleSection();
367
+ setAutoPlay(true);
368
+ }, [resetToMiddleSection]);
369
+ const handleToggleWatchlist = useCallback(
370
+ async (item: IContentData, { isFavorite }: { isFavorite: boolean }) => {
371
+ if (!item._id) return;
372
+
373
+ const newStatus = !isFavorite;
374
+ setIsInWatchlist(newStatus);
375
+ watchlistCache.current.set(item._id, newStatus);
376
+
377
+ try {
378
+ if (onToggleWatchlist) {
379
+ await onToggleWatchlist(item, { isFavorite });
380
+ }
381
+ } catch (error) {
382
+ console.error('Error toggling watchlist:', error);
383
+ const revertedStatus = isFavorite;
384
+ setIsInWatchlist(revertedStatus);
385
+ watchlistCache.current.set(item._id, revertedStatus);
386
+ }
387
+ },
388
+ [onToggleWatchlist]
389
+ );
390
+
391
+ // Initial sync (scrollX, currentIndexRef) + debounced currentIndex; single effect to limit useEffect count
392
+ useEffect(() => {
393
+ if (sliderData.length > 0) {
394
+ currentIndexRef.current = initialScrollIndex;
395
+ if (!isLoading && width > 0) scrollX.value = initialScrollIndex * width;
396
+ }
397
+ if (!sliderData.length) return;
398
+ const t = setTimeout(
399
+ () => setCurrentIndex(normalizeIndex(currentIndexRef.current)),
400
+ 150
401
+ );
402
+ return () => clearTimeout(t);
403
+ }, [
404
+ sliderData.length,
405
+ initialScrollIndex,
406
+ isLoading,
407
+ width,
408
+ normalizeIndex,
409
+ scrollX,
410
+ ]);
411
+
412
+ useEffect(() => {
413
+ onViewableItemsChangedRef.current = onViewableItemsChanged;
414
+ }, [onViewableItemsChanged]);
415
+
416
+ // Auto-play interval + deferred image preload (single effect to limit useEffect count)
417
+ useEffect(() => {
418
+ if (isLoading || sliderData.length === 0) return;
419
+
420
+ const preloadId = setTimeout(() => {
421
+ const uris: string[] = [];
422
+ const indices = [
423
+ currentIndex,
424
+ (currentIndex - 1 + sliderData.length) % sliderData.length,
425
+ (currentIndex + 1) % sliderData.length,
426
+ ];
427
+ for (const i of indices) {
428
+ const slideItem = sliderData[i];
429
+ if (slideItem && !('isSkeleton' in slideItem)) {
430
+ const poster = slideItem.poster?.trim?.();
431
+ if (poster?.length) uris.push(poster);
432
+ const title = slideItem.title_image?.trim?.();
433
+ if (title?.length) uris.push(title);
434
+ }
435
+ }
436
+ if (uris.length > 0) FastImage.preload(uris.map((uri) => ({ uri })));
437
+ }, 0);
438
+
439
+ if (!autoPlay || sliderData.length <= 1) {
440
+ return () => clearTimeout(preloadId);
441
+ }
442
+ autoPlayIntervalRef.current = setInterval(() => {
443
+ if (!isDraggingRef.current && flatListRef.current) {
444
+ const nextIndex = currentIndexRef.current + 1;
445
+ const maxIndex = infiniteData.length - 1;
446
+ if (nextIndex >= 0 && nextIndex <= maxIndex) {
447
+ flatListRef.current.scrollToIndex({
448
+ index: nextIndex,
449
+ animated: true,
450
+ });
451
+ }
452
+ }
453
+ }, AUTO_PLAY_INTERVAL);
454
+ return () => {
455
+ clearTimeout(preloadId);
456
+ if (autoPlayIntervalRef.current) {
457
+ clearInterval(autoPlayIntervalRef.current);
458
+ }
459
+ };
460
+ }, [
461
+ autoPlay,
462
+ sliderData.length,
463
+ infiniteData.length,
464
+ currentIndex,
465
+ sliderData,
466
+ isLoading,
467
+ ]);
468
+
469
+ const renderItem = useCallback(
470
+ ({
471
+ item: listItem,
472
+ index: itemIndex,
473
+ }: {
474
+ item: IContentData | SkeletonItem;
475
+ index: number;
476
+ }) => (
477
+ <RenderItem
478
+ item={listItem}
479
+ index={itemIndex}
480
+ x={scrollX}
481
+ theme={appliedTheme}
482
+ />
483
+ ),
484
+ [scrollX, appliedTheme]
485
+ );
486
+
487
+ const keyExtractor = useCallback(
488
+ (listItem: IContentData | SkeletonItem, i: number) =>
489
+ `item-${listItem._id ?? i}-${i}`,
490
+ []
491
+ );
492
+
493
+ const getItemLayout = useCallback(
494
+ (
495
+ _: ArrayLike<IContentData | SkeletonItem> | null | undefined,
496
+ i: number
497
+ ) => ({
498
+ length: width,
499
+ offset: width * i,
500
+ index: i,
501
+ }),
502
+ [width]
503
+ );
504
+
505
+ const backImageList = useMemo(() => {
506
+ if (isLoading) return null;
507
+ return sliderData.map((item, i) => (
508
+ <BackImage
509
+ key={`bg-${i}-${index}`}
510
+ item={item as IContentData}
511
+ index={i}
512
+ x={scrollX}
513
+ theme={appliedTheme}
514
+ sliderDataLength={sliderData.length}
515
+ width={width}
516
+ />
517
+ ));
518
+ }, [isLoading, sliderData, index, scrollX, appliedTheme, width]);
519
+
520
+ if (!data) {
521
+ return null;
522
+ }
523
+
524
+ return (
525
+ <View
526
+ style={styles.container}
527
+ accessibilityLabel={accessibilityLabel}
528
+ accessibilityHint={accessibilityHint}
529
+ >
530
+ <StatusBar translucent backgroundColor="transparent" />
531
+
532
+ {backImageList}
533
+
534
+ <Gradient theme={appliedTheme} />
535
+
536
+ <Animated.FlatList
537
+ ref={flatListRef}
538
+ data={infiniteData}
539
+ horizontal
540
+ pagingEnabled
541
+ bounces={false}
542
+ showsHorizontalScrollIndicator={false}
543
+ initialScrollIndex={initialScrollIndex}
544
+ getItemLayout={getItemLayout}
545
+ onScroll={onScroll}
546
+ scrollEventThrottle={16}
547
+ viewabilityConfigCallbackPairs={viewabilityConfigCallbackPairs.current}
548
+ onScrollBeginDrag={handleScrollBeginDrag}
549
+ onMomentumScrollEnd={handleMomentumScrollEnd}
550
+ renderItem={renderItem}
551
+ keyExtractor={keyExtractor}
552
+ removeClippedSubviews={true}
553
+ maxToRenderPerBatch={5}
554
+ windowSize={5}
555
+ initialNumToRender={3}
556
+ updateCellsBatchingPeriod={100}
557
+ />
558
+
559
+ {isLoading ? (
560
+ <ContentInfoSkeleton theme={appliedTheme} />
561
+ ) : (
562
+ sliderData[currentIndex] &&
563
+ !('isSkeleton' in sliderData[currentIndex]) && (
564
+ <ContentInfo
565
+ theme={appliedTheme}
566
+ item={sliderData[currentIndex]}
567
+ onPressItem={onPressItem}
568
+ isFavorite={isInWatchlist}
569
+ onToggleWatchlist={handleToggleWatchlist}
570
+ />
571
+ )
572
+ )}
573
+ </View>
574
+ );
575
+ };
576
+
577
+ export default memo(SliderThree);
578
+
579
+ const BackImage = memo<BackImageProps>(
580
+ ({ item, index, x, theme, sliderDataLength, width }) => {
581
+ const [loadError, setLoadError] = useState(false);
582
+ const posterUri = item.poster?.trim?.() ?? '';
583
+ const hasValidUri = posterUri.length > 0;
584
+ const prevPosterUriRef = useRef(posterUri);
585
+
586
+ const handleLoad = useCallback(() => setLoadError(false), []);
587
+ const handleError = useCallback(() => setLoadError(true), []);
588
+
589
+ // Reset error when URI changes; retry once after load error (transient failures)
590
+ useEffect(() => {
591
+ if (prevPosterUriRef.current !== posterUri) {
592
+ prevPosterUriRef.current = posterUri;
593
+ setLoadError(false);
594
+ }
595
+ if (!loadError || !hasValidUri) return;
596
+ const id = setTimeout(() => setLoadError(false), 1000);
597
+ return () => clearTimeout(id);
598
+ }, [posterUri, loadError, hasValidUri]);
599
+
600
+ const animatedStyle = useAnimatedStyle(() => {
601
+ 'worklet';
602
+ const totalWidth = sliderDataLength * width;
603
+ if (totalWidth <= 0 || width <= 0) {
604
+ return { opacity: index === 0 ? 1 : 0 };
605
+ }
606
+ const scrollInWidth = ((x.value % totalWidth) + totalWidth) % totalWidth;
607
+ const normalizedScroll = scrollInWidth / width - 1;
608
+ const distance = Math.abs(normalizedScroll - index);
609
+ if (distance < 0.01) return { opacity: 1 };
610
+ const raw = distance <= 1 ? 1 - distance : 0;
611
+ const opacity = Math.min(1, Math.max(0, raw));
612
+ return { opacity };
613
+ });
614
+
615
+ return (
616
+ <Animated.View
617
+ style={[
618
+ StyleSheet.absoluteFillObject,
619
+ {
620
+ width,
621
+ height: verticalScale(SLIDER_HEIGHT),
622
+ },
623
+ animatedStyle,
624
+ ]}
625
+ >
626
+ {hasValidUri && !loadError && (
627
+ <FastImage
628
+ key={`poster-${item._id}-${posterUri}`}
629
+ source={{
630
+ uri: posterUri,
631
+ priority: FastImage.priority.normal,
632
+ cache: FastImage.cacheControl.immutable,
633
+ }}
634
+ style={[
635
+ StyleSheet.absoluteFillObject,
636
+ {
637
+ width,
638
+ height: verticalScale(SLIDER_HEIGHT),
639
+ backgroundColor: theme.colors.black,
640
+ },
641
+ ]}
642
+ resizeMode={FastImage.resizeMode.cover}
643
+ onLoad={handleLoad}
644
+ onError={handleError}
645
+ />
646
+ )}
647
+ {(!hasValidUri || loadError) && (
648
+ <View
649
+ style={[
650
+ StyleSheet.absoluteFillObject,
651
+ {
652
+ width,
653
+ height: verticalScale(SLIDER_HEIGHT),
654
+ backgroundColor: theme.colors.black,
655
+ },
656
+ ]}
657
+ />
658
+ )}
659
+ </Animated.View>
660
+ );
661
+ }
662
+ );
663
+
664
+ BackImage.displayName = 'BackImage';
665
+
666
+ const Gradient = memo<GradientProps>(({ theme }) => {
667
+ const { width } = useWindowDimensions();
668
+
669
+ return (
670
+ <View
671
+ pointerEvents="none"
672
+ style={[
673
+ styles.gradientContainer,
674
+ { width, height: verticalScale(SLIDER_HEIGHT) },
675
+ ]}
676
+ >
677
+ <LinearGradient
678
+ colors={[theme.colors.background, 'rgba(0,0,0,0)']}
679
+ style={styles.gradientBottom}
680
+ pointerEvents="none"
681
+ />
682
+ <LinearGradient
683
+ colors={['rgba(0,0,0,0)', theme.colors.background]}
684
+ style={styles.gradientTop}
685
+ pointerEvents="none"
686
+ />
687
+ </View>
688
+ );
689
+ });
690
+
691
+ Gradient.displayName = 'Gradient';
692
+
693
+ const RenderItem = memo<RenderItemProps>(({ item, index, x, theme }) => {
694
+ const { width } = useWindowDimensions();
695
+ const titleUri =
696
+ 'isSkeleton' in item ? '' : (item.title_image?.trim?.() ?? '');
697
+ const hasTitleUri = titleUri.length > 0;
698
+ const [titleLoadError, setTitleLoadError] = useState(false);
699
+
700
+ useEffect(() => {
701
+ setTitleLoadError(false);
702
+ }, [titleUri]);
703
+
704
+ const handleTitleLoad = useCallback(() => setTitleLoadError(false), []);
705
+ const handleTitleError = useCallback(() => setTitleLoadError(true), []);
706
+
707
+ const animatedStyle = useAnimatedStyle(() => ({
708
+ opacity: interpolate(
709
+ x.value,
710
+ [(index - 1) * width, index * width, (index + 1) * width],
711
+ [-0.5, 1, -0.5],
712
+ Extrapolation.CLAMP
713
+ ),
714
+ }));
715
+
716
+ if ('isSkeleton' in item) {
717
+ return (
718
+ <View
719
+ style={{
720
+ width,
721
+ height: verticalScale(SLIDER_HEIGHT),
722
+ position: 'relative',
723
+ overflow: 'hidden',
724
+ }}
725
+ >
726
+ <SkeletonPlaceholder
727
+ backgroundColor={theme.colors.skeletonBaseColor}
728
+ highlightColor={theme.colors.skeletonHighlightColor}
729
+ >
730
+ <SkeletonPlaceholder.Item
731
+ width={width}
732
+ height={verticalScale(SLIDER_HEIGHT)}
733
+ />
734
+ </SkeletonPlaceholder>
735
+
736
+ <SkeletonGradient theme={theme} />
737
+ </View>
738
+ );
739
+ }
740
+
741
+ return (
742
+ <View style={{ width, height: verticalScale(SLIDER_HEIGHT) }}>
743
+ {hasTitleUri && !titleLoadError && (
744
+ <Animated.View style={[styles.titleImage, animatedStyle]}>
745
+ <FastImage
746
+ key={`title-${item._id}-${titleUri}`}
747
+ source={{
748
+ uri: titleUri,
749
+ priority: FastImage.priority.normal,
750
+ cache: FastImage.cacheControl.immutable,
751
+ }}
752
+ style={{ width: '100%', height: '100%' }}
753
+ resizeMode={FastImage.resizeMode.contain}
754
+ onLoad={handleTitleLoad}
755
+ onError={handleTitleError}
756
+ />
757
+ </Animated.View>
758
+ )}
759
+ </View>
760
+ );
761
+ });
762
+
763
+ RenderItem.displayName = 'RenderItem';
764
+
765
+ const ContentInfo = memo<ContentInfoProps>(
766
+ ({ theme, item, onPressItem, isFavorite = false, onToggleWatchlist }) => {
767
+ const [isWatchlistLoading, setIsWatchlistLoading] =
768
+ useState<boolean>(false);
769
+ const handleWatchlistPress = useCallback(async () => {
770
+ if (!item._id) return;
771
+
772
+ setIsWatchlistLoading(true);
773
+
774
+ try {
775
+ await onToggleWatchlist?.(item, { isFavorite });
776
+ } catch (error) {
777
+ console.error('Error toggling watchlist:', error);
778
+ } finally {
779
+ setIsWatchlistLoading(false);
780
+ }
781
+ }, [item, isFavorite, onToggleWatchlist]);
782
+ const handlePlayPress = useCallback(() => {
783
+ onPressItem?.(item);
784
+ }, [item, onPressItem]);
785
+
786
+ const handleInfoPress = useCallback(() => {
787
+ onPressItem?.(item);
788
+ }, [item, onPressItem]);
789
+
790
+ const genresText = useMemo(
791
+ () => item.genres?.map((g) => g.name).join(' • ') ?? '',
792
+ [item.genres]
793
+ );
794
+
795
+ return (
796
+ <View
797
+ style={[
798
+ styles.contentInfoContainer,
799
+ { backgroundColor: theme.colors.background },
800
+ ]}
801
+ >
802
+ {genresText ? (
803
+ <Text style={[styles.genreText, { color: theme.colors.white }]}>
804
+ {genresText}
805
+ </Text>
806
+ ) : null}
807
+
808
+ <View style={styles.btnContainer}>
809
+ <TouchableOpacity
810
+ style={styles.mylistBtn}
811
+ onPress={handleWatchlistPress}
812
+ accessibilityRole="button"
813
+ accessibilityLabel={
814
+ isFavorite ? 'Remove from My List' : 'Add to My List'
815
+ }
816
+ >
817
+ {isWatchlistLoading ? (
818
+ <ActivityIndicator color={theme.colors.textPrimary} />
819
+ ) : isFavorite ? (
820
+ <CheckCircle2 size={22} color={theme.colors.textPrimary} />
821
+ ) : (
822
+ <Plus size={22} color={theme.colors.textPrimary} />
823
+ )}
824
+ <Text style={{ color: theme.colors.textPrimary }}>My List</Text>
825
+ </TouchableOpacity>
826
+
827
+ <TouchableOpacity
828
+ style={[styles.playBtn, { backgroundColor: theme.colors.button }]}
829
+ onPress={handlePlayPress}
830
+ accessibilityRole="button"
831
+ accessibilityLabel="Play content"
832
+ >
833
+ <Play size={20} color={theme.colors.buttonText} />
834
+ <Text style={[styles.playText, { color: theme.colors.buttonText }]}>
835
+ Play
836
+ </Text>
837
+ </TouchableOpacity>
838
+
839
+ <TouchableOpacity
840
+ style={styles.infoBtn}
841
+ onPress={handleInfoPress}
842
+ activeOpacity={0.8}
843
+ accessibilityRole="button"
844
+ accessibilityLabel="View content information"
845
+ >
846
+ <Info size={22} color={theme.colors.textPrimary} />
847
+ <Text style={{ color: theme.colors.textPrimary }}>Info</Text>
848
+ </TouchableOpacity>
849
+ </View>
850
+ </View>
851
+ );
852
+ }
853
+ );
854
+
855
+ ContentInfo.displayName = 'ContentInfo';
856
+
857
+ const styles = StyleSheet.create({
858
+ container: {
859
+ flex: 1,
860
+ },
861
+ gradientContainer: {
862
+ ...StyleSheet.absoluteFillObject,
863
+ },
864
+ gradientBottom: {
865
+ position: 'absolute',
866
+ top: 0,
867
+ height: verticalScale(SLIDER_HEIGHT) / GRADIENT_DIVIDER_BOTTOM,
868
+ width: '100%',
869
+ },
870
+ gradientTop: {
871
+ position: 'absolute',
872
+ bottom: 0,
873
+ height: verticalScale(SLIDER_HEIGHT) / GRADIENT_DIVIDER_TOP,
874
+ width: '100%',
875
+ },
876
+ titleImage: {
877
+ position: 'absolute',
878
+ bottom: 0,
879
+ height: verticalScale(TITLE_IMAGE_HEIGHT),
880
+ width: TITLE_IMAGE_WIDTH_PERCENT,
881
+ alignSelf: 'center',
882
+ },
883
+ contentInfoContainer: {
884
+ paddingHorizontal: moderateScale(16),
885
+ paddingTop: moderateScale(12),
886
+ paddingBottom: verticalScale(15),
887
+ },
888
+ genreText: {
889
+ fontSize: moderateScale(12),
890
+ textAlign: 'center',
891
+ marginBottom: verticalScale(16),
892
+ },
893
+ btnContainer: {
894
+ flexDirection: 'row',
895
+ justifyContent: 'center',
896
+ alignItems: 'center',
897
+ position: 'relative',
898
+ minHeight: verticalScale(50),
899
+ paddingVertical: verticalScale(4),
900
+ },
901
+ mylistBtn: {
902
+ alignItems: 'center',
903
+ justifyContent: 'center',
904
+ gap: verticalScale(6),
905
+ position: 'absolute',
906
+ left: moderateScale(16),
907
+ paddingVertical: verticalScale(8),
908
+ paddingHorizontal: moderateScale(4),
909
+ },
910
+ playBtn: {
911
+ flexDirection: 'row',
912
+ alignItems: 'center',
913
+ justifyContent: 'center',
914
+ backgroundColor: '#fff',
915
+ paddingHorizontal: moderateScale(28),
916
+ paddingVertical: verticalScale(10),
917
+ borderRadius: 4,
918
+ gap: moderateScale(8),
919
+ minWidth: moderateScale(90),
920
+ },
921
+ playText: {
922
+ color: '#000',
923
+ fontSize: moderateScale(18),
924
+ fontWeight: '600',
925
+ },
926
+ infoBtn: {
927
+ alignItems: 'center',
928
+ justifyContent: 'center',
929
+ gap: verticalScale(6),
930
+ position: 'absolute',
931
+ right: moderateScale(16),
932
+ paddingVertical: verticalScale(8),
933
+ paddingHorizontal: moderateScale(4),
934
+ },
935
+ });