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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/lib/module/Styles/globalStyles.js +0 -5
  2. package/lib/module/Styles/globalStyles.js.map +1 -1
  3. package/lib/module/components/Auth/AuthProvider/AuthProvider.js +64 -40
  4. package/lib/module/components/Auth/AuthProvider/AuthProvider.js.map +1 -1
  5. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js +5 -2
  6. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js.map +1 -1
  7. package/lib/module/components/Auth/Login/LoginWithEmail.js +17 -11
  8. package/lib/module/components/Auth/Login/LoginWithEmail.js.map +1 -1
  9. package/lib/module/components/Auth/Login/LoginWithPhone.js +12 -6
  10. package/lib/module/components/Auth/Login/LoginWithPhone.js.map +1 -1
  11. package/lib/module/components/Auth/OTP/OTP.js +7 -4
  12. package/lib/module/components/Auth/OTP/OTP.js.map +1 -1
  13. package/lib/module/components/Auth/QrLogin/QrLogin.js +133 -86
  14. package/lib/module/components/Auth/QrLogin/QrLogin.js.map +1 -1
  15. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js +174 -109
  16. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js.map +1 -1
  17. package/lib/module/components/Auth/SignUp/SignUp.js +19 -13
  18. package/lib/module/components/Auth/SignUp/SignUp.js.map +1 -1
  19. package/lib/module/components/Auth/SplashScreen/SplashScreen.js +54 -36
  20. package/lib/module/components/Auth/SplashScreen/SplashScreen.js.map +1 -1
  21. package/lib/module/components/Auth/SplashScreen/components/SplashImage/SplashImage.js +29 -11
  22. package/lib/module/components/Auth/SplashScreen/components/SplashImage/SplashImage.js.map +1 -1
  23. package/lib/module/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.js +13 -7
  24. package/lib/module/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.js.map +1 -1
  25. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js +33 -21
  26. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js.map +1 -1
  27. package/lib/module/components/BackgroundLayout/BackgroundLayout.js +26 -20
  28. package/lib/module/components/BackgroundLayout/BackgroundLayout.js.map +1 -1
  29. package/lib/module/components/BlogView/BlogView.js +36 -20
  30. package/lib/module/components/BlogView/BlogView.js.map +1 -1
  31. package/lib/module/components/BottomSheet/BottomSheet.js +152 -0
  32. package/lib/module/components/BottomSheet/BottomSheet.js.map +1 -0
  33. package/lib/module/components/BottomSheet/index.js +4 -0
  34. package/lib/module/components/BottomSheet/index.js.map +1 -0
  35. package/lib/module/components/Button/BackBtn.js +46 -16
  36. package/lib/module/components/Button/BackBtn.js.map +1 -1
  37. package/lib/module/components/Button/PrimaryBtn.js +19 -13
  38. package/lib/module/components/Button/PrimaryBtn.js.map +1 -1
  39. package/lib/module/components/Button/SecondaryBtn.js +19 -13
  40. package/lib/module/components/Button/SecondaryBtn.js.map +1 -1
  41. package/lib/module/components/Button/TextButton.js +19 -13
  42. package/lib/module/components/Button/TextButton.js.map +1 -1
  43. package/lib/module/components/Content/Card/Category/Category.js +70 -37
  44. package/lib/module/components/Content/Card/Category/Category.js.map +1 -1
  45. package/lib/module/components/Content/Card/Sliders/Styles/One.js +40 -32
  46. package/lib/module/components/Content/Card/Sliders/Styles/One.js.map +1 -1
  47. package/lib/module/components/Content/Card/Sliders/Styles/Two.js +109 -48
  48. package/lib/module/components/Content/Card/Sliders/Styles/Two.js.map +1 -1
  49. package/lib/module/components/Content/Card/Styles/RotateInOut.js +4 -11
  50. package/lib/module/components/Content/Card/Styles/RotateInOut.js.map +1 -1
  51. package/lib/module/components/Content/Card/components/CardPoster.js +105 -43
  52. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  53. package/lib/module/components/Content/Card/components/RentOrBuyIcon.js +18 -17
  54. package/lib/module/components/Content/Card/components/RentOrBuyIcon.js.map +1 -1
  55. package/lib/module/components/Content/Card/components/ThumbnailCard.js +78 -28
  56. package/lib/module/components/Content/Card/components/ThumbnailCard.js.map +1 -1
  57. package/lib/module/components/Content/Content.js +44 -25
  58. package/lib/module/components/Content/Content.js.map +1 -1
  59. package/lib/module/components/Content/Sections.js +37 -29
  60. package/lib/module/components/Content/Sections.js.map +1 -1
  61. package/lib/module/components/ContentView/ContentView.js +70 -41
  62. package/lib/module/components/ContentView/ContentView.js.map +1 -1
  63. package/lib/module/components/ContentView/MoreContentList.js +74 -40
  64. package/lib/module/components/ContentView/MoreContentList.js.map +1 -1
  65. package/lib/module/components/ContentView/components/AboutSection.js +40 -19
  66. package/lib/module/components/ContentView/components/AboutSection.js.map +1 -1
  67. package/lib/module/components/ContentView/components/CastCard.js +6 -7
  68. package/lib/module/components/ContentView/components/CastCard.js.map +1 -1
  69. package/lib/module/components/ContentView/components/EpisodeCard.js +2 -2
  70. package/lib/module/components/ContentView/components/EpisodeCard.js.map +1 -1
  71. package/lib/module/components/ContentView/components/GenreTags.js +25 -13
  72. package/lib/module/components/ContentView/components/GenreTags.js.map +1 -1
  73. package/lib/module/components/ContentView/components/HeroBanner.js +39 -11
  74. package/lib/module/components/ContentView/components/HeroBanner.js.map +1 -1
  75. package/lib/module/components/ContentView/components/MiniInfo.js +84 -77
  76. package/lib/module/components/ContentView/components/MiniInfo.js.map +1 -1
  77. package/lib/module/components/ContentView/components/PlayButton.js +11 -7
  78. package/lib/module/components/ContentView/components/PlayButton.js.map +1 -1
  79. package/lib/module/components/ContentView/components/Title.js +12 -12
  80. package/lib/module/components/ContentView/components/Title.js.map +1 -1
  81. package/lib/module/components/ContentView/components/TrailerButton.js +12 -7
  82. package/lib/module/components/ContentView/components/TrailerButton.js.map +1 -1
  83. package/lib/module/components/Fallbacks/NoContentFallback.js +27 -22
  84. package/lib/module/components/Fallbacks/NoContentFallback.js.map +1 -1
  85. package/lib/module/components/Fallbacks/NotFoundFallback.js +6 -4
  86. package/lib/module/components/Fallbacks/NotFoundFallback.js.map +1 -1
  87. package/lib/module/components/Headers/AppHeader.js +22 -13
  88. package/lib/module/components/Headers/AppHeader.js.map +1 -1
  89. package/lib/module/components/Headers/Three.js +6 -5
  90. package/lib/module/components/Headers/Three.js.map +1 -1
  91. package/lib/module/components/Headers/Two.js +19 -14
  92. package/lib/module/components/Headers/Two.js.map +1 -1
  93. package/lib/module/components/Input/InputOne.js +46 -31
  94. package/lib/module/components/Input/InputOne.js.map +1 -1
  95. package/lib/module/components/Loader/Loader.js +2 -2
  96. package/lib/module/components/Loader/Loader.js.map +1 -1
  97. package/lib/module/components/Logo/Logo.js +17 -14
  98. package/lib/module/components/Logo/Logo.js.map +1 -1
  99. package/lib/module/components/Reels/ReelsSeries/MediaControls/BottomControls.js +134 -0
  100. package/lib/module/components/Reels/ReelsSeries/MediaControls/BottomControls.js.map +1 -0
  101. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js +154 -0
  102. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js.map +1 -0
  103. package/lib/module/components/Reels/ReelsSeries/MediaControls/MiddleControls.js +173 -0
  104. package/lib/module/components/Reels/ReelsSeries/MediaControls/MiddleControls.js.map +1 -0
  105. package/lib/module/components/Reels/ReelsSeries/MediaControls/RightControls.js +77 -0
  106. package/lib/module/components/Reels/ReelsSeries/MediaControls/RightControls.js.map +1 -0
  107. package/lib/module/components/Reels/ReelsSeries/MediaControls/TopControls.js +132 -0
  108. package/lib/module/components/Reels/ReelsSeries/MediaControls/TopControls.js.map +1 -0
  109. package/lib/module/components/Reels/ReelsSeries/Model/DetailsModal.js +165 -0
  110. package/lib/module/components/Reels/ReelsSeries/Model/DetailsModal.js.map +1 -0
  111. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js +106 -0
  112. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js.map +1 -0
  113. package/lib/module/components/Reels/ReelsSeries/Model/UnlockModal.js +124 -0
  114. package/lib/module/components/Reels/ReelsSeries/Model/UnlockModal.js.map +1 -0
  115. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js +102 -64
  116. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js.map +1 -1
  117. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js +241 -232
  118. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js.map +1 -1
  119. package/lib/module/components/Reels/ReelsSeries/components/AnimatedThreeLines.js +153 -0
  120. package/lib/module/components/Reels/ReelsSeries/components/AnimatedThreeLines.js.map +1 -0
  121. package/lib/module/components/Reels/ReelsSeries/{Model → components}/Episodes.js +46 -36
  122. package/lib/module/components/Reels/ReelsSeries/components/Episodes.js.map +1 -0
  123. package/lib/module/components/Reels/ReelsSeries/components/GradientOverlay.js +35 -0
  124. package/lib/module/components/Reels/ReelsSeries/components/GradientOverlay.js.map +1 -0
  125. package/lib/module/components/Reels/ReelsSeries/components/Like.js +37 -0
  126. package/lib/module/components/Reels/ReelsSeries/components/Like.js.map +1 -0
  127. package/lib/module/components/Reels/ReelsSeries/components/RotatingLoader.js +55 -0
  128. package/lib/module/components/Reels/ReelsSeries/components/RotatingLoader.js.map +1 -0
  129. package/lib/module/components/Reels/ReelsSeries/components/Synopsis.js +268 -0
  130. package/lib/module/components/Reels/ReelsSeries/components/Synopsis.js.map +1 -0
  131. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js +143 -0
  132. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js.map +1 -0
  133. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.js +56 -0
  134. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.js.map +1 -0
  135. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/index.js +5 -0
  136. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/index.js.map +1 -0
  137. package/lib/module/components/Reels/utils/Controls/gestureUtils.js +30 -0
  138. package/lib/module/components/Reels/utils/Controls/gestureUtils.js.map +1 -0
  139. package/lib/module/components/Reels/utils/Controls/index.js +7 -0
  140. package/lib/module/components/Reels/utils/Controls/index.js.map +1 -0
  141. package/lib/module/components/Reels/utils/Controls/overlayUtils.js +28 -0
  142. package/lib/module/components/Reels/utils/Controls/overlayUtils.js.map +1 -0
  143. package/lib/module/components/Reels/utils/Controls/videoControlsConstants.js +27 -0
  144. package/lib/module/components/Reels/utils/Controls/videoControlsConstants.js.map +1 -0
  145. package/lib/module/components/Reels/utils/Controls/videoRef.js +5 -0
  146. package/lib/module/components/Reels/utils/Controls/videoRef.js.map +1 -0
  147. package/lib/module/components/Reels/utils/index.js +4 -0
  148. package/lib/module/components/Reels/utils/index.js.map +1 -0
  149. package/lib/module/components/Reels/utils/timeoutUtils.js +24 -0
  150. package/lib/module/components/Reels/utils/timeoutUtils.js.map +1 -0
  151. package/lib/module/components/Search/One.js +2 -1
  152. package/lib/module/components/Search/One.js.map +1 -1
  153. package/lib/module/components/Search/components/SearchCard.js +15 -19
  154. package/lib/module/components/Search/components/SearchCard.js.map +1 -1
  155. package/lib/module/components/Settings/AppSettings.js +97 -62
  156. package/lib/module/components/Settings/AppSettings.js.map +1 -1
  157. package/lib/module/components/Subscription/SubOne.js +313 -254
  158. package/lib/module/components/Subscription/SubOne.js.map +1 -1
  159. package/lib/module/components/Text/Text.js +15 -12
  160. package/lib/module/components/Text/Text.js.map +1 -1
  161. package/lib/module/components/User/DeviceSessions/DeviceSessions.js +25 -23
  162. package/lib/module/components/User/DeviceSessions/DeviceSessions.js.map +1 -1
  163. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js +23 -18
  164. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js.map +1 -1
  165. package/lib/module/components/User/PurchaseHistory/PurchaseHistory.js +38 -24
  166. package/lib/module/components/User/PurchaseHistory/PurchaseHistory.js.map +1 -1
  167. package/lib/module/components/User/WatchHistory/WatchHistory.js +21 -14
  168. package/lib/module/components/User/WatchHistory/WatchHistory.js.map +1 -1
  169. package/lib/module/components/User/WatchLater/WatchLater.js +30 -21
  170. package/lib/module/components/User/WatchLater/WatchLater.js.map +1 -1
  171. package/lib/module/components/User/components/UserAvatar.js +38 -19
  172. package/lib/module/components/User/components/UserAvatar.js.map +1 -1
  173. package/lib/module/components/User/components/UserSection.js +37 -17
  174. package/lib/module/components/User/components/UserSection.js.map +1 -1
  175. package/lib/module/components/View/View.js +7 -4
  176. package/lib/module/components/View/View.js.map +1 -1
  177. package/lib/module/components/index.js +1 -1
  178. package/lib/module/components/index.js.map +1 -1
  179. package/lib/module/hooks/index.js +17 -0
  180. package/lib/module/hooks/index.js.map +1 -0
  181. package/lib/module/hooks/useDebounce.js +25 -6
  182. package/lib/module/hooks/useDebounce.js.map +1 -1
  183. package/lib/module/hooks/useKeyboard.js +7 -4
  184. package/lib/module/hooks/useKeyboard.js.map +1 -1
  185. package/lib/module/hooks/useNavigationMode.js +10 -4
  186. package/lib/module/hooks/useNavigationMode.js.map +1 -1
  187. package/lib/module/hooks/usePaginatedSection.js +1 -1
  188. package/lib/module/hooks/usePaginatedSection.js.map +1 -1
  189. package/lib/module/hooks/usePrevious.js +30 -0
  190. package/lib/module/hooks/usePrevious.js.map +1 -0
  191. package/lib/module/hooks/useSafeCallback.js +33 -0
  192. package/lib/module/hooks/useSafeCallback.js.map +1 -0
  193. package/lib/module/hooks/useSkeletonItems.js +33 -0
  194. package/lib/module/hooks/useSkeletonItems.js.map +1 -0
  195. package/lib/module/hooks/useSplashCache.js +2 -1
  196. package/lib/module/hooks/useSplashCache.js.map +1 -1
  197. package/lib/module/hooks/useThemeColors.js +33 -0
  198. package/lib/module/hooks/useThemeColors.js.map +1 -0
  199. package/lib/module/theme/ThemeProvider.js +24 -15
  200. package/lib/module/theme/ThemeProvider.js.map +1 -1
  201. package/lib/module/theme/hook/useInternalTheme.js +18 -11
  202. package/lib/module/theme/hook/useInternalTheme.js.map +1 -1
  203. package/lib/module/theme/hook/useThemeStatusBar.js +10 -4
  204. package/lib/module/theme/hook/useThemeStatusBar.js.map +1 -1
  205. package/lib/module/theme/themes.js +3 -3
  206. package/lib/typescript/src/Styles/globalStyles.d.ts +0 -5
  207. package/lib/typescript/src/Styles/globalStyles.d.ts.map +1 -1
  208. package/lib/typescript/src/components/Auth/AuthProvider/AuthProvider.d.ts.map +1 -1
  209. package/lib/typescript/src/components/Auth/ForgotPassword/ForgotPassword.d.ts.map +1 -1
  210. package/lib/typescript/src/components/Auth/Login/LoginWithEmail.d.ts.map +1 -1
  211. package/lib/typescript/src/components/Auth/Login/LoginWithPhone.d.ts.map +1 -1
  212. package/lib/typescript/src/components/Auth/OTP/OTP.d.ts.map +1 -1
  213. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts +0 -15
  214. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts.map +1 -1
  215. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts +0 -1
  216. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts.map +1 -1
  217. package/lib/typescript/src/components/Auth/SignUp/SignUp.d.ts.map +1 -1
  218. package/lib/typescript/src/components/Auth/SplashScreen/SplashScreen.d.ts.map +1 -1
  219. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashImage/SplashImage.d.ts.map +1 -1
  220. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.d.ts.map +1 -1
  221. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +1 -1
  222. package/lib/typescript/src/components/Auth/index.d.ts.map +1 -1
  223. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts +1 -1
  224. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts.map +1 -1
  225. package/lib/typescript/src/components/BlogView/BlogView.d.ts +2 -1
  226. package/lib/typescript/src/components/BlogView/BlogView.d.ts.map +1 -1
  227. package/lib/typescript/src/components/BottomSheet/BottomSheet.d.ts +18 -0
  228. package/lib/typescript/src/components/BottomSheet/BottomSheet.d.ts.map +1 -0
  229. package/lib/typescript/src/components/BottomSheet/index.d.ts +3 -0
  230. package/lib/typescript/src/components/BottomSheet/index.d.ts.map +1 -0
  231. package/lib/typescript/src/components/Button/BackBtn.d.ts +5 -3
  232. package/lib/typescript/src/components/Button/BackBtn.d.ts.map +1 -1
  233. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts +2 -1
  234. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts.map +1 -1
  235. package/lib/typescript/src/components/Button/SecondaryBtn.d.ts +2 -1
  236. package/lib/typescript/src/components/Button/SecondaryBtn.d.ts.map +1 -1
  237. package/lib/typescript/src/components/Button/TextButton.d.ts +2 -2
  238. package/lib/typescript/src/components/Button/TextButton.d.ts.map +1 -1
  239. package/lib/typescript/src/components/Button/index.d.ts +4 -2
  240. package/lib/typescript/src/components/Button/index.d.ts.map +1 -1
  241. package/lib/typescript/src/components/Content/Card/Category/Category.d.ts.map +1 -1
  242. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts.map +1 -1
  243. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts.map +1 -1
  244. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts.map +1 -1
  245. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  246. package/lib/typescript/src/components/Content/Card/components/RentOrBuyIcon.d.ts +2 -2
  247. package/lib/typescript/src/components/Content/Card/components/RentOrBuyIcon.d.ts.map +1 -1
  248. package/lib/typescript/src/components/Content/Card/components/ThumbnailCard.d.ts +2 -0
  249. package/lib/typescript/src/components/Content/Card/components/ThumbnailCard.d.ts.map +1 -1
  250. package/lib/typescript/src/components/Content/Content.d.ts +2 -0
  251. package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
  252. package/lib/typescript/src/components/Content/Sections.d.ts +2 -2
  253. package/lib/typescript/src/components/Content/Sections.d.ts.map +1 -1
  254. package/lib/typescript/src/components/ContentView/ContentView.d.ts +6 -1
  255. package/lib/typescript/src/components/ContentView/ContentView.d.ts.map +1 -1
  256. package/lib/typescript/src/components/ContentView/MoreContentList.d.ts.map +1 -1
  257. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts +2 -1
  258. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts.map +1 -1
  259. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts +6 -1
  260. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts.map +1 -1
  261. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts +2 -1
  262. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts.map +1 -1
  263. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts +1 -1
  264. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts.map +1 -1
  265. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts +2 -1
  266. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts.map +1 -1
  267. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts +1 -1
  268. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts.map +1 -1
  269. package/lib/typescript/src/components/ContentView/components/PlayButton.d.ts +2 -1
  270. package/lib/typescript/src/components/ContentView/components/PlayButton.d.ts.map +1 -1
  271. package/lib/typescript/src/components/ContentView/components/Title.d.ts +1 -1
  272. package/lib/typescript/src/components/ContentView/components/Title.d.ts.map +1 -1
  273. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts +2 -1
  274. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts.map +1 -1
  275. package/lib/typescript/src/components/Fallbacks/NoContentFallback.d.ts +2 -1
  276. package/lib/typescript/src/components/Fallbacks/NoContentFallback.d.ts.map +1 -1
  277. package/lib/typescript/src/components/Fallbacks/NotFoundFallback.d.ts +1 -1
  278. package/lib/typescript/src/components/Fallbacks/NotFoundFallback.d.ts.map +1 -1
  279. package/lib/typescript/src/components/Headers/AppHeader.d.ts +2 -2
  280. package/lib/typescript/src/components/Headers/AppHeader.d.ts.map +1 -1
  281. package/lib/typescript/src/components/Headers/Three.d.ts +2 -2
  282. package/lib/typescript/src/components/Headers/Three.d.ts.map +1 -1
  283. package/lib/typescript/src/components/Headers/Two.d.ts +2 -2
  284. package/lib/typescript/src/components/Headers/Two.d.ts.map +1 -1
  285. package/lib/typescript/src/components/Headers/index.d.ts +2 -2
  286. package/lib/typescript/src/components/Input/Input.d.ts +1 -1
  287. package/lib/typescript/src/components/Input/InputOne.d.ts +2 -2
  288. package/lib/typescript/src/components/Input/InputOne.d.ts.map +1 -1
  289. package/lib/typescript/src/components/Loader/Loader.d.ts.map +1 -1
  290. package/lib/typescript/src/components/Logo/Logo.d.ts +2 -1
  291. package/lib/typescript/src/components/Logo/Logo.d.ts.map +1 -1
  292. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/BottomControls.d.ts +14 -0
  293. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/BottomControls.d.ts.map +1 -0
  294. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts +60 -0
  295. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts.map +1 -0
  296. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.d.ts +14 -0
  297. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.d.ts.map +1 -0
  298. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/RightControls.d.ts +14 -0
  299. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/RightControls.d.ts.map +1 -0
  300. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/TopControls.d.ts +12 -0
  301. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/TopControls.d.ts.map +1 -0
  302. package/lib/typescript/src/components/Reels/ReelsSeries/Model/DetailsModal.d.ts +16 -0
  303. package/lib/typescript/src/components/Reels/ReelsSeries/Model/DetailsModal.d.ts.map +1 -0
  304. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts +15 -0
  305. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts.map +1 -0
  306. package/lib/typescript/src/components/Reels/ReelsSeries/Model/UnlockModal.d.ts +14 -0
  307. package/lib/typescript/src/components/Reels/ReelsSeries/Model/UnlockModal.d.ts.map +1 -0
  308. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts +8 -2
  309. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts.map +1 -1
  310. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts +8 -2
  311. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts.map +1 -1
  312. package/lib/typescript/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.d.ts +13 -0
  313. package/lib/typescript/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.d.ts.map +1 -0
  314. package/lib/typescript/src/components/Reels/ReelsSeries/{Model → components}/Episodes.d.ts +3 -2
  315. package/lib/typescript/src/components/Reels/ReelsSeries/components/Episodes.d.ts.map +1 -0
  316. package/lib/typescript/src/components/Reels/ReelsSeries/components/GradientOverlay.d.ts +7 -0
  317. package/lib/typescript/src/components/Reels/ReelsSeries/components/GradientOverlay.d.ts.map +1 -0
  318. package/lib/typescript/src/components/Reels/ReelsSeries/components/Like.d.ts +7 -0
  319. package/lib/typescript/src/components/Reels/ReelsSeries/components/Like.d.ts.map +1 -0
  320. package/lib/typescript/src/components/Reels/ReelsSeries/components/RotatingLoader.d.ts +12 -0
  321. package/lib/typescript/src/components/Reels/ReelsSeries/components/RotatingLoader.d.ts.map +1 -0
  322. package/lib/typescript/src/components/Reels/ReelsSeries/components/Synopsis.d.ts +12 -0
  323. package/lib/typescript/src/components/Reels/ReelsSeries/components/Synopsis.d.ts.map +1 -0
  324. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts +11 -0
  325. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts.map +1 -0
  326. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.d.ts +10 -0
  327. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.d.ts.map +1 -0
  328. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/index.d.ts +3 -0
  329. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/index.d.ts.map +1 -0
  330. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts +13 -0
  331. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts.map +1 -1
  332. package/lib/typescript/src/components/Reels/utils/Controls/gestureUtils.d.ts +10 -0
  333. package/lib/typescript/src/components/Reels/utils/Controls/gestureUtils.d.ts.map +1 -0
  334. package/lib/typescript/src/components/Reels/utils/Controls/index.d.ts +5 -0
  335. package/lib/typescript/src/components/Reels/utils/Controls/index.d.ts.map +1 -0
  336. package/lib/typescript/src/components/Reels/utils/Controls/overlayUtils.d.ts +12 -0
  337. package/lib/typescript/src/components/Reels/utils/Controls/overlayUtils.d.ts.map +1 -0
  338. package/lib/typescript/src/components/Reels/utils/Controls/videoControlsConstants.d.ts +24 -0
  339. package/lib/typescript/src/components/Reels/utils/Controls/videoControlsConstants.d.ts.map +1 -0
  340. package/lib/typescript/src/components/Reels/utils/Controls/videoRef.d.ts +3 -0
  341. package/lib/typescript/src/components/Reels/utils/Controls/videoRef.d.ts.map +1 -0
  342. package/lib/typescript/src/components/Reels/utils/index.d.ts +2 -0
  343. package/lib/typescript/src/components/Reels/utils/index.d.ts.map +1 -0
  344. package/lib/typescript/src/components/Reels/utils/timeoutUtils.d.ts +14 -0
  345. package/lib/typescript/src/components/Reels/utils/timeoutUtils.d.ts.map +1 -0
  346. package/lib/typescript/src/components/Search/One.d.ts.map +1 -1
  347. package/lib/typescript/src/components/Search/components/SearchCard.d.ts +2 -5
  348. package/lib/typescript/src/components/Search/components/SearchCard.d.ts.map +1 -1
  349. package/lib/typescript/src/components/Search/index.d.ts +1 -1
  350. package/lib/typescript/src/components/Settings/AppSettings.d.ts +2 -2
  351. package/lib/typescript/src/components/Settings/AppSettings.d.ts.map +1 -1
  352. package/lib/typescript/src/components/Subscription/SubOne.d.ts.map +1 -1
  353. package/lib/typescript/src/components/Subscription/index.d.ts.map +1 -1
  354. package/lib/typescript/src/components/Text/Text.d.ts +2 -2
  355. package/lib/typescript/src/components/Text/Text.d.ts.map +1 -1
  356. package/lib/typescript/src/components/User/DeviceSessions/DeviceSessions.d.ts +1 -1
  357. package/lib/typescript/src/components/User/DeviceSessions/DeviceSessions.d.ts.map +1 -1
  358. package/lib/typescript/src/components/User/ProfileUpdate/ProfileUpdate.d.ts +1 -1
  359. package/lib/typescript/src/components/User/ProfileUpdate/ProfileUpdate.d.ts.map +1 -1
  360. package/lib/typescript/src/components/User/PurchaseHistory/PurchaseHistory.d.ts +1 -1
  361. package/lib/typescript/src/components/User/PurchaseHistory/PurchaseHistory.d.ts.map +1 -1
  362. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts +1 -1
  363. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts.map +1 -1
  364. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts +1 -1
  365. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts.map +1 -1
  366. package/lib/typescript/src/components/User/components/UserAvatar.d.ts +1 -1
  367. package/lib/typescript/src/components/User/components/UserAvatar.d.ts.map +1 -1
  368. package/lib/typescript/src/components/User/components/UserSection.d.ts +1 -1
  369. package/lib/typescript/src/components/User/components/UserSection.d.ts.map +1 -1
  370. package/lib/typescript/src/components/View/View.d.ts +2 -0
  371. package/lib/typescript/src/components/View/View.d.ts.map +1 -1
  372. package/lib/typescript/src/components/index.d.ts +1 -1
  373. package/lib/typescript/src/components/index.d.ts.map +1 -1
  374. package/lib/typescript/src/hooks/index.d.ts +14 -0
  375. package/lib/typescript/src/hooks/index.d.ts.map +1 -0
  376. package/lib/typescript/src/hooks/useDebounce.d.ts.map +1 -1
  377. package/lib/typescript/src/hooks/useKeyboard.d.ts.map +1 -1
  378. package/lib/typescript/src/hooks/useNavigationMode.d.ts.map +1 -1
  379. package/lib/typescript/src/hooks/usePrevious.d.ts +12 -0
  380. package/lib/typescript/src/hooks/usePrevious.d.ts.map +1 -0
  381. package/lib/typescript/src/hooks/useSafeCallback.d.ts +15 -0
  382. package/lib/typescript/src/hooks/useSafeCallback.d.ts.map +1 -0
  383. package/lib/typescript/src/hooks/useSkeletonItems.d.ts +11 -0
  384. package/lib/typescript/src/hooks/useSkeletonItems.d.ts.map +1 -0
  385. package/lib/typescript/src/hooks/useSplashCache.d.ts.map +1 -1
  386. package/lib/typescript/src/hooks/useThemeColors.d.ts +27 -0
  387. package/lib/typescript/src/hooks/useThemeColors.d.ts.map +1 -0
  388. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
  389. package/lib/typescript/src/theme/hook/useInternalTheme.d.ts.map +1 -1
  390. package/lib/typescript/src/theme/hook/useThemeStatusBar.d.ts.map +1 -1
  391. package/package.json +2 -2
  392. package/src/Styles/globalStyles.ts +0 -5
  393. package/src/components/Auth/AuthProvider/AuthProvider.tsx +288 -212
  394. package/src/components/Auth/ForgotPassword/ForgotPassword.tsx +11 -4
  395. package/src/components/Auth/Login/LoginWithEmail.tsx +266 -238
  396. package/src/components/Auth/Login/LoginWithPhone.tsx +18 -6
  397. package/src/components/Auth/OTP/OTP.tsx +21 -5
  398. package/src/components/Auth/QrLogin/QrLogin.tsx +225 -185
  399. package/src/components/Auth/QrLogin/components/QrViewArea.tsx +282 -166
  400. package/src/components/Auth/SignUp/SignUp.tsx +312 -293
  401. package/src/components/Auth/SplashScreen/SplashScreen.tsx +186 -131
  402. package/src/components/Auth/SplashScreen/components/SplashImage/SplashImage.tsx +32 -15
  403. package/src/components/Auth/SplashScreen/components/SplashLottie/SplashLottie.tsx +11 -5
  404. package/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.tsx +34 -18
  405. package/src/components/BackgroundLayout/BackgroundLayout.tsx +43 -37
  406. package/src/components/BlogView/BlogView.tsx +66 -30
  407. package/src/components/BottomSheet/BottomSheet.tsx +195 -0
  408. package/src/components/BottomSheet/index.ts +2 -0
  409. package/src/components/Button/BackBtn.tsx +87 -24
  410. package/src/components/Button/PrimaryBtn.tsx +42 -25
  411. package/src/components/Button/SecondaryBtn.tsx +41 -25
  412. package/src/components/Button/TextButton.tsx +54 -32
  413. package/src/components/Content/Card/Category/Category.tsx +94 -56
  414. package/src/components/Content/Card/Sliders/Styles/One.tsx +63 -47
  415. package/src/components/Content/Card/Sliders/Styles/Two.tsx +131 -51
  416. package/src/components/Content/Card/Styles/RotateInOut.tsx +7 -9
  417. package/src/components/Content/Card/components/CardPoster.tsx +136 -55
  418. package/src/components/Content/Card/components/RentOrBuyIcon.tsx +58 -38
  419. package/src/components/Content/Card/components/ThumbnailCard.tsx +122 -47
  420. package/src/components/Content/Content.tsx +164 -97
  421. package/src/components/Content/Sections.tsx +99 -43
  422. package/src/components/ContentView/ContentView.tsx +194 -128
  423. package/src/components/ContentView/MoreContentList.tsx +215 -151
  424. package/src/components/ContentView/components/AboutSection.tsx +132 -93
  425. package/src/components/ContentView/components/CastCard.tsx +148 -138
  426. package/src/components/ContentView/components/EpisodeCard.tsx +160 -155
  427. package/src/components/ContentView/components/GenreTags.tsx +68 -53
  428. package/src/components/ContentView/components/HeroBanner.tsx +326 -284
  429. package/src/components/ContentView/components/MiniInfo.tsx +181 -159
  430. package/src/components/ContentView/components/PlayButton.tsx +27 -16
  431. package/src/components/ContentView/components/Title.tsx +89 -72
  432. package/src/components/ContentView/components/TrailerButton.tsx +35 -22
  433. package/src/components/Fallbacks/NoContentFallback.tsx +107 -103
  434. package/src/components/Fallbacks/NotFoundFallback.tsx +12 -4
  435. package/src/components/Headers/AppHeader.tsx +42 -26
  436. package/src/components/Headers/Three.tsx +12 -8
  437. package/src/components/Headers/Two.tsx +31 -10
  438. package/src/components/Input/InputOne.tsx +136 -108
  439. package/src/components/Loader/Loader.tsx +2 -2
  440. package/src/components/Logo/Logo.tsx +43 -27
  441. package/src/components/Reels/ReelsSeries/MediaControls/BottomControls.tsx +156 -0
  442. package/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.tsx +234 -0
  443. package/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.tsx +196 -0
  444. package/src/components/Reels/ReelsSeries/MediaControls/RightControls.tsx +92 -0
  445. package/src/components/Reels/ReelsSeries/MediaControls/TopControls.tsx +163 -0
  446. package/src/components/Reels/ReelsSeries/Model/DetailsModal.tsx +210 -0
  447. package/src/components/Reels/ReelsSeries/Model/SettingModal.tsx +143 -0
  448. package/src/components/Reels/ReelsSeries/Model/UnlockModal.tsx +154 -0
  449. package/src/components/Reels/ReelsSeries/ReelsSeries.tsx +142 -74
  450. package/src/components/Reels/ReelsSeries/ReelsSeriesItem.tsx +349 -250
  451. package/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.tsx +184 -0
  452. package/src/components/Reels/ReelsSeries/{Model → components}/Episodes.tsx +54 -33
  453. package/src/components/Reels/ReelsSeries/components/GradientOverlay.tsx +41 -0
  454. package/src/components/Reels/ReelsSeries/components/Like.tsx +40 -0
  455. package/src/components/Reels/ReelsSeries/components/RotatingLoader.tsx +79 -0
  456. package/src/components/Reels/ReelsSeries/components/Synopsis.tsx +332 -0
  457. package/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.tsx +190 -0
  458. package/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.tsx +80 -0
  459. package/src/components/Reels/ReelsSeries/components/VideoControls/index.ts +2 -0
  460. package/src/components/Reels/ReelsSeries/types.ts +13 -2
  461. package/src/components/Reels/utils/Controls/gestureUtils.ts +42 -0
  462. package/src/components/Reels/utils/Controls/index.ts +4 -0
  463. package/src/components/Reels/utils/Controls/overlayUtils.ts +35 -0
  464. package/src/components/Reels/utils/Controls/videoControlsConstants.ts +25 -0
  465. package/src/components/Reels/utils/Controls/videoRef.ts +4 -0
  466. package/src/components/Reels/utils/index.ts +1 -0
  467. package/src/components/Reels/utils/timeoutUtils.ts +29 -0
  468. package/src/components/Search/One.tsx +2 -4
  469. package/src/components/Search/components/SearchCard.tsx +19 -13
  470. package/src/components/Settings/AppSettings.tsx +217 -128
  471. package/src/components/Subscription/SubOne.tsx +394 -317
  472. package/src/components/Text/Text.tsx +33 -22
  473. package/src/components/User/DeviceSessions/DeviceSessions.tsx +129 -102
  474. package/src/components/User/ProfileUpdate/ProfileUpdate.tsx +36 -17
  475. package/src/components/User/PurchaseHistory/PurchaseHistory.tsx +194 -140
  476. package/src/components/User/WatchHistory/WatchHistory.tsx +63 -36
  477. package/src/components/User/WatchLater/WatchLater.tsx +119 -81
  478. package/src/components/User/components/UserAvatar.tsx +49 -15
  479. package/src/components/User/components/UserSection.tsx +71 -37
  480. package/src/components/View/View.tsx +10 -2
  481. package/src/components/index.ts +1 -1
  482. package/src/hooks/index.ts +14 -0
  483. package/src/hooks/useDebounce.ts +25 -6
  484. package/src/hooks/useKeyboard.ts +12 -5
  485. package/src/hooks/useNavigationMode.ts +16 -5
  486. package/src/hooks/usePaginatedSection.ts +1 -1
  487. package/src/hooks/usePrevious.ts +28 -0
  488. package/src/hooks/useSafeCallback.ts +43 -0
  489. package/src/hooks/useSkeletonItems.ts +30 -0
  490. package/src/hooks/useSplashCache.ts +2 -1
  491. package/src/hooks/useThemeColors.ts +51 -0
  492. package/src/theme/ThemeProvider.tsx +33 -11
  493. package/src/theme/hook/useInternalTheme.ts +19 -13
  494. package/src/theme/hook/useThemeStatusBar.ts +14 -5
  495. package/src/theme/themes.ts +3 -3
  496. package/lib/module/components/Reels/ReelsSeries/Model/Episodes.js.map +0 -1
  497. package/lib/module/components/Reels/ReelsSeries/Model/Synopsis.js +0 -212
  498. package/lib/module/components/Reels/ReelsSeries/Model/Synopsis.js.map +0 -1
  499. package/lib/module/components/Reels/ReelsSeries/ReelSeriesDetailsModal.js +0 -182
  500. package/lib/module/components/Reels/ReelsSeries/ReelSeriesDetailsModal.js.map +0 -1
  501. package/lib/module/components/Reels/ReelsSeries/ReelSeriesOverlay.js +0 -203
  502. package/lib/module/components/Reels/ReelsSeries/ReelSeriesOverlay.js.map +0 -1
  503. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Episodes.d.ts.map +0 -1
  504. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Synopsis.d.ts +0 -9
  505. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Synopsis.d.ts.map +0 -1
  506. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.d.ts +0 -13
  507. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.d.ts.map +0 -1
  508. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesOverlay.d.ts +0 -18
  509. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesOverlay.d.ts.map +0 -1
  510. package/src/components/Reels/ReelsSeries/Model/Synopsis.tsx +0 -242
  511. package/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.tsx +0 -209
  512. package/src/components/Reels/ReelsSeries/ReelSeriesOverlay.tsx +0 -185
@@ -0,0 +1,332 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ import {
3
+ Text,
4
+ View,
5
+ Image,
6
+ StyleSheet,
7
+ TouchableOpacity,
8
+ Dimensions,
9
+ TouchableWithoutFeedback,
10
+ FlatList,
11
+ } from 'react-native';
12
+ import { RFValue } from 'react-native-responsive-fontsize';
13
+ import { moderateScale, scale, verticalScale } from 'react-native-size-matters';
14
+ import Svg, { Path, Defs, LinearGradient, Stop } from 'react-native-svg';
15
+ import type { ITheme } from '../../../../theme';
16
+ import type { ILikeMoreData } from '../types';
17
+
18
+ const { width: SCREEN_WIDTH } = Dimensions.get('window');
19
+
20
+ interface SynopsisProps {
21
+ theme: ITheme;
22
+ description: string;
23
+ likeMoreData?: ILikeMoreData[];
24
+ onLikeMorePress?: (item: ILikeMoreData) => void;
25
+ }
26
+
27
+ const MAX_LINES = 5;
28
+
29
+ const Synopsis: React.FC<SynopsisProps> = ({
30
+ theme,
31
+ description,
32
+ likeMoreData = [],
33
+ onLikeMorePress,
34
+ }) => {
35
+ const [showMore, setShowMore] = useState(false);
36
+
37
+ const numColumns = SCREEN_WIDTH >= 420 ? 4 : 3;
38
+ const cardSpacing = scale(3);
39
+ const containerPadding = moderateScale(5);
40
+
41
+ // Calculate if description needs "Show More" button
42
+ // Approximate: ~50-60 characters per line for fontSize 11, lineHeight 16
43
+ const charsPerLine = 55;
44
+ const estimatedLines = description
45
+ ? Math.ceil(description.length / charsPerLine)
46
+ : 0;
47
+ const shouldShowButton = description && estimatedLines > MAX_LINES;
48
+
49
+ // Calculate card width for grid - ensure no overflow
50
+ const totalSpacing = cardSpacing * (numColumns - 1);
51
+ const totalPadding = containerPadding * 7;
52
+ const availableWidth = SCREEN_WIDTH - totalPadding - totalSpacing;
53
+ const cardWidth = Math.floor(availableWidth / numColumns);
54
+
55
+ const keyExtractor = useCallback(
56
+ (item: ILikeMoreData) => item.id.toString(),
57
+ []
58
+ );
59
+
60
+ const toggleShowMore = useCallback(() => {
61
+ setShowMore((prev) => !prev);
62
+ }, []);
63
+
64
+ const renderItem = useCallback(
65
+ ({ item, index }: { item: ILikeMoreData; index: number }) => {
66
+ const isLastInRow = (index + 1) % numColumns === 0;
67
+ return (
68
+ <TouchableOpacity
69
+ style={[
70
+ styles.card,
71
+ {
72
+ width: cardWidth,
73
+ maxWidth: cardWidth,
74
+ marginRight: isLastInRow ? 0 : cardSpacing,
75
+ },
76
+ ]}
77
+ activeOpacity={0.8}
78
+ onPress={() => onLikeMorePress?.(item)}
79
+ >
80
+ <View style={styles.imageContainer}>
81
+ <Image
82
+ source={{
83
+ uri: item?.thumbnail || '',
84
+ }}
85
+ style={[
86
+ styles.thumbnail,
87
+ { backgroundColor: theme.colors.surfaceDisabled },
88
+ ]}
89
+ resizeMode="cover"
90
+ />
91
+ </View>
92
+ <Text
93
+ style={[styles.title, { color: theme.colors.textPrimary }]}
94
+ numberOfLines={2}
95
+ ellipsizeMode="tail"
96
+ >
97
+ {item.name || 'Untitled'}
98
+ </Text>
99
+ </TouchableOpacity>
100
+ );
101
+ },
102
+ [
103
+ theme.colors.textPrimary,
104
+ theme.colors.surfaceDisabled,
105
+ onLikeMorePress,
106
+ cardWidth,
107
+ cardSpacing,
108
+ numColumns,
109
+ ]
110
+ );
111
+
112
+ const renderListHeader = useCallback(
113
+ () => (
114
+ <TouchableWithoutFeedback>
115
+ <View style={styles.headerContainer}>
116
+ {/* Description */}
117
+ <View style={styles.descriptionContainer}>
118
+ <Text
119
+ style={[styles.description, { color: theme.colors.textPrimary }]}
120
+ numberOfLines={showMore ? undefined : MAX_LINES}
121
+ >
122
+ {description ||
123
+ 'No synopsis available for this reel. Please check back later.'}
124
+ </Text>
125
+
126
+ {/* Show More / Show Less button */}
127
+ {description && shouldShowButton && (
128
+ <TouchableOpacity
129
+ activeOpacity={0.7}
130
+ onPress={toggleShowMore}
131
+ style={styles.showMoreButton}
132
+ >
133
+ <Text
134
+ style={[styles.showMoreText, { color: theme.colors.primary }]}
135
+ >
136
+ {showMore ? 'Show Less ▲' : 'Show More ▼'}
137
+ </Text>
138
+ </TouchableOpacity>
139
+ )}
140
+ </View>
141
+
142
+ {/* Header - Only show if there's data */}
143
+ {likeMoreData.length > 0 && (
144
+ <View style={styles.header}>
145
+ <Svg width={22} height={2} viewBox="0 0 22 2" fill="none">
146
+ <Path
147
+ d="M21.692 1.196H.594"
148
+ stroke="url(#a)"
149
+ strokeWidth={1.005}
150
+ />
151
+ <Defs>
152
+ <LinearGradient
153
+ id="a"
154
+ x1={0.594}
155
+ y1={1.696}
156
+ x2={21.692}
157
+ y2={1.696}
158
+ gradientUnits="userSpaceOnUse"
159
+ >
160
+ <Stop stopOpacity={0} />
161
+ <Stop offset={1} stopColor={theme.colors.textPrimary} />
162
+ </LinearGradient>
163
+ </Defs>
164
+ </Svg>
165
+
166
+ <Text
167
+ style={[styles.headerText, { color: theme.colors.textPrimary }]}
168
+ >
169
+ More Like This
170
+ </Text>
171
+
172
+ <Svg width={22} height={2} viewBox="0 0 22 2" fill="none">
173
+ <Path
174
+ d="M.312 1.196H21.41"
175
+ stroke="url(#paint0_linear_797_3114)"
176
+ strokeWidth={1.00467}
177
+ />
178
+ <Defs>
179
+ <LinearGradient
180
+ id="paint0_linear_797_3114"
181
+ x1={21.4102}
182
+ y1={1.69629}
183
+ x2={0.312025}
184
+ y2={1.69629}
185
+ gradientUnits="userSpaceOnUse"
186
+ >
187
+ <Stop stopOpacity={0} />
188
+ <Stop offset={1} stopColor={theme.colors.textPrimary} />
189
+ </LinearGradient>
190
+ </Defs>
191
+ </Svg>
192
+ </View>
193
+ )}
194
+ </View>
195
+ </TouchableWithoutFeedback>
196
+ ),
197
+ [
198
+ description,
199
+ likeMoreData.length,
200
+ showMore,
201
+ shouldShowButton,
202
+ toggleShowMore,
203
+ theme.colors.textPrimary,
204
+ theme.colors.primary,
205
+ ]
206
+ );
207
+
208
+ const renderListEmpty = useCallback(
209
+ () => (
210
+ <Text
211
+ style={[styles.noEpisodesText, { color: theme.colors.textSecondary }]}
212
+ >
213
+ No recommendations available.
214
+ </Text>
215
+ ),
216
+ [theme.colors.textSecondary]
217
+ );
218
+
219
+ return (
220
+ <FlatList
221
+ data={likeMoreData}
222
+ keyExtractor={keyExtractor}
223
+ renderItem={renderItem}
224
+ ListHeaderComponent={renderListHeader}
225
+ ListEmptyComponent={likeMoreData.length === 0 ? renderListEmpty : null}
226
+ numColumns={numColumns}
227
+ showsVerticalScrollIndicator={false}
228
+ scrollEnabled={true}
229
+ contentContainerStyle={[
230
+ styles.contentContainer,
231
+ {
232
+ paddingHorizontal: containerPadding,
233
+ },
234
+ likeMoreData.length === 0 && styles.contentContainerEmpty,
235
+ ]}
236
+ style={[styles.flatList]}
237
+ removeClippedSubviews={false}
238
+ nestedScrollEnabled={true}
239
+ bounces={false}
240
+ initialNumToRender={numColumns * 2}
241
+ maxToRenderPerBatch={numColumns * 2}
242
+ disableVirtualization={false}
243
+ />
244
+ );
245
+ };
246
+
247
+ export default Synopsis;
248
+
249
+ const styles = StyleSheet.create({
250
+ flatList: {
251
+ flex: 1,
252
+ overflow: 'hidden',
253
+ },
254
+ headerContainer: {
255
+ paddingBottom: verticalScale(8),
256
+ overflow: 'hidden',
257
+ width: '100%',
258
+ alignItems: 'center',
259
+ },
260
+ descriptionContainer: {
261
+ overflow: 'hidden',
262
+ },
263
+ description: {
264
+ fontSize: RFValue(11),
265
+ lineHeight: RFValue(16),
266
+ marginBottom: verticalScale(6),
267
+ letterSpacing: 0.2,
268
+ opacity: 0.8,
269
+ flexWrap: 'wrap',
270
+ },
271
+ showMoreButton: {
272
+ alignSelf: 'flex-start',
273
+ marginBottom: verticalScale(10),
274
+ },
275
+ showMoreText: {
276
+ fontSize: RFValue(10),
277
+ fontWeight: '500',
278
+ letterSpacing: 0.3,
279
+ },
280
+ header: {
281
+ flexDirection: 'row',
282
+ alignItems: 'center',
283
+ justifyContent: 'center',
284
+ marginBottom: verticalScale(5),
285
+ marginTop: verticalScale(8),
286
+ width: '100%',
287
+ alignSelf: 'center',
288
+ },
289
+ headerText: {
290
+ fontSize: RFValue(12),
291
+ fontWeight: '600',
292
+ textAlign: 'center',
293
+ marginHorizontal: scale(10),
294
+ letterSpacing: 0.5,
295
+ },
296
+ contentContainer: {
297
+ paddingBottom: verticalScale(30),
298
+ paddingTop: verticalScale(4),
299
+ },
300
+ contentContainerEmpty: {
301
+ paddingBottom: verticalScale(30),
302
+ },
303
+ card: {
304
+ borderRadius: moderateScale(10),
305
+ overflow: 'hidden',
306
+ marginBottom: verticalScale(10),
307
+ },
308
+ imageContainer: {
309
+ width: '100%',
310
+ overflow: 'hidden',
311
+ },
312
+ thumbnail: {
313
+ width: '100%',
314
+ aspectRatio: 1 / 1.5,
315
+ borderRadius: moderateScale(5),
316
+ },
317
+ title: {
318
+ fontSize: RFValue(10),
319
+ fontWeight: '500',
320
+ lineHeight: RFValue(14),
321
+ marginTop: verticalScale(1.5),
322
+ letterSpacing: 0.1,
323
+ flexShrink: 1,
324
+ },
325
+ noEpisodesText: {
326
+ fontSize: RFValue(12),
327
+ textAlign: 'center',
328
+ marginTop: verticalScale(16),
329
+ marginBottom: verticalScale(8),
330
+ paddingVertical: verticalScale(20),
331
+ },
332
+ });
@@ -0,0 +1,190 @@
1
+ import React, { useState, useEffect, useRef } from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ TouchableOpacity,
6
+ StyleSheet,
7
+ ActivityIndicator,
8
+ } from 'react-native';
9
+ import { moderateScale, verticalScale } from 'react-native-size-matters';
10
+ import { RFValue } from 'react-native-responsive-fontsize';
11
+ import type { ITheme } from '../../../../../theme';
12
+
13
+ interface QualityControlProps {
14
+ activeQuality: string;
15
+ theme: ITheme;
16
+ onQualityChange: (quality: string) => void;
17
+ videoUrl?: string;
18
+ }
19
+
20
+ interface QualityOption {
21
+ quality: string;
22
+ url: string;
23
+ }
24
+
25
+ const DEFAULT_QUALITIES = ['Auto', '1080p', '720p', '480p', '360p'];
26
+
27
+ /**
28
+ * Fetches available video qualities from m3u8 playlist.
29
+ */
30
+ const getVideoQualities = async (m3u8Url: string): Promise<QualityOption[]> => {
31
+ try {
32
+ const res = await fetch(m3u8Url);
33
+ const text = await res.text();
34
+ const qualities: QualityOption[] = [];
35
+ const lines = text.split('\n');
36
+
37
+ for (let i = 0; i < lines.length; i++) {
38
+ if (lines?.[i]?.includes('#EXT-X-STREAM-INF')) {
39
+ const resolutionMatch = lines?.[i]?.match(/RESOLUTION=\\d+x(\\d+)/);
40
+ const url = lines[i + 1]?.trim();
41
+ if (resolutionMatch && url) {
42
+ qualities.push({ quality: `${resolutionMatch[1]}p`, url });
43
+ }
44
+ }
45
+ }
46
+
47
+ return qualities;
48
+ } catch (error) {
49
+ console.error('Error fetching video qualities:', error);
50
+ return [];
51
+ }
52
+ };
53
+
54
+ const QualityControl: React.FC<QualityControlProps> = ({
55
+ activeQuality,
56
+ theme,
57
+ onQualityChange,
58
+ videoUrl,
59
+ }) => {
60
+ const [qualities, setQualities] = useState<string[]>(DEFAULT_QUALITIES);
61
+ const [loading, setLoading] = useState(false);
62
+ const isMounted = useRef(true);
63
+
64
+ useEffect(() => {
65
+ isMounted.current = true;
66
+ return () => {
67
+ isMounted.current = false;
68
+ };
69
+ }, []);
70
+
71
+ useEffect(() => {
72
+ const fetchQualities = async () => {
73
+ if (!videoUrl || !videoUrl.includes('.m3u8')) {
74
+ if (isMounted.current) setQualities(DEFAULT_QUALITIES);
75
+ return;
76
+ }
77
+
78
+ setLoading(true);
79
+
80
+ try {
81
+ const qualityOptions = await getVideoQualities(videoUrl);
82
+ if (!isMounted.current) return;
83
+
84
+ if (qualityOptions.length > 0) {
85
+ const qualityStrings = [
86
+ 'Auto',
87
+ ...qualityOptions
88
+ .map((q) => q.quality)
89
+ .filter((v, i, self) => self.indexOf(v) === i)
90
+ .sort((a, b) => parseInt(b, 10) - parseInt(a, 10)),
91
+ ];
92
+ setQualities(qualityStrings);
93
+ } else {
94
+ setQualities(DEFAULT_QUALITIES);
95
+ }
96
+ } catch (err) {
97
+ console.error('Failed to fetch qualities:', err);
98
+ if (isMounted.current) setQualities(DEFAULT_QUALITIES);
99
+ } finally {
100
+ if (isMounted.current) setLoading(false);
101
+ }
102
+ };
103
+
104
+ fetchQualities();
105
+ }, [videoUrl]);
106
+
107
+ if (loading) {
108
+ return (
109
+ <View style={styles.loadingContainer}>
110
+ <ActivityIndicator size="small" color={theme.colors.button} />
111
+ <Text
112
+ style={[styles.loadingText, { color: theme.colors.textSecondary }]}
113
+ >
114
+ Loading qualities...
115
+ </Text>
116
+ </View>
117
+ );
118
+ }
119
+
120
+ return (
121
+ <View style={styles.container}>
122
+ {qualities.map((quality, index) => {
123
+ const isSelected = activeQuality === quality;
124
+
125
+ return (
126
+ <TouchableOpacity
127
+ key={index.toString()}
128
+ activeOpacity={0.8}
129
+ style={[
130
+ styles.optionButton,
131
+ {
132
+ backgroundColor: isSelected
133
+ ? theme.colors.button
134
+ : theme.colors.surfaceDisabled,
135
+ },
136
+ ]}
137
+ onPress={() => onQualityChange(quality)}
138
+ >
139
+ <Text
140
+ style={[
141
+ styles.optionText,
142
+ {
143
+ color: isSelected
144
+ ? theme.colors.buttonText
145
+ : theme.colors.textPrimary,
146
+ fontWeight: isSelected ? '700' : '400',
147
+ },
148
+ ]}
149
+ >
150
+ {quality}
151
+ </Text>
152
+ </TouchableOpacity>
153
+ );
154
+ })}
155
+ </View>
156
+ );
157
+ };
158
+
159
+ export default React.memo(QualityControl);
160
+
161
+ const styles = StyleSheet.create({
162
+ container: {
163
+ flexDirection: 'row',
164
+ flexWrap: 'wrap',
165
+ justifyContent: 'center',
166
+ gap: moderateScale(10),
167
+ },
168
+ optionButton: {
169
+ width: '30%',
170
+ paddingVertical: verticalScale(12),
171
+ paddingHorizontal: moderateScale(16),
172
+ borderRadius: moderateScale(8),
173
+ alignItems: 'center',
174
+ justifyContent: 'center',
175
+ marginBottom: verticalScale(12),
176
+ },
177
+ optionText: {
178
+ fontSize: RFValue(14),
179
+ },
180
+ loadingContainer: {
181
+ flex: 1,
182
+ justifyContent: 'center',
183
+ alignItems: 'center',
184
+ paddingVertical: verticalScale(40),
185
+ },
186
+ loadingText: {
187
+ marginTop: verticalScale(12),
188
+ fontSize: RFValue(12),
189
+ },
190
+ });
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
3
+ import { moderateScale, verticalScale } from 'react-native-size-matters';
4
+ import { RFValue } from 'react-native-responsive-fontsize';
5
+ import type { ITheme } from '../../../../../theme';
6
+
7
+ interface SpeedControlProps {
8
+ activeSpeed: number;
9
+ theme: ITheme;
10
+ onSpeedChange: (speed: number) => void;
11
+ }
12
+
13
+ const SPEED_OPTIONS = [0.5, 0.75, 1.0, 1.25, 1.5, 2.0];
14
+
15
+ const SpeedControl: React.FC<SpeedControlProps> = ({
16
+ activeSpeed,
17
+ theme,
18
+ onSpeedChange,
19
+ }) => {
20
+ return (
21
+ <View style={styles.container}>
22
+ {SPEED_OPTIONS.map((speed, index) => {
23
+ const isSelected = activeSpeed === speed;
24
+
25
+ return (
26
+ <TouchableOpacity
27
+ key={index.toString()}
28
+ activeOpacity={0.8}
29
+ style={[
30
+ styles.optionButton,
31
+ {
32
+ backgroundColor: isSelected
33
+ ? theme.colors.button
34
+ : theme.colors.surfaceDisabled,
35
+ },
36
+ ]}
37
+ onPress={() => onSpeedChange(speed)}
38
+ >
39
+ <Text
40
+ style={[
41
+ styles.optionText,
42
+ {
43
+ color: isSelected
44
+ ? theme.colors.buttonText
45
+ : theme.colors.textPrimary,
46
+ fontWeight: isSelected ? '700' : '400',
47
+ },
48
+ ]}
49
+ >
50
+ {speed}x
51
+ </Text>
52
+ </TouchableOpacity>
53
+ );
54
+ })}
55
+ </View>
56
+ );
57
+ };
58
+
59
+ export default React.memo(SpeedControl);
60
+
61
+ const styles = StyleSheet.create({
62
+ container: {
63
+ flexDirection: 'row',
64
+ flexWrap: 'wrap',
65
+ justifyContent: 'space-between',
66
+ marginHorizontal: moderateScale(4), // instead of gap
67
+ },
68
+ optionButton: {
69
+ width: '30%',
70
+ paddingVertical: verticalScale(12),
71
+ paddingHorizontal: moderateScale(16),
72
+ borderRadius: moderateScale(8),
73
+ alignItems: 'center',
74
+ justifyContent: 'center',
75
+ marginBottom: verticalScale(12), // spacing instead of gap
76
+ },
77
+ optionText: {
78
+ fontSize: RFValue(14),
79
+ },
80
+ });
@@ -0,0 +1,2 @@
1
+ export { default as SpeedControl } from './SpeedControl';
2
+ export { default as QualityControl } from './QualityControl';
@@ -1,3 +1,8 @@
1
+ export interface ILikeMoreData {
2
+ id: string;
3
+ name: string;
4
+ thumbnail: string;
5
+ }
1
6
  export interface ISeriesEpisode {
2
7
  videoUrl: string;
3
8
  episodeId: string;
@@ -9,7 +14,6 @@ export interface ISeriesEpisode {
9
14
  export interface ISeriesItem {
10
15
  id: string;
11
16
  title: string;
12
-
13
17
  thumbnail: string;
14
18
  description: string;
15
19
  episodes: ISeriesEpisode[];
@@ -18,10 +22,17 @@ export interface ISeriesItem {
18
22
  createdAt: string;
19
23
  shares: number;
20
24
  isLiked: boolean;
25
+ likeMoreData?: ILikeMoreData[];
26
+ }
27
+ export interface IReelsData {
28
+ data: ISeriesItem[];
21
29
  }
22
-
23
30
  // For like state
24
31
  export interface LikedState {
25
32
  liked: boolean;
26
33
  count: number;
27
34
  }
35
+ export interface ModalState {
36
+ isVisible: boolean;
37
+ type: 'none' | 'details' | 'settings';
38
+ }
@@ -0,0 +1,42 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { Gesture } from 'react-native-gesture-handler';
3
+ import { GESTURE_MAX_DURATION } from './videoControlsConstants';
4
+
5
+ /**
6
+ * Create a tap gesture handler
7
+ */
8
+ export const useCreateTapGesture = (
9
+ isInOverlay: (x: number, y: number) => boolean,
10
+ isLocked: boolean,
11
+ handleLockedTap: () => void
12
+ ) => {
13
+ return useCallback(
14
+ (onAction: () => void, numberOfTaps = 1) =>
15
+ Gesture.Tap()
16
+ .maxDuration(GESTURE_MAX_DURATION)
17
+ .numberOfTaps(numberOfTaps)
18
+ .onStart(({ x, y }) => {
19
+ if (isInOverlay(x, y)) return;
20
+ if (isLocked) {
21
+ handleLockedTap();
22
+ return;
23
+ }
24
+ onAction();
25
+ })
26
+ .runOnJS(true),
27
+ [isInOverlay, isLocked, handleLockedTap]
28
+ );
29
+ };
30
+
31
+ /**
32
+ * Create combined gesture (single tap and double tap)
33
+ */
34
+ export const useCombinedGesture = (
35
+ singleTap: ReturnType<typeof Gesture.Tap>,
36
+ doubleTap: ReturnType<typeof Gesture.Tap>
37
+ ) => {
38
+ return useMemo(
39
+ () => Gesture.Exclusive(doubleTap, singleTap),
40
+ [doubleTap, singleTap]
41
+ );
42
+ };
@@ -0,0 +1,4 @@
1
+ export * from './videoRef';
2
+ export * from './videoControlsConstants';
3
+ export * from './overlayUtils';
4
+ export * from './gestureUtils';