@zezosoft/zezo-ott-react-native-ui-kit 1.0.2 → 1.0.4

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 (533) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +6 -0
  3. package/lib/module/assets/animations/135037-payment-processing-error.json +1347 -1
  4. package/lib/module/assets/animations/7227-vui-animation.json +3377 -1
  5. package/lib/module/assets/animations/heart.json +788 -0
  6. package/lib/module/assets/animations/succesfull-payment.json +2379 -1
  7. package/lib/module/assets/animations/voice-icon.json +542 -1
  8. package/lib/module/components/Account/Account.js +6 -6
  9. package/lib/module/components/Account/Account.js.map +1 -1
  10. package/lib/module/components/Account/index.js +1 -1
  11. package/lib/module/components/Account/index.js.map +1 -1
  12. package/lib/module/components/Alert/UAAlert.js +138 -0
  13. package/lib/module/components/Alert/UAAlert.js.map +1 -0
  14. package/lib/module/components/Alert/index.js +4 -0
  15. package/lib/module/components/Alert/index.js.map +1 -0
  16. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js +9 -9
  17. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js.map +1 -1
  18. package/lib/module/components/Auth/Login/LoginWithEmail.js +10 -10
  19. package/lib/module/components/Auth/Login/LoginWithEmail.js.map +1 -1
  20. package/lib/module/components/Auth/Login/LoginWithPhone.js +10 -10
  21. package/lib/module/components/Auth/Login/LoginWithPhone.js.map +1 -1
  22. package/lib/module/components/Auth/OTP/OTP.js +9 -9
  23. package/lib/module/components/Auth/OTP/OTP.js.map +1 -1
  24. package/lib/module/components/Auth/QrLogin/QrLogin.js +267 -0
  25. package/lib/module/components/Auth/QrLogin/QrLogin.js.map +1 -0
  26. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js +178 -0
  27. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js.map +1 -0
  28. package/lib/module/components/Auth/SignUp/SignUp.js +10 -10
  29. package/lib/module/components/Auth/SignUp/SignUp.js.map +1 -1
  30. package/lib/module/components/Auth/SplashScreen/SplashScreen.js +6 -6
  31. package/lib/module/components/Auth/SplashScreen/SplashScreen.js.map +1 -1
  32. package/lib/module/components/Auth/SplashScreen/components/SplashImage/SplashImage.js +1 -6
  33. package/lib/module/components/Auth/SplashScreen/components/SplashImage/SplashImage.js.map +1 -1
  34. package/lib/module/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.js +1 -1
  35. package/lib/module/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.js.map +1 -1
  36. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js +1 -1
  37. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js.map +1 -1
  38. package/lib/module/components/Auth/index.js +9 -7
  39. package/lib/module/components/Auth/index.js.map +1 -1
  40. package/lib/module/components/BackgroundLayout/BackgroundLayout.js +1 -1
  41. package/lib/module/components/BackgroundLayout/BackgroundLayout.js.map +1 -1
  42. package/lib/module/components/BlogView/BlogView.js +4 -10
  43. package/lib/module/components/BlogView/BlogView.js.map +1 -1
  44. package/lib/module/components/BlogView/index.js +1 -1
  45. package/lib/module/components/BlogView/index.js.map +1 -1
  46. package/lib/module/components/Button/BackBtn.js +1 -1
  47. package/lib/module/components/Button/BackBtn.js.map +1 -1
  48. package/lib/module/components/Button/MenuBtn.js +1 -1
  49. package/lib/module/components/Button/MenuBtn.js.map +1 -1
  50. package/lib/module/components/Button/PrimaryBtn.js +2 -2
  51. package/lib/module/components/Button/PrimaryBtn.js.map +1 -1
  52. package/lib/module/components/Button/TextButton.js +2 -2
  53. package/lib/module/components/Button/TextButton.js.map +1 -1
  54. package/lib/module/components/Button/index.js +3 -3
  55. package/lib/module/components/Button/index.js.map +1 -1
  56. package/lib/module/components/Content/Card/Category/Category.js +2 -2
  57. package/lib/module/components/Content/Card/Category/Category.js.map +1 -1
  58. package/lib/module/components/Content/Card/NowWatching/NowWatching.js +6 -6
  59. package/lib/module/components/Content/Card/NowWatching/NowWatching.js.map +1 -1
  60. package/lib/module/components/Content/Card/Sliders/Styles/One.js +3 -3
  61. package/lib/module/components/Content/Card/Sliders/Styles/One.js.map +1 -1
  62. package/lib/module/components/Content/Card/Sliders/Styles/Two.js +4 -4
  63. package/lib/module/components/Content/Card/Sliders/Styles/Two.js.map +1 -1
  64. package/lib/module/components/Content/Card/Sliders/index.js +2 -2
  65. package/lib/module/components/Content/Card/Sliders/index.js.map +1 -1
  66. package/lib/module/components/Content/Card/Styles/Five.js +4 -4
  67. package/lib/module/components/Content/Card/Styles/Five.js.map +1 -1
  68. package/lib/module/components/Content/Card/Styles/Four.js +4 -4
  69. package/lib/module/components/Content/Card/Styles/Four.js.map +1 -1
  70. package/lib/module/components/Content/Card/Styles/One.js +4 -4
  71. package/lib/module/components/Content/Card/Styles/One.js.map +1 -1
  72. package/lib/module/components/Content/Card/Styles/RotateInOut.js +4 -4
  73. package/lib/module/components/Content/Card/Styles/RotateInOut.js.map +1 -1
  74. package/lib/module/components/Content/Card/Styles/Six.js +5 -5
  75. package/lib/module/components/Content/Card/Styles/Six.js.map +1 -1
  76. package/lib/module/components/Content/Card/Styles/Three.js +4 -4
  77. package/lib/module/components/Content/Card/Styles/Three.js.map +1 -1
  78. package/lib/module/components/Content/Card/Styles/TopTen.js +5 -5
  79. package/lib/module/components/Content/Card/Styles/TopTen.js.map +1 -1
  80. package/lib/module/components/Content/Card/Styles/Two.js +4 -4
  81. package/lib/module/components/Content/Card/Styles/Two.js.map +1 -1
  82. package/lib/module/components/Content/Card/components/CardPoster.js +1 -10
  83. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  84. package/lib/module/components/Content/Card/components/NavigateToMore.js +2 -2
  85. package/lib/module/components/Content/Card/components/NavigateToMore.js.map +1 -1
  86. package/lib/module/components/Content/Card/components/NoContentFallback.js +3 -3
  87. package/lib/module/components/Content/Card/components/NoContentFallback.js.map +1 -1
  88. package/lib/module/components/Content/Card/components/ShowAllButton.js +1 -1
  89. package/lib/module/components/Content/Card/components/ShowAllButton.js.map +1 -1
  90. package/lib/module/components/Content/Card/components/ThumbnailCard.js +1 -1
  91. package/lib/module/components/Content/Card/components/ThumbnailCard.js.map +1 -1
  92. package/lib/module/components/Content/Card/index.js +10 -10
  93. package/lib/module/components/Content/Card/index.js.map +1 -1
  94. package/lib/module/components/Content/Content.js +4 -4
  95. package/lib/module/components/Content/Content.js.map +1 -1
  96. package/lib/module/components/Content/Sections.js +2 -2
  97. package/lib/module/components/Content/Sections.js.map +1 -1
  98. package/lib/module/components/ContentView/ContentView.js +8 -9
  99. package/lib/module/components/ContentView/ContentView.js.map +1 -1
  100. package/lib/module/components/ContentView/MoreContentList.js +6 -6
  101. package/lib/module/components/ContentView/MoreContentList.js.map +1 -1
  102. package/lib/module/components/ContentView/components/AboutSection.js +2 -2
  103. package/lib/module/components/ContentView/components/AboutSection.js.map +1 -1
  104. package/lib/module/components/ContentView/components/CastCard.js +2 -2
  105. package/lib/module/components/ContentView/components/CastCard.js.map +1 -1
  106. package/lib/module/components/ContentView/components/EpisodeCard.js +3 -3
  107. package/lib/module/components/ContentView/components/EpisodeCard.js.map +1 -1
  108. package/lib/module/components/ContentView/components/GenreTags.js +1 -1
  109. package/lib/module/components/ContentView/components/GenreTags.js.map +1 -1
  110. package/lib/module/components/ContentView/components/HeroBanner.js +5 -5
  111. package/lib/module/components/ContentView/components/HeroBanner.js.map +1 -1
  112. package/lib/module/components/ContentView/components/PlayButton.js +0 -1
  113. package/lib/module/components/ContentView/components/PlayButton.js.map +1 -1
  114. package/lib/module/components/ContentView/components/Title.js +1 -1
  115. package/lib/module/components/ContentView/components/Title.js.map +1 -1
  116. package/lib/module/components/ContentView/components/TrailerButton.js +1 -2
  117. package/lib/module/components/ContentView/components/TrailerButton.js.map +1 -1
  118. package/lib/module/components/ContentView/index.js +2 -2
  119. package/lib/module/components/ContentView/index.js.map +1 -1
  120. package/lib/module/components/Headers/AppHeader.js +3 -3
  121. package/lib/module/components/Headers/AppHeader.js.map +1 -1
  122. package/lib/module/components/Headers/One.js +3 -3
  123. package/lib/module/components/Headers/One.js.map +1 -1
  124. package/lib/module/components/Headers/Three.js +2 -2
  125. package/lib/module/components/Headers/Three.js.map +1 -1
  126. package/lib/module/components/Headers/Two.js +6 -7
  127. package/lib/module/components/Headers/Two.js.map +1 -1
  128. package/lib/module/components/Headers/index.js +3 -3
  129. package/lib/module/components/Headers/index.js.map +1 -1
  130. package/lib/module/components/Input/Input.js +3 -3
  131. package/lib/module/components/Input/Input.js.map +1 -1
  132. package/lib/module/components/Input/InputOne.js +1 -1
  133. package/lib/module/components/Input/InputOne.js.map +1 -1
  134. package/lib/module/components/Input/InputTwo.js +1 -1
  135. package/lib/module/components/Input/InputTwo.js.map +1 -1
  136. package/lib/module/components/Input/PhoneNumberInput.js +1 -1
  137. package/lib/module/components/Input/PhoneNumberInput.js.map +1 -1
  138. package/lib/module/components/Keyboard/HideKeyboard.js.map +1 -1
  139. package/lib/module/components/Loader/Loader.js +1 -6
  140. package/lib/module/components/Loader/Loader.js.map +1 -1
  141. package/lib/module/components/Logo/Logo.js +2 -2
  142. package/lib/module/components/Logo/Logo.js.map +1 -1
  143. package/lib/module/components/Reels/ReelsSeries/Model/Episodes.js +110 -0
  144. package/lib/module/components/Reels/ReelsSeries/Model/Episodes.js.map +1 -0
  145. package/lib/module/components/Reels/ReelsSeries/Model/Synopsis.js +216 -0
  146. package/lib/module/components/Reels/ReelsSeries/Model/Synopsis.js.map +1 -0
  147. package/lib/module/components/Reels/ReelsSeries/ReelSeriesDetailsModal.js +182 -0
  148. package/lib/module/components/Reels/ReelsSeries/ReelSeriesDetailsModal.js.map +1 -0
  149. package/lib/module/components/Reels/ReelsSeries/ReelSeriesOverlay.js +203 -0
  150. package/lib/module/components/Reels/ReelsSeries/ReelSeriesOverlay.js.map +1 -0
  151. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js +121 -0
  152. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js.map +1 -0
  153. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js +290 -0
  154. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js.map +1 -0
  155. package/lib/module/components/Reels/ReelsSeries/types.js +2 -0
  156. package/lib/module/components/Reels/ReelsSeries/types.js.map +1 -0
  157. package/lib/module/components/Reels/index.js +11 -0
  158. package/lib/module/components/Reels/index.js.map +1 -0
  159. package/lib/module/components/Search/One.js +9 -9
  160. package/lib/module/components/Search/One.js.map +1 -1
  161. package/lib/module/components/Search/components/RecentSearchesSection.js +1 -1
  162. package/lib/module/components/Search/components/RecentSearchesSection.js.map +1 -1
  163. package/lib/module/components/Search/components/SearchCard.js +3 -3
  164. package/lib/module/components/Search/components/SearchCard.js.map +1 -1
  165. package/lib/module/components/Search/index.js +2 -2
  166. package/lib/module/components/Search/index.js.map +1 -1
  167. package/lib/module/components/Settings/AppSettings.js +4 -4
  168. package/lib/module/components/Settings/AppSettings.js.map +1 -1
  169. package/lib/module/components/Settings/index.js +1 -1
  170. package/lib/module/components/Settings/index.js.map +1 -1
  171. package/lib/module/components/Subscription/SubOne.js +4 -4
  172. package/lib/module/components/Subscription/SubOne.js.map +1 -1
  173. package/lib/module/components/Subscription/index.js +1 -1
  174. package/lib/module/components/Subscription/index.js.map +1 -1
  175. package/lib/module/components/TabBar/One.js +2 -2
  176. package/lib/module/components/TabBar/One.js.map +1 -1
  177. package/lib/module/components/TabBar/Three.js +1 -1
  178. package/lib/module/components/TabBar/Three.js.map +1 -1
  179. package/lib/module/components/TabBar/Two.js +2 -2
  180. package/lib/module/components/TabBar/Two.js.map +1 -1
  181. package/lib/module/components/TabBar/index.js +3 -3
  182. package/lib/module/components/TabBar/index.js.map +1 -1
  183. package/lib/module/components/Text/Text.js +1 -1
  184. package/lib/module/components/Text/Text.js.map +1 -1
  185. package/lib/module/components/Text/index.js +1 -1
  186. package/lib/module/components/Text/index.js.map +1 -1
  187. package/lib/module/components/User/DeviceSessions/DeviceSessions.js +11 -3
  188. package/lib/module/components/User/DeviceSessions/DeviceSessions.js.map +1 -1
  189. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js +258 -0
  190. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js.map +1 -0
  191. package/lib/module/components/User/WatchHistory/WatchHistory.js +4 -4
  192. package/lib/module/components/User/WatchHistory/WatchHistory.js.map +1 -1
  193. package/lib/module/components/User/WatchLater/WatchLater.js +5 -5
  194. package/lib/module/components/User/WatchLater/WatchLater.js.map +1 -1
  195. package/lib/module/components/User/components/UserAvatar.js +1 -1
  196. package/lib/module/components/User/components/UserAvatar.js.map +1 -1
  197. package/lib/module/components/User/components/UserSection.js +11 -16
  198. package/lib/module/components/User/components/UserSection.js.map +1 -1
  199. package/lib/module/components/User/index.js +5 -4
  200. package/lib/module/components/User/index.js.map +1 -1
  201. package/lib/module/components/View/View.js.map +1 -1
  202. package/lib/module/components/View/index.js +1 -1
  203. package/lib/module/components/View/index.js.map +1 -1
  204. package/lib/module/components/index.js +20 -18
  205. package/lib/module/components/index.js.map +1 -1
  206. package/lib/module/components/layout/SafeAreaWrapper.js +1 -1
  207. package/lib/module/components/layout/SafeAreaWrapper.js.map +1 -1
  208. package/lib/module/components/layout/index.js +1 -1
  209. package/lib/module/components/layout/index.js.map +1 -1
  210. package/lib/module/constants/dummySections.js.map +1 -1
  211. package/lib/module/hooks/useDebounce.js.map +1 -1
  212. package/lib/module/hooks/useInitSplashCacheSync.js +7 -7
  213. package/lib/module/hooks/useInitSplashCacheSync.js.map +1 -1
  214. package/lib/module/hooks/useKeyboard.js.map +1 -1
  215. package/lib/module/hooks/usePaginatedSection.js.map +1 -1
  216. package/lib/module/index.js +3 -3
  217. package/lib/module/index.js.map +1 -1
  218. package/lib/module/package.json +1 -0
  219. package/lib/module/store/RecentSearchesStore.js.map +1 -1
  220. package/lib/module/store/splashStore.js.map +1 -1
  221. package/lib/module/theme/ThemeProvider.js +24 -18
  222. package/lib/module/theme/ThemeProvider.js.map +1 -1
  223. package/lib/module/theme/hook/useTheme.js +2 -2
  224. package/lib/module/theme/hook/useTheme.js.map +1 -1
  225. package/lib/module/theme/index.js +3 -2
  226. package/lib/module/theme/index.js.map +1 -1
  227. package/lib/module/theme/themes.js +2 -13
  228. package/lib/module/theme/themes.js.map +1 -1
  229. package/lib/module/utils/Formater.js +17 -0
  230. package/lib/module/utils/Formater.js.map +1 -0
  231. package/lib/typescript/package.json +1 -0
  232. package/lib/typescript/src/components/Account/Account.d.ts +0 -1
  233. package/lib/typescript/src/components/Account/Account.d.ts.map +1 -1
  234. package/lib/typescript/src/components/Alert/UAAlert.d.ts +16 -0
  235. package/lib/typescript/src/components/Alert/UAAlert.d.ts.map +1 -0
  236. package/lib/typescript/src/components/Alert/index.d.ts +2 -0
  237. package/lib/typescript/src/components/Alert/index.d.ts.map +1 -0
  238. package/lib/typescript/src/components/Auth/ForgotPassword/ForgotPassword.d.ts.map +1 -1
  239. package/lib/typescript/src/components/Auth/Login/LoginWithEmail.d.ts.map +1 -1
  240. package/lib/typescript/src/components/Auth/Login/LoginWithPhone.d.ts.map +1 -1
  241. package/lib/typescript/src/components/Auth/OTP/OTP.d.ts.map +1 -1
  242. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts +32 -0
  243. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts.map +1 -0
  244. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts +15 -0
  245. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts.map +1 -0
  246. package/lib/typescript/src/components/Auth/SignUp/SignUp.d.ts.map +1 -1
  247. package/lib/typescript/src/components/Auth/SplashScreen/SplashScreen.d.ts.map +1 -1
  248. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashImage/SplashImage.d.ts +0 -4
  249. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashImage/SplashImage.d.ts.map +1 -1
  250. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +1 -1
  251. package/lib/typescript/src/components/Auth/index.d.ts +2 -1
  252. package/lib/typescript/src/components/Auth/index.d.ts.map +1 -1
  253. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts.map +1 -1
  254. package/lib/typescript/src/components/BlogView/BlogView.d.ts +0 -4
  255. package/lib/typescript/src/components/BlogView/BlogView.d.ts.map +1 -1
  256. package/lib/typescript/src/components/Button/BackBtn.d.ts.map +1 -1
  257. package/lib/typescript/src/components/Button/MenuBtn.d.ts.map +1 -1
  258. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts.map +1 -1
  259. package/lib/typescript/src/components/Button/TextButton.d.ts.map +1 -1
  260. package/lib/typescript/src/components/Content/Card/Category/Category.d.ts +1 -1
  261. package/lib/typescript/src/components/Content/Card/Category/Category.d.ts.map +1 -1
  262. package/lib/typescript/src/components/Content/Card/NowWatching/NowWatching.d.ts.map +1 -1
  263. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts.map +1 -1
  264. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts.map +1 -1
  265. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts.map +1 -1
  266. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts.map +1 -1
  267. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts.map +1 -1
  268. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts.map +1 -1
  269. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts.map +1 -1
  270. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts.map +1 -1
  271. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts.map +1 -1
  272. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts.map +1 -1
  273. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts +0 -8
  274. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  275. package/lib/typescript/src/components/Content/Card/components/NavigateToMore.d.ts.map +1 -1
  276. package/lib/typescript/src/components/Content/Card/components/NoContentFallback.d.ts +1 -2
  277. package/lib/typescript/src/components/Content/Card/components/NoContentFallback.d.ts.map +1 -1
  278. package/lib/typescript/src/components/Content/Card/components/ShowAllButton.d.ts.map +1 -1
  279. package/lib/typescript/src/components/Content/Card/components/ThumbnailCard.d.ts.map +1 -1
  280. package/lib/typescript/src/components/Content/Card/index.d.ts +2 -2
  281. package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
  282. package/lib/typescript/src/components/Content/Sections.d.ts.map +1 -1
  283. package/lib/typescript/src/components/ContentView/ContentView.d.ts +1 -2
  284. package/lib/typescript/src/components/ContentView/ContentView.d.ts.map +1 -1
  285. package/lib/typescript/src/components/ContentView/MoreContentList.d.ts.map +1 -1
  286. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts +1 -2
  287. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts.map +1 -1
  288. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts +1 -6
  289. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts.map +1 -1
  290. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts +1 -2
  291. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts.map +1 -1
  292. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts +1 -1
  293. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts.map +1 -1
  294. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts +1 -2
  295. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts.map +1 -1
  296. package/lib/typescript/src/components/ContentView/components/PlayButton.d.ts +1 -2
  297. package/lib/typescript/src/components/ContentView/components/PlayButton.d.ts.map +1 -1
  298. package/lib/typescript/src/components/ContentView/components/Title.d.ts +1 -1
  299. package/lib/typescript/src/components/ContentView/components/Title.d.ts.map +1 -1
  300. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts +1 -2
  301. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts.map +1 -1
  302. package/lib/typescript/src/components/Headers/AppHeader.d.ts.map +1 -1
  303. package/lib/typescript/src/components/Headers/One.d.ts.map +1 -1
  304. package/lib/typescript/src/components/Headers/Three.d.ts.map +1 -1
  305. package/lib/typescript/src/components/Headers/Two.d.ts.map +1 -1
  306. package/lib/typescript/src/components/Input/InputOne.d.ts.map +1 -1
  307. package/lib/typescript/src/components/Input/InputTwo.d.ts.map +1 -1
  308. package/lib/typescript/src/components/Input/PhoneNumberInput.d.ts.map +1 -1
  309. package/lib/typescript/src/components/Keyboard/HideKeyboard.d.ts.map +1 -1
  310. package/lib/typescript/src/components/Loader/Loader.d.ts +0 -4
  311. package/lib/typescript/src/components/Loader/Loader.d.ts.map +1 -1
  312. package/lib/typescript/src/components/Logo/Logo.d.ts.map +1 -1
  313. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Episodes.d.ts +12 -0
  314. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Episodes.d.ts.map +1 -0
  315. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Synopsis.d.ts +9 -0
  316. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Synopsis.d.ts.map +1 -0
  317. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.d.ts +13 -0
  318. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.d.ts.map +1 -0
  319. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesOverlay.d.ts +18 -0
  320. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesOverlay.d.ts.map +1 -0
  321. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts +15 -0
  322. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts.map +1 -0
  323. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts +18 -0
  324. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts.map +1 -0
  325. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts +24 -0
  326. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts.map +1 -0
  327. package/lib/typescript/src/components/Reels/index.d.ts +8 -0
  328. package/lib/typescript/src/components/Reels/index.d.ts.map +1 -0
  329. package/lib/typescript/src/components/Search/One.d.ts.map +1 -1
  330. package/lib/typescript/src/components/Search/components/RecentSearchesSection.d.ts.map +1 -1
  331. package/lib/typescript/src/components/Search/components/SearchCard.d.ts.map +1 -1
  332. package/lib/typescript/src/components/Settings/AppSettings.d.ts.map +1 -1
  333. package/lib/typescript/src/components/Subscription/SubOne.d.ts +1 -1
  334. package/lib/typescript/src/components/Subscription/SubOne.d.ts.map +1 -1
  335. package/lib/typescript/src/components/Subscription/index.d.ts +2 -2
  336. package/lib/typescript/src/components/Subscription/index.d.ts.map +1 -1
  337. package/lib/typescript/src/components/TabBar/One.d.ts +2 -2
  338. package/lib/typescript/src/components/TabBar/One.d.ts.map +1 -1
  339. package/lib/typescript/src/components/TabBar/Three.d.ts.map +1 -1
  340. package/lib/typescript/src/components/TabBar/Two.d.ts +1 -1
  341. package/lib/typescript/src/components/TabBar/Two.d.ts.map +1 -1
  342. package/lib/typescript/src/components/TabBar/index.d.ts +2 -2
  343. package/lib/typescript/src/components/Text/Text.d.ts.map +1 -1
  344. package/lib/typescript/src/components/User/DeviceSessions/DeviceSessions.d.ts +2 -1
  345. package/lib/typescript/src/components/User/DeviceSessions/DeviceSessions.d.ts.map +1 -1
  346. package/lib/typescript/src/components/User/ProfileUpdate/ProfileUpdate.d.ts +27 -0
  347. package/lib/typescript/src/components/User/ProfileUpdate/ProfileUpdate.d.ts.map +1 -0
  348. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts.map +1 -1
  349. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts.map +1 -1
  350. package/lib/typescript/src/components/User/components/UserAvatar.d.ts.map +1 -1
  351. package/lib/typescript/src/components/User/components/UserSection.d.ts.map +1 -1
  352. package/lib/typescript/src/components/User/index.d.ts +2 -1
  353. package/lib/typescript/src/components/User/index.d.ts.map +1 -1
  354. package/lib/typescript/src/components/View/View.d.ts.map +1 -1
  355. package/lib/typescript/src/components/index.d.ts +2 -0
  356. package/lib/typescript/src/components/index.d.ts.map +1 -1
  357. package/lib/typescript/src/components/layout/SafeAreaWrapper.d.ts.map +1 -1
  358. package/lib/typescript/src/constants/dummySections.d.ts.map +1 -1
  359. package/lib/typescript/src/hooks/useDebounce.d.ts.map +1 -1
  360. package/lib/typescript/src/hooks/useInitSplashCacheSync.d.ts +1 -1
  361. package/lib/typescript/src/hooks/useInitSplashCacheSync.d.ts.map +1 -1
  362. package/lib/typescript/src/hooks/useKeyboard.d.ts.map +1 -1
  363. package/lib/typescript/src/hooks/usePaginatedSection.d.ts.map +1 -1
  364. package/lib/typescript/src/index.d.ts.map +1 -1
  365. package/lib/typescript/src/store/RecentSearchesStore.d.ts +5 -3
  366. package/lib/typescript/src/store/RecentSearchesStore.d.ts.map +1 -1
  367. package/lib/typescript/src/store/splashStore.d.ts +5 -3
  368. package/lib/typescript/src/store/splashStore.d.ts.map +1 -1
  369. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
  370. package/lib/typescript/src/theme/hook/useTheme.d.ts.map +1 -1
  371. package/lib/typescript/src/theme/index.d.ts +5 -0
  372. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  373. package/lib/typescript/src/theme/themes.d.ts +12 -4
  374. package/lib/typescript/src/theme/themes.d.ts.map +1 -1
  375. package/lib/typescript/src/types/content/content-view.types.d.ts.map +1 -1
  376. package/lib/typescript/src/types/hook/usePaginatedSetion.d.ts +1 -1
  377. package/lib/typescript/src/types/hook/usePaginatedSetion.d.ts.map +1 -1
  378. package/lib/typescript/src/utils/Formater.d.ts +2 -0
  379. package/lib/typescript/src/utils/Formater.d.ts.map +1 -0
  380. package/package.json +175 -70
  381. package/src/Styles/globalStyles.ts +18 -18
  382. package/src/assets/animations/135037-payment-processing-error.json +1347 -1
  383. package/src/assets/animations/7227-vui-animation.json +3377 -1
  384. package/src/assets/animations/heart.json +788 -0
  385. package/src/assets/animations/succesfull-payment.json +2379 -1
  386. package/src/assets/animations/voice-icon.json +542 -1
  387. package/src/components/Account/Account.tsx +139 -61
  388. package/src/components/Alert/UAAlert.tsx +168 -0
  389. package/src/components/Alert/index.ts +1 -0
  390. package/src/components/Auth/ForgotPassword/ForgotPassword.tsx +53 -23
  391. package/src/components/Auth/Login/LoginWithEmail.tsx +62 -32
  392. package/src/components/Auth/Login/LoginWithPhone.tsx +55 -24
  393. package/src/components/Auth/OTP/OTP.tsx +77 -32
  394. package/src/components/Auth/QrLogin/QrLogin.tsx +306 -0
  395. package/src/components/Auth/QrLogin/components/QrViewArea.tsx +213 -0
  396. package/src/components/Auth/SignUp/SignUp.tsx +67 -32
  397. package/src/components/Auth/SplashScreen/SplashScreen.tsx +44 -16
  398. package/src/components/Auth/SplashScreen/components/SplashImage/SplashImage.tsx +21 -12
  399. package/src/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.tsx +5 -5
  400. package/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.tsx +15 -5
  401. package/src/components/Auth/index.ts +3 -1
  402. package/src/components/BackgroundLayout/BackgroundLayout.tsx +45 -17
  403. package/src/components/BlogView/BlogView.tsx +51 -31
  404. package/src/components/Button/BackBtn.tsx +31 -9
  405. package/src/components/Button/MenuBtn.tsx +61 -22
  406. package/src/components/Button/PrimaryBtn.tsx +30 -10
  407. package/src/components/Button/TextButton.tsx +30 -15
  408. package/src/components/Button/index.ts +1 -1
  409. package/src/components/Content/Card/Category/Category.tsx +73 -32
  410. package/src/components/Content/Card/NowWatching/NowWatching.tsx +102 -44
  411. package/src/components/Content/Card/Sliders/Styles/One.tsx +89 -38
  412. package/src/components/Content/Card/Sliders/Styles/Two.tsx +47 -21
  413. package/src/components/Content/Card/Sliders/index.ts +2 -2
  414. package/src/components/Content/Card/Styles/Five.tsx +65 -22
  415. package/src/components/Content/Card/Styles/Four.tsx +73 -23
  416. package/src/components/Content/Card/Styles/One.tsx +68 -21
  417. package/src/components/Content/Card/Styles/RotateInOut.tsx +59 -23
  418. package/src/components/Content/Card/Styles/Six.tsx +57 -19
  419. package/src/components/Content/Card/Styles/Three.tsx +59 -23
  420. package/src/components/Content/Card/Styles/TopTen.tsx +59 -26
  421. package/src/components/Content/Card/Styles/Two.tsx +39 -18
  422. package/src/components/Content/Card/components/CardPoster.tsx +34 -32
  423. package/src/components/Content/Card/components/NavigateToMore.tsx +17 -7
  424. package/src/components/Content/Card/components/NoContentFallback.tsx +36 -19
  425. package/src/components/Content/Card/components/ShowAllButton.tsx +12 -8
  426. package/src/components/Content/Card/components/ThumbnailCard.tsx +26 -17
  427. package/src/components/Content/Card/index.ts +2 -2
  428. package/src/components/Content/Content.tsx +41 -17
  429. package/src/components/Content/Sections.tsx +14 -8
  430. package/src/components/ContentView/ContentView.tsx +34 -27
  431. package/src/components/ContentView/MoreContentList.tsx +40 -18
  432. package/src/components/ContentView/components/AboutSection.tsx +30 -12
  433. package/src/components/ContentView/components/CastCard.tsx +65 -24
  434. package/src/components/ContentView/components/EpisodeCard.tsx +109 -44
  435. package/src/components/ContentView/components/GenreTags.tsx +35 -11
  436. package/src/components/ContentView/components/HeroBanner.tsx +52 -21
  437. package/src/components/ContentView/components/PlayButton.tsx +13 -5
  438. package/src/components/ContentView/components/Title.tsx +30 -10
  439. package/src/components/ContentView/components/TrailerButton.tsx +16 -7
  440. package/src/components/Headers/AppHeader.tsx +41 -15
  441. package/src/components/Headers/One.tsx +19 -10
  442. package/src/components/Headers/Three.tsx +22 -7
  443. package/src/components/Headers/Two.tsx +25 -14
  444. package/src/components/Headers/index.ts +1 -1
  445. package/src/components/Input/Input.ts +1 -1
  446. package/src/components/Input/InputOne.tsx +69 -23
  447. package/src/components/Input/InputTwo.tsx +41 -18
  448. package/src/components/Input/PhoneNumberInput.tsx +94 -48
  449. package/src/components/Keyboard/HideKeyboard.tsx +16 -10
  450. package/src/components/Loader/Loader.tsx +3 -8
  451. package/src/components/Logo/Logo.tsx +17 -9
  452. package/src/components/Reels/ReelsSeries/Model/Episodes.tsx +133 -0
  453. package/src/components/Reels/ReelsSeries/Model/Synopsis.tsx +249 -0
  454. package/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.tsx +209 -0
  455. package/src/components/Reels/ReelsSeries/ReelSeriesOverlay.tsx +185 -0
  456. package/src/components/Reels/ReelsSeries/ReelsSeries.tsx +163 -0
  457. package/src/components/Reels/ReelsSeries/ReelsSeriesItem.tsx +333 -0
  458. package/src/components/Reels/ReelsSeries/types.ts +27 -0
  459. package/src/components/Reels/index.ts +8 -0
  460. package/src/components/Search/One.tsx +46 -17
  461. package/src/components/Search/components/RecentSearchesSection.tsx +48 -21
  462. package/src/components/Search/components/SearchCard.tsx +34 -16
  463. package/src/components/Search/index.ts +1 -1
  464. package/src/components/Settings/AppSettings.tsx +80 -29
  465. package/src/components/Subscription/SubOne.tsx +84 -39
  466. package/src/components/Subscription/index.ts +1 -1
  467. package/src/components/TabBar/One.tsx +22 -18
  468. package/src/components/TabBar/Three.tsx +55 -19
  469. package/src/components/TabBar/Two.tsx +16 -12
  470. package/src/components/TabBar/index.ts +1 -1
  471. package/src/components/Text/Text.tsx +7 -3
  472. package/src/components/User/DeviceSessions/DeviceSessions.tsx +104 -38
  473. package/src/components/User/ProfileUpdate/ProfileUpdate.tsx +265 -0
  474. package/src/components/User/WatchHistory/WatchHistory.tsx +37 -12
  475. package/src/components/User/WatchLater/WatchLater.tsx +94 -31
  476. package/src/components/User/components/UserAvatar.tsx +8 -4
  477. package/src/components/User/components/UserSection.tsx +39 -27
  478. package/src/components/User/index.ts +3 -1
  479. package/src/components/View/View.tsx +11 -2
  480. package/src/components/index.ts +2 -0
  481. package/src/components/layout/SafeAreaWrapper.tsx +10 -4
  482. package/src/constants/dummySections.ts +9 -7
  483. package/src/hooks/useDebounce.ts +4 -1
  484. package/src/hooks/useInitSplashCacheSync.ts +46 -18
  485. package/src/hooks/useKeyboard.ts +5 -3
  486. package/src/hooks/usePaginatedSection.ts +11 -7
  487. package/src/store/RecentSearchesStore.ts +12 -7
  488. package/src/store/splashStore.ts +16 -16
  489. package/src/theme/ThemeProvider.tsx +57 -24
  490. package/src/theme/hook/useTheme.ts +7 -3
  491. package/src/theme/index.ts +6 -0
  492. package/src/theme/themes.ts +45 -31
  493. package/src/types/content/content-view.types.ts +4 -1
  494. package/src/types/hook/usePaginatedSetion.ts +1 -1
  495. package/src/utils/Formater.ts +14 -0
  496. package/lib/module/components/Icons/AlertIcon.js +0 -33
  497. package/lib/module/components/Icons/AlertIcon.js.map +0 -1
  498. package/lib/module/components/Icons/DeviceIcon.js +0 -25
  499. package/lib/module/components/Icons/DeviceIcon.js.map +0 -1
  500. package/lib/module/components/Icons/DoneIcon/DoneIcon.js +0 -23
  501. package/lib/module/components/Icons/DoneIcon/DoneIcon.js.map +0 -1
  502. package/lib/module/components/Icons/ForgotPasswordMessageIcon.js +0 -65
  503. package/lib/module/components/Icons/ForgotPasswordMessageIcon.js.map +0 -1
  504. package/lib/module/components/Icons/ForgotPasswordMessageIconTwo.js +0 -56
  505. package/lib/module/components/Icons/ForgotPasswordMessageIconTwo.js.map +0 -1
  506. package/lib/module/components/Icons/NewIndex.js +0 -36
  507. package/lib/module/components/Icons/NewIndex.js.map +0 -1
  508. package/lib/module/components/Icons/ResendOTP.js +0 -21
  509. package/lib/module/components/Icons/ResendOTP.js.map +0 -1
  510. package/lib/typescript/src/components/Icons/AlertIcon.d.ts +0 -7
  511. package/lib/typescript/src/components/Icons/AlertIcon.d.ts.map +0 -1
  512. package/lib/typescript/src/components/Icons/DeviceIcon.d.ts +0 -7
  513. package/lib/typescript/src/components/Icons/DeviceIcon.d.ts.map +0 -1
  514. package/lib/typescript/src/components/Icons/DoneIcon/DoneIcon.d.ts +0 -6
  515. package/lib/typescript/src/components/Icons/DoneIcon/DoneIcon.d.ts.map +0 -1
  516. package/lib/typescript/src/components/Icons/ForgotPasswordMessageIcon.d.ts +0 -3
  517. package/lib/typescript/src/components/Icons/ForgotPasswordMessageIcon.d.ts.map +0 -1
  518. package/lib/typescript/src/components/Icons/ForgotPasswordMessageIconTwo.d.ts +0 -3
  519. package/lib/typescript/src/components/Icons/ForgotPasswordMessageIconTwo.d.ts.map +0 -1
  520. package/lib/typescript/src/components/Icons/NewIndex.d.ts +0 -19
  521. package/lib/typescript/src/components/Icons/NewIndex.d.ts.map +0 -1
  522. package/lib/typescript/src/components/Icons/ResendOTP.d.ts +0 -7
  523. package/lib/typescript/src/components/Icons/ResendOTP.d.ts.map +0 -1
  524. package/src/components/Icons/AlertIcon.tsx +0 -18
  525. package/src/components/Icons/DeviceIcon.tsx +0 -18
  526. package/src/components/Icons/DoneIcon/DoneIcon.tsx +0 -17
  527. package/src/components/Icons/ForgotPasswordMessageIcon.tsx +0 -34
  528. package/src/components/Icons/ForgotPasswordMessageIconTwo.tsx +0 -32
  529. package/src/components/Icons/NewIndex.ts +0 -35
  530. package/src/components/Icons/ResendOTP.tsx +0 -13
  531. /package/lib/module/assets/{img → svg}/h.svg +0 -0
  532. /package/src/assets/{img → svg}/h.svg +0 -0
  533. /package/src/{index.ts → index.tsx} +0 -0
@@ -0,0 +1,185 @@
1
+ import React from 'react';
2
+ import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
3
+ import { Heart, Forward, ChevronRight, ListVideo } from 'lucide-react-native';
4
+ import { moderateScale, verticalScale } from 'react-native-size-matters';
5
+ import { RFValue } from 'react-native-responsive-fontsize';
6
+ import type { ISeriesEpisode, ISeriesItem } from './types';
7
+
8
+ interface ICommenProps {
9
+ data: ISeriesItem;
10
+ currentTime: number;
11
+ duration: number;
12
+ onLikePress: () => void;
13
+ onPlayPausePress: () => void;
14
+ onEpisodesPress: () => void;
15
+ onSharePress?: () => void;
16
+ activeEpisodeIndex: number;
17
+ }
18
+
19
+ interface IReelSeriesOverlayProps extends ICommenProps {
20
+ reel: ISeriesEpisode;
21
+ }
22
+
23
+ const ReelSeriesOverlay: React.FC<IReelSeriesOverlayProps> = ({
24
+ data,
25
+ currentTime,
26
+ duration,
27
+ onLikePress,
28
+ onEpisodesPress,
29
+ onSharePress,
30
+ activeEpisodeIndex,
31
+ }) => {
32
+ return (
33
+ <View style={styles.overlay}>
34
+ {/* Right Side Actions */}
35
+ <View style={styles.rightIcons}>
36
+ <TouchableOpacity
37
+ style={styles.iconBox}
38
+ onPress={onLikePress}
39
+ activeOpacity={0.7}
40
+ >
41
+ <Heart
42
+ size={moderateScale(25)}
43
+ color={data.isLiked ? 'red' : '#fff'}
44
+ fill={data.isLiked ? 'red' : 'none'}
45
+ />
46
+ <Text style={[styles.iconLabel, { color: '#fff' }]}>
47
+ {data.likes}
48
+ </Text>
49
+ </TouchableOpacity>
50
+
51
+ <TouchableOpacity style={styles.iconBox} onPress={onEpisodesPress}>
52
+ <ListVideo color={'#fff'} size={moderateScale(25)} />
53
+ <Text style={[styles.iconLabel, { color: '#fff' }]}>Episodes</Text>
54
+ </TouchableOpacity>
55
+
56
+ <TouchableOpacity style={styles.iconBox} onPress={onSharePress}>
57
+ <Forward color={'#fff'} size={moderateScale(25)} />
58
+ <Text style={[styles.iconLabel, { color: '#fff' }]}>Share</Text>
59
+ </TouchableOpacity>
60
+ </View>
61
+
62
+ {/* Title & Description */}
63
+ <View style={styles.titleBox}>
64
+ <Text style={[styles.title, { color: '#fff' }]}>
65
+ {data.title.length <= 25
66
+ ? data.title
67
+ : data.title.slice(0, 25) + '...'}
68
+ </Text>
69
+ <Text
70
+ numberOfLines={2}
71
+ style={[
72
+ styles.description,
73
+ { color: '#fff', marginTop: 2.5, opacity: 0.9 },
74
+ ]}
75
+ >
76
+ {data.description}
77
+ </Text>
78
+ </View>
79
+
80
+ {/* Episodes Button */}
81
+
82
+ <TouchableOpacity
83
+ style={[styles.episodesRow, { backgroundColor: 'rgba(0,0,0,0.5)' }]}
84
+ onPress={onEpisodesPress}
85
+ >
86
+ <View style={styles.bottomLeft}>
87
+ <ListVideo
88
+ color={'#fff'}
89
+ width={moderateScale(20)}
90
+ height={moderateScale(20)}
91
+ />
92
+ <Text style={[styles.episodes, { color: '#fff' }]}>
93
+ {activeEpisodeIndex + 1} / {data.episodes.length} Episodes
94
+ </Text>
95
+ </View>
96
+ <ChevronRight color={'#fff'} size={moderateScale(22)} />
97
+ </TouchableOpacity>
98
+
99
+ {/* Progress Bar */}
100
+ <View style={styles.progressBar}>
101
+ <View
102
+ style={[
103
+ styles.progressFill,
104
+ {
105
+ width: duration > 0 ? `${(currentTime / duration) * 100}%` : '0%',
106
+ },
107
+ ]}
108
+ />
109
+ {duration > 0 && (
110
+ <View
111
+ style={[
112
+ styles.progressKnob,
113
+ { left: `${(currentTime / duration) * 100}%` },
114
+ ]}
115
+ />
116
+ )}
117
+ </View>
118
+ </View>
119
+ );
120
+ };
121
+
122
+ export default ReelSeriesOverlay;
123
+
124
+ const styles = StyleSheet.create({
125
+ overlay: {
126
+ flex: 1,
127
+ justifyContent: 'flex-end',
128
+ paddingBottom: verticalScale(12),
129
+ paddingHorizontal: moderateScale(12),
130
+ },
131
+ centerPlayPauseButton: {
132
+ position: 'absolute',
133
+ top: '50%',
134
+ left: '50%',
135
+ transform: [{ translateX: -25 }, { translateY: -25 }],
136
+ width: moderateScale(50),
137
+ height: moderateScale(50),
138
+ borderRadius: moderateScale(25),
139
+ justifyContent: 'center',
140
+ alignItems: 'center',
141
+ zIndex: 5,
142
+ },
143
+ rightIcons: {
144
+ position: 'absolute',
145
+ bottom: verticalScale(120),
146
+ right: moderateScale(10),
147
+ alignItems: 'center',
148
+ },
149
+ iconBox: { marginVertical: verticalScale(8), alignItems: 'center' },
150
+ iconLabel: { fontSize: RFValue(10), marginTop: verticalScale(4) },
151
+ titleBox: { marginBottom: verticalScale(10) },
152
+ following: { fontSize: RFValue(10), fontWeight: '500' },
153
+ title: { fontSize: RFValue(13), fontWeight: '500' },
154
+ description: { fontSize: RFValue(10) },
155
+ episodesRow: {
156
+ flexDirection: 'row',
157
+ justifyContent: 'space-between',
158
+ alignItems: 'center',
159
+ borderRadius: moderateScale(8),
160
+ paddingHorizontal: moderateScale(12),
161
+ paddingVertical: verticalScale(8),
162
+ marginBottom: verticalScale(6),
163
+ },
164
+ bottomLeft: { flexDirection: 'row', alignItems: 'center' },
165
+ episodes: { fontSize: RFValue(13), marginLeft: moderateScale(10) },
166
+ progressBar: {
167
+ height: verticalScale(2),
168
+ backgroundColor: 'rgba(255, 255, 255, 0.3)',
169
+ borderRadius: moderateScale(1),
170
+ },
171
+ progressFill: {
172
+ height: '100%',
173
+ backgroundColor: '#fff',
174
+ borderRadius: moderateScale(1),
175
+ },
176
+ progressKnob: {
177
+ position: 'absolute',
178
+ top: -verticalScale(2),
179
+ width: moderateScale(7),
180
+ height: moderateScale(7),
181
+ borderRadius: moderateScale(5),
182
+ backgroundColor: '#fff',
183
+ transform: [{ translateX: -5 }],
184
+ },
185
+ });
@@ -0,0 +1,163 @@
1
+ import React, { useState, useCallback, useRef, useMemo } from 'react';
2
+ import {
3
+ FlatList,
4
+ Dimensions,
5
+ StyleSheet,
6
+ View,
7
+ TouchableOpacity,
8
+ type ViewToken,
9
+ } from 'react-native';
10
+ import { debounce } from 'lodash';
11
+ import ReelsSeriesItem from './ReelsSeriesItem';
12
+ import { verticalScale } from 'react-native-size-matters';
13
+ import { Search } from 'lucide-react-native';
14
+ import type { ISeriesEpisode, ISeriesItem } from './types';
15
+
16
+ const { height } = Dimensions.get('window');
17
+ const TAB_BAR_HEIGHT = verticalScale(65);
18
+ const SCREEN_HEIGHT = height - TAB_BAR_HEIGHT;
19
+
20
+ type ReelsProps = {
21
+ data: ISeriesItem;
22
+ autoScroll?: boolean;
23
+ onEndReached?: () => void;
24
+ onLikePress?: (id: string, liked: boolean) => void;
25
+ onEpisodesPress?: (id: string) => void;
26
+ onSharePress?: (id: string) => void;
27
+ onSearchPress?: () => void;
28
+ isFocused?: boolean;
29
+ };
30
+
31
+ export const ReelsSeries: React.FC<ReelsProps> = ({
32
+ data,
33
+ autoScroll,
34
+ onEndReached,
35
+ onLikePress,
36
+ onEpisodesPress,
37
+ onSharePress,
38
+ onSearchPress,
39
+ isFocused = true,
40
+ }) => {
41
+ const [currentVisibleIndex, setCurrentVisibleIndex] = useState<number>(0);
42
+ const listRef = useRef<FlatList<ISeriesEpisode>>(null);
43
+ const keyExtractor = useCallback(
44
+ (item: ISeriesEpisode) => item.episodeId.toString(),
45
+ []
46
+ );
47
+
48
+ const hendlePlayEpisode = useCallback(
49
+ (index: number) => {
50
+ if (index < 0 || index >= (data.episodes?.length || 0)) return;
51
+ listRef.current?.scrollToIndex({ index, animated: true });
52
+ setCurrentVisibleIndex(index);
53
+ },
54
+ [data.episodes]
55
+ );
56
+
57
+ const renderReelList = useCallback(
58
+ ({ item, index }: { item: ISeriesEpisode; index: number }) => {
59
+ return (
60
+ <ReelsSeriesItem
61
+ key={item.episodeId}
62
+ reel={item}
63
+ data={data}
64
+ videoHeight={SCREEN_HEIGHT}
65
+ onLikePress={onLikePress}
66
+ onEpisodesPress={() => onEpisodesPress?.(item.episodeId)}
67
+ onSharePress={() => onSharePress?.(item.episodeId)}
68
+ isVisible={index === currentVisibleIndex && isFocused}
69
+ activeEpisodeIndex={currentVisibleIndex}
70
+ preload={Math.abs(currentVisibleIndex + 3) >= index}
71
+ onEpisodeSelect={hendlePlayEpisode}
72
+ autoScroll={autoScroll}
73
+ />
74
+ );
75
+ },
76
+ [
77
+ data,
78
+ onLikePress,
79
+ currentVisibleIndex,
80
+ isFocused,
81
+ hendlePlayEpisode,
82
+ autoScroll,
83
+ onEpisodesPress,
84
+ onSharePress,
85
+ ]
86
+ );
87
+
88
+ const memoizedRenderReelList = useMemo(
89
+ () => renderReelList,
90
+ [renderReelList]
91
+ );
92
+
93
+ const viewabilityConfig = useRef({
94
+ itemVisiblePercentThreshold: 80,
95
+ }).current;
96
+
97
+ const onViewableItemsChanged = useRef(
98
+ debounce(({ viewableItems }: { viewableItems: Array<ViewToken> }) => {
99
+ if (viewableItems.length > 0) {
100
+ setCurrentVisibleIndex(viewableItems[0]?.index || 0);
101
+ }
102
+ }, 100)
103
+ ).current;
104
+
105
+ const getItemLayout = useCallback(
106
+ (_: any, index: number) => ({
107
+ length: SCREEN_HEIGHT,
108
+ offset: SCREEN_HEIGHT * index,
109
+ index,
110
+ }),
111
+ []
112
+ );
113
+
114
+ return (
115
+ <View style={[styles.container, { backgroundColor: '#000' }]}>
116
+ {onSearchPress && (
117
+ <TouchableOpacity
118
+ style={[
119
+ styles.fixedSearch,
120
+ {
121
+ top: verticalScale(40),
122
+ right: 16,
123
+ },
124
+ ]}
125
+ onPress={onSearchPress}
126
+ >
127
+ <Search color={'#fff'} size={verticalScale(22)} />
128
+ </TouchableOpacity>
129
+ )}
130
+
131
+ <FlatList
132
+ ref={listRef}
133
+ data={data.episodes || []}
134
+ keyExtractor={keyExtractor}
135
+ renderItem={memoizedRenderReelList as any}
136
+ windowSize={2}
137
+ onEndReached={onEndReached}
138
+ pagingEnabled
139
+ viewabilityConfig={viewabilityConfig}
140
+ disableIntervalMomentum={true}
141
+ removeClippedSubviews
142
+ maxToRenderPerBatch={2}
143
+ onViewableItemsChanged={onViewableItemsChanged}
144
+ initialNumToRender={1}
145
+ onEndReachedThreshold={0.1}
146
+ decelerationRate="fast"
147
+ showsVerticalScrollIndicator={false}
148
+ scrollEventThrottle={16}
149
+ snapToInterval={SCREEN_HEIGHT}
150
+ snapToAlignment="start"
151
+ getItemLayout={getItemLayout}
152
+ contentContainerStyle={{ paddingBottom: TAB_BAR_HEIGHT }}
153
+ />
154
+ </View>
155
+ );
156
+ };
157
+
158
+ export default ReelsSeries;
159
+
160
+ const styles = StyleSheet.create({
161
+ container: { flex: 1 },
162
+ fixedSearch: { position: 'absolute', zIndex: 10 },
163
+ });
@@ -0,0 +1,333 @@
1
+ import React, { useState, useEffect, useRef, useCallback, memo } from 'react';
2
+ import { View, Dimensions, StyleSheet } from 'react-native';
3
+ import ReelSeriesOverlay from './ReelSeriesOverlay';
4
+ import ReelSeriesDetailsModal from './ReelSeriesDetailsModal';
5
+ import type { ISeriesEpisode, ISeriesItem } from './types';
6
+ import { Video, type VideoRef } from 'react-native-video';
7
+ import FastImage from 'react-native-fast-image';
8
+ import {
9
+ Gesture,
10
+ GestureDetector,
11
+ GestureHandlerRootView,
12
+ } from 'react-native-gesture-handler';
13
+ import { Pause, Play } from 'lucide-react-native';
14
+ import { moderateScale } from 'react-native-size-matters';
15
+ import LottieView from 'lottie-react-native';
16
+ import DoubleTapAnim from '../../../assets/animations/heart.json';
17
+
18
+ const { width } = Dimensions.get('window');
19
+
20
+ interface IReelItemProps {
21
+ reel: ISeriesEpisode;
22
+ data: ISeriesItem;
23
+ autoScroll?: boolean;
24
+ videoHeight: number;
25
+ onLikePress?: (id: string, liked: boolean) => void;
26
+ onEpisodesPress?: () => void;
27
+ onSharePress?: () => void;
28
+ isVisible: boolean;
29
+ preload: boolean;
30
+ activeEpisodeIndex: number;
31
+ onEpisodeSelect: (index: number) => void;
32
+ }
33
+
34
+ const ReelItem: React.FC<IReelItemProps> = ({
35
+ reel,
36
+ data,
37
+ autoScroll,
38
+ videoHeight,
39
+ onLikePress,
40
+ onSharePress,
41
+ isVisible,
42
+ preload,
43
+ activeEpisodeIndex,
44
+ onEpisodeSelect,
45
+ }) => {
46
+ const videoRef = useRef<VideoRef>(null);
47
+ const timeoutRef = useRef<NodeJS.Timeout | null>(null);
48
+ const [isPaused, setIsPaused] = useState<boolean>(false);
49
+ const [paused, setPaused] = useState<string | null>(null);
50
+ const [modalVisible, setModalVisible] = useState(false);
51
+ const [currentTime, setCurrentTime] = useState(0);
52
+ const [duration, setDuration] = useState(0);
53
+ const [videoLoaded, setVideoLoaded] = useState(false);
54
+ const [showLikeAnim, setShowLikeAnim] = useState<boolean>(false);
55
+
56
+ useEffect(() => {
57
+ setIsPaused(!isVisible);
58
+ if (!isVisible) {
59
+ setPaused(null);
60
+ setVideoLoaded(false);
61
+ }
62
+ }, [isVisible]);
63
+
64
+ // Cleanup timeout on unmount
65
+ useEffect(() => {
66
+ return () => {
67
+ if (timeoutRef.current) {
68
+ clearTimeout(timeoutRef.current);
69
+ }
70
+ };
71
+ }, []);
72
+
73
+ const videoUri = reel.videoUrl || '';
74
+ // Handle like
75
+ const handleLikePress = useCallback(() => {
76
+ const newLiked = !data.isLiked;
77
+ data.isLiked = newLiked;
78
+ data.likes += newLiked ? 1 : -1;
79
+ if (newLiked) {
80
+ setShowLikeAnim(true);
81
+ setTimeout(() => setShowLikeAnim(false), 1200);
82
+ }
83
+ onLikePress?.(reel.episodeId, newLiked);
84
+ }, [data, onLikePress, reel.episodeId]);
85
+
86
+ const handleEpisodeSelect = (index: number) => {
87
+ if (data && index >= 0 && index < data.episodes.length) {
88
+ onEpisodeSelect(index);
89
+ setModalVisible(false);
90
+ }
91
+ };
92
+
93
+ const handleVideoLoad = () => {
94
+ setVideoLoaded(true);
95
+ };
96
+
97
+ const handleTogglePlay = useCallback(() => {
98
+ // Use functional updates to ensure we get the current state
99
+ setIsPaused((prevIsPaused) => {
100
+ const newIsPaused = !prevIsPaused;
101
+ const currentState = newIsPaused ? 'paused' : 'play';
102
+
103
+ setPaused(currentState);
104
+
105
+ // Clear any existing timeout
106
+ if (timeoutRef.current) {
107
+ clearTimeout(timeoutRef.current);
108
+ }
109
+
110
+ // Set new timeout
111
+ timeoutRef.current = setTimeout(() => {
112
+ if (currentState === 'play') {
113
+ setPaused(null);
114
+ }
115
+ }, 700);
116
+
117
+ return newIsPaused;
118
+ });
119
+ }, []);
120
+
121
+ const singleTap = Gesture.Tap()
122
+ .maxDuration(300)
123
+ .onStart((event) => {
124
+ // Check if the tap is in the overlay area (right side icons or bottom area)
125
+ const { x, y } = event;
126
+ const screenWidth = width;
127
+ const screenHeight = videoHeight;
128
+
129
+ // Right side icons area (right 80px)
130
+ const rightIconsArea = x > screenWidth - 80;
131
+
132
+ // Bottom area (bottom 150px)
133
+ const bottomArea = y > screenHeight - 150;
134
+
135
+ // If tap is in overlay area, don't trigger play/pause
136
+ if (rightIconsArea || bottomArea) {
137
+ return;
138
+ }
139
+ handleTogglePlay();
140
+ })
141
+ .runOnJS(true);
142
+
143
+ const doubleTap = Gesture.Tap()
144
+ .maxDuration(300)
145
+ .numberOfTaps(2)
146
+ .onStart((event) => {
147
+ // Check if the tap is in the overlay area (right side icons or bottom area)
148
+ const { x, y } = event;
149
+ const screenWidth = width;
150
+ const screenHeight = videoHeight;
151
+
152
+ // Right side icons area (right 80px)
153
+ const rightIconsArea = x > screenWidth - 80;
154
+
155
+ // Bottom area (bottom 150px)
156
+ const bottomArea = y > screenHeight - 150;
157
+
158
+ // If tap is in overlay area, don't trigger like
159
+ if (rightIconsArea || bottomArea) {
160
+ return;
161
+ }
162
+
163
+ handleLikePress();
164
+ })
165
+ .runOnJS(true);
166
+
167
+ const combined = Gesture.Exclusive(doubleTap, singleTap);
168
+
169
+ return (
170
+ <View
171
+ style={[
172
+ styles.container,
173
+ { height: videoHeight, backgroundColor: '#000' },
174
+ ]}
175
+ >
176
+ <GestureHandlerRootView style={{ flex: 1 }}>
177
+ <GestureDetector gesture={combined}>
178
+ <View style={{ flex: 1 }} collapsable={false}>
179
+ {/* Video Player */}
180
+ {!videoLoaded && (
181
+ <FastImage
182
+ source={{
183
+ uri: data.thumbnail,
184
+ priority: FastImage.priority.high,
185
+ }}
186
+ defaultSource={require('../../../assets/img/play.png')}
187
+ resizeMode={FastImage.resizeMode.cover}
188
+ />
189
+ )}
190
+
191
+ {isVisible || preload ? (
192
+ <Video
193
+ poster={data.thumbnail}
194
+ ref={videoRef}
195
+ source={{ uri: videoUri }}
196
+ style={StyleSheet.absoluteFillObject}
197
+ resizeMode="cover"
198
+ posterResizeMode="cover"
199
+ repeat
200
+ paused={isPaused}
201
+ onLoad={(e) => setDuration(e.duration)}
202
+ onProgress={({ currentTime: ct }) => setCurrentTime(ct)}
203
+ ignoreSilentSwitch="ignore"
204
+ playWhenInactive={false}
205
+ playInBackground={false}
206
+ controls={false}
207
+ controlsStyles={{
208
+ hideForward: true,
209
+ hideDuration: true,
210
+ hideFullscreen: true,
211
+ hidePlayPause: true,
212
+ hideNavigationBarOnFullScreenMode: true,
213
+ hideNotificationBarOnFullScreenMode: true,
214
+ hideNext: true,
215
+ hidePosition: true,
216
+ hidePrevious: true,
217
+ hideRewind: true,
218
+ hideSeekBar: true,
219
+ hideSettingButton: true,
220
+ }}
221
+ disableFocus={true}
222
+ shutterColor="transparent"
223
+ onReadyForDisplay={handleVideoLoad}
224
+ onEnd={() => {
225
+ if (autoScroll) {
226
+ onEpisodeSelect(activeEpisodeIndex + 1);
227
+ }
228
+ }}
229
+ />
230
+ ) : null}
231
+
232
+ {showLikeAnim && (
233
+ <View style={styles.lottieContainer}>
234
+ <LottieView
235
+ style={styles.lottie}
236
+ source={DoubleTapAnim}
237
+ autoPlay
238
+ loop={false}
239
+ />
240
+ </View>
241
+ )}
242
+
243
+ {paused !== null && (
244
+ <View
245
+ style={[
246
+ styles.playPauseButtonContainer,
247
+ { height: videoHeight },
248
+ ]}
249
+ >
250
+ <View style={styles.shadow} pointerEvents="none">
251
+ {paused === 'paused' ? (
252
+ <Pause color={'#fff'} size={moderateScale(25)} />
253
+ ) : (
254
+ <Play color={'#fff'} size={moderateScale(25)} />
255
+ )}
256
+ </View>
257
+ </View>
258
+ )}
259
+
260
+ {/* Overlay */}
261
+ <ReelSeriesOverlay
262
+ data={data}
263
+ reel={reel}
264
+ currentTime={currentTime}
265
+ duration={duration}
266
+ onLikePress={handleLikePress}
267
+ onPlayPausePress={() => setIsPaused((prev) => !prev)}
268
+ onEpisodesPress={() => {
269
+ setModalVisible(true);
270
+ }}
271
+ onSharePress={onSharePress}
272
+ activeEpisodeIndex={activeEpisodeIndex}
273
+ />
274
+
275
+ {/* Modal */}
276
+ <ReelSeriesDetailsModal
277
+ visible={modalVisible}
278
+ onClose={() => setModalVisible(false)}
279
+ reel={reel}
280
+ data={data}
281
+ activeEpisodeIndex={activeEpisodeIndex}
282
+ onEpisodeSelect={handleEpisodeSelect}
283
+ />
284
+ </View>
285
+ </GestureDetector>
286
+ </GestureHandlerRootView>
287
+ </View>
288
+ );
289
+ };
290
+
291
+ const areEqual = (prevProps: IReelItemProps, nextProps: IReelItemProps) => {
292
+ return (
293
+ prevProps?.reel?.episodeId === nextProps?.reel?.episodeId &&
294
+ prevProps?.isVisible === nextProps?.isVisible
295
+ );
296
+ };
297
+
298
+ export default memo(ReelItem, areEqual);
299
+
300
+ const styles = StyleSheet.create({
301
+ container: {
302
+ width,
303
+ position: 'relative',
304
+ overflow: 'hidden',
305
+ flex: 1,
306
+ flexGrow: 1,
307
+ },
308
+ playPauseButtonContainer: {
309
+ position: 'absolute',
310
+ top: 0,
311
+ left: 0,
312
+ right: 0,
313
+ bottom: 0,
314
+ justifyContent: 'center',
315
+ alignItems: 'center',
316
+ },
317
+ shadow: {
318
+ backgroundColor: 'rgba(0,0,0,0.5)',
319
+ padding: moderateScale(10),
320
+ borderRadius: moderateScale(50),
321
+ },
322
+ lottieContainer: {
323
+ width: '100%',
324
+ height: '100%',
325
+ position: 'absolute',
326
+ justifyContent: 'center',
327
+ alignItems: 'center',
328
+ },
329
+ lottie: {
330
+ width: '100%',
331
+ height: '100%',
332
+ },
333
+ });
@@ -0,0 +1,27 @@
1
+ export interface ISeriesEpisode {
2
+ videoUrl: string;
3
+ episodeId: string;
4
+ episodeNumber: number;
5
+ duration: string;
6
+ isLocked: boolean;
7
+ }
8
+
9
+ export interface ISeriesItem {
10
+ id: string;
11
+ title: string;
12
+
13
+ thumbnail: string;
14
+ description: string;
15
+ episodes: ISeriesEpisode[];
16
+ likes: number;
17
+ views: number;
18
+ createdAt: string;
19
+ shares: number;
20
+ isLiked: boolean;
21
+ }
22
+
23
+ // For like state
24
+ export interface LikedState {
25
+ liked: boolean;
26
+ count: number;
27
+ }