@zezosoft/zezo-ott-react-native-ui-kit 1.0.5 → 1.0.7

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 (421) hide show
  1. package/lib/module/components/Account/Account.js +4 -4
  2. package/lib/module/components/Account/Account.js.map +1 -1
  3. package/lib/module/components/Alert/AlertDialog.js +2 -2
  4. package/lib/module/components/Alert/AlertDialog.js.map +1 -1
  5. package/lib/module/components/Alert/UAAlert.js +5 -1
  6. package/lib/module/components/Alert/UAAlert.js.map +1 -1
  7. package/lib/module/components/Auth/AuthProvider/AuthProvider.js +74 -104
  8. package/lib/module/components/Auth/AuthProvider/AuthProvider.js.map +1 -1
  9. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js +4 -8
  10. package/lib/module/components/Auth/ForgotPassword/ForgotPassword.js.map +1 -1
  11. package/lib/module/components/Auth/Login/LoginWithEmail.js +7 -7
  12. package/lib/module/components/Auth/Login/LoginWithEmail.js.map +1 -1
  13. package/lib/module/components/Auth/Login/LoginWithPhone.js +6 -6
  14. package/lib/module/components/Auth/Login/LoginWithPhone.js.map +1 -1
  15. package/lib/module/components/Auth/OTP/OTP.js +5 -5
  16. package/lib/module/components/Auth/OTP/OTP.js.map +1 -1
  17. package/lib/module/components/Auth/QrLogin/QrLogin.js +8 -9
  18. package/lib/module/components/Auth/QrLogin/QrLogin.js.map +1 -1
  19. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js +2 -2
  20. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js.map +1 -1
  21. package/lib/module/components/Auth/SignUp/SignUp.js +9 -9
  22. package/lib/module/components/Auth/SignUp/SignUp.js.map +1 -1
  23. package/lib/module/components/Auth/SplashScreen/SplashScreen.js +14 -23
  24. package/lib/module/components/Auth/SplashScreen/SplashScreen.js.map +1 -1
  25. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js +71 -47
  26. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js.map +1 -1
  27. package/lib/module/components/BackgroundLayout/BackgroundLayout.js +5 -1
  28. package/lib/module/components/BackgroundLayout/BackgroundLayout.js.map +1 -1
  29. package/lib/module/components/BlogView/BlogView.js +8 -7
  30. package/lib/module/components/BlogView/BlogView.js.map +1 -1
  31. package/lib/module/components/Button/BackBtn.js +2 -2
  32. package/lib/module/components/Button/BackBtn.js.map +1 -1
  33. package/lib/module/components/Button/MenuBtn.js +2 -2
  34. package/lib/module/components/Button/MenuBtn.js.map +1 -1
  35. package/lib/module/components/Button/PrimaryBtn.js +2 -2
  36. package/lib/module/components/Button/PrimaryBtn.js.map +1 -1
  37. package/lib/module/components/Button/SecondaryBtn.js +2 -2
  38. package/lib/module/components/Button/SecondaryBtn.js.map +1 -1
  39. package/lib/module/components/Button/TextButton.js +2 -2
  40. package/lib/module/components/Button/TextButton.js.map +1 -1
  41. package/lib/module/components/Content/Card/Category/Category.js +3 -3
  42. package/lib/module/components/Content/Card/Category/Category.js.map +1 -1
  43. package/lib/module/components/Content/Card/NowWatching/NowWatching.js +5 -3
  44. package/lib/module/components/Content/Card/NowWatching/NowWatching.js.map +1 -1
  45. package/lib/module/components/Content/Card/Sliders/Styles/One.js +5 -5
  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 +3 -2
  48. package/lib/module/components/Content/Card/Sliders/Styles/Two.js.map +1 -1
  49. package/lib/module/components/Content/Card/Styles/Five.js +4 -3
  50. package/lib/module/components/Content/Card/Styles/Five.js.map +1 -1
  51. package/lib/module/components/Content/Card/Styles/Four.js +4 -3
  52. package/lib/module/components/Content/Card/Styles/Four.js.map +1 -1
  53. package/lib/module/components/Content/Card/Styles/One.js +4 -3
  54. package/lib/module/components/Content/Card/Styles/One.js.map +1 -1
  55. package/lib/module/components/Content/Card/Styles/RotateInOut.js +4 -3
  56. package/lib/module/components/Content/Card/Styles/RotateInOut.js.map +1 -1
  57. package/lib/module/components/Content/Card/Styles/Six.js +5 -3
  58. package/lib/module/components/Content/Card/Styles/Six.js.map +1 -1
  59. package/lib/module/components/Content/Card/Styles/Three.js +4 -3
  60. package/lib/module/components/Content/Card/Styles/Three.js.map +1 -1
  61. package/lib/module/components/Content/Card/Styles/TopTen.js +4 -3
  62. package/lib/module/components/Content/Card/Styles/TopTen.js.map +1 -1
  63. package/lib/module/components/Content/Card/Styles/Two.js +4 -3
  64. package/lib/module/components/Content/Card/Styles/Two.js.map +1 -1
  65. package/lib/module/components/Content/Card/components/CardPoster.js +6 -0
  66. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  67. package/lib/module/components/Content/Card/components/RentOrBuyIcon.js +1 -1
  68. package/lib/module/components/Content/Card/components/RentOrBuyIcon.js.map +1 -1
  69. package/lib/module/components/Content/Card/components/ShowAllButton.js +3 -1
  70. package/lib/module/components/Content/Card/components/ShowAllButton.js.map +1 -1
  71. package/lib/module/components/Content/Content.js +22 -7
  72. package/lib/module/components/Content/Content.js.map +1 -1
  73. package/lib/module/components/ContentView/ContentView.js +101 -85
  74. package/lib/module/components/ContentView/ContentView.js.map +1 -1
  75. package/lib/module/components/ContentView/MoreContentList.js +3 -2
  76. package/lib/module/components/ContentView/MoreContentList.js.map +1 -1
  77. package/lib/module/components/ContentView/components/AboutSection.js +15 -1
  78. package/lib/module/components/ContentView/components/AboutSection.js.map +1 -1
  79. package/lib/module/components/ContentView/components/CastCard.js +1 -1
  80. package/lib/module/components/ContentView/components/EpisodeCard.js +15 -6
  81. package/lib/module/components/ContentView/components/EpisodeCard.js.map +1 -1
  82. package/lib/module/components/ContentView/components/HeroBanner.js +56 -20
  83. package/lib/module/components/ContentView/components/HeroBanner.js.map +1 -1
  84. package/lib/module/components/ContentView/components/MiniInfo.js +136 -0
  85. package/lib/module/components/ContentView/components/MiniInfo.js.map +1 -0
  86. package/lib/module/components/ContentView/components/Title.js +19 -27
  87. package/lib/module/components/ContentView/components/Title.js.map +1 -1
  88. package/lib/module/components/ContentView/components/TrailerButton.js +5 -5
  89. package/lib/module/components/ContentView/components/TrailerButton.js.map +1 -1
  90. package/lib/module/components/{Content/Card/components → Fallbacks}/NoContentFallback.js +50 -33
  91. package/lib/module/components/Fallbacks/NoContentFallback.js.map +1 -0
  92. package/lib/module/components/Fallbacks/NotFoundFallback.js +79 -0
  93. package/lib/module/components/Fallbacks/NotFoundFallback.js.map +1 -0
  94. package/lib/module/components/Fallbacks/index.js +5 -0
  95. package/lib/module/components/Fallbacks/index.js.map +1 -0
  96. package/lib/module/components/Headers/AppHeader.js +2 -2
  97. package/lib/module/components/Headers/AppHeader.js.map +1 -1
  98. package/lib/module/components/Headers/One.js +2 -2
  99. package/lib/module/components/Headers/One.js.map +1 -1
  100. package/lib/module/components/Headers/Three.js +2 -2
  101. package/lib/module/components/Headers/Three.js.map +1 -1
  102. package/lib/module/components/Headers/Two.js +2 -2
  103. package/lib/module/components/Headers/Two.js.map +1 -1
  104. package/lib/module/components/Input/InputOne.js +11 -5
  105. package/lib/module/components/Input/InputOne.js.map +1 -1
  106. package/lib/module/components/Input/InputTwo.js +2 -2
  107. package/lib/module/components/Input/InputTwo.js.map +1 -1
  108. package/lib/module/components/Input/PhoneNumberInput.js +5 -4
  109. package/lib/module/components/Input/PhoneNumberInput.js.map +1 -1
  110. package/lib/module/components/Logo/Logo.js +2 -2
  111. package/lib/module/components/Logo/Logo.js.map +1 -1
  112. package/lib/module/components/Search/One.js +4 -4
  113. package/lib/module/components/Search/One.js.map +1 -1
  114. package/lib/module/components/Search/components/SearchCard.js +2 -2
  115. package/lib/module/components/Search/components/SearchCard.js.map +1 -1
  116. package/lib/module/components/Settings/AppSettings.js +4 -4
  117. package/lib/module/components/Settings/AppSettings.js.map +1 -1
  118. package/lib/module/components/Subscription/SubOne.js +9 -8
  119. package/lib/module/components/Subscription/SubOne.js.map +1 -1
  120. package/lib/module/components/TabBar/One.js +8 -5
  121. package/lib/module/components/TabBar/One.js.map +1 -1
  122. package/lib/module/components/TabBar/Three.js +2 -2
  123. package/lib/module/components/TabBar/Three.js.map +1 -1
  124. package/lib/module/components/TabBar/Two.js +8 -5
  125. package/lib/module/components/TabBar/Two.js.map +1 -1
  126. package/lib/module/components/Text/Text.js +34 -12
  127. package/lib/module/components/Text/Text.js.map +1 -1
  128. package/lib/module/components/User/DeviceSessions/DeviceSessions.js +4 -3
  129. package/lib/module/components/User/DeviceSessions/DeviceSessions.js.map +1 -1
  130. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js +8 -8
  131. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js.map +1 -1
  132. package/lib/module/components/User/WatchHistory/WatchHistory.js +3 -3
  133. package/lib/module/components/User/WatchHistory/WatchHistory.js.map +1 -1
  134. package/lib/module/components/User/WatchLater/WatchLater.js +5 -3
  135. package/lib/module/components/User/WatchLater/WatchLater.js.map +1 -1
  136. package/lib/module/components/User/components/UserAvatar.js +13 -10
  137. package/lib/module/components/User/components/UserAvatar.js.map +1 -1
  138. package/lib/module/components/User/components/UserSection.js +3 -3
  139. package/lib/module/components/User/components/UserSection.js.map +1 -1
  140. package/lib/module/components/View/View.js.map +1 -1
  141. package/lib/module/components/common/AppStatusBar.js +41 -0
  142. package/lib/module/components/common/AppStatusBar.js.map +1 -0
  143. package/lib/module/components/index.js +3 -1
  144. package/lib/module/components/index.js.map +1 -1
  145. package/lib/module/components/layout/SafeAreaWrapper.js +2 -2
  146. package/lib/module/components/layout/SafeAreaWrapper.js.map +1 -1
  147. package/lib/module/store/splashStore.js +3 -7
  148. package/lib/module/store/splashStore.js.map +1 -1
  149. package/lib/module/store/themeStore.js +36 -0
  150. package/lib/module/store/themeStore.js.map +1 -0
  151. package/lib/module/theme/ThemeProvider.js +40 -69
  152. package/lib/module/theme/ThemeProvider.js.map +1 -1
  153. package/lib/module/theme/hook/index.js +5 -0
  154. package/lib/module/theme/hook/index.js.map +1 -0
  155. package/lib/module/theme/hook/useInternalTheme.js +57 -0
  156. package/lib/module/theme/hook/useInternalTheme.js.map +1 -0
  157. package/lib/module/theme/hook/useThemeStatusBar.js +27 -0
  158. package/lib/module/theme/hook/useThemeStatusBar.js.map +1 -0
  159. package/lib/module/theme/index.js +1 -2
  160. package/lib/module/theme/index.js.map +1 -1
  161. package/lib/module/theme/themes.js +18 -4
  162. package/lib/module/theme/themes.js.map +1 -1
  163. package/lib/typescript/src/components/Account/Account.d.ts +2 -2
  164. package/lib/typescript/src/components/Account/Account.d.ts.map +1 -1
  165. package/lib/typescript/src/components/Alert/AlertDialog.d.ts +2 -2
  166. package/lib/typescript/src/components/Alert/AlertDialog.d.ts.map +1 -1
  167. package/lib/typescript/src/components/Alert/UAAlert.d.ts +2 -2
  168. package/lib/typescript/src/components/Alert/UAAlert.d.ts.map +1 -1
  169. package/lib/typescript/src/components/Auth/AuthProvider/AuthProvider.d.ts +6 -6
  170. package/lib/typescript/src/components/Auth/AuthProvider/AuthProvider.d.ts.map +1 -1
  171. package/lib/typescript/src/components/Auth/ForgotPassword/ForgotPassword.d.ts +2 -2
  172. package/lib/typescript/src/components/Auth/ForgotPassword/ForgotPassword.d.ts.map +1 -1
  173. package/lib/typescript/src/components/Auth/Login/LoginWithEmail.d.ts +2 -2
  174. package/lib/typescript/src/components/Auth/Login/LoginWithEmail.d.ts.map +1 -1
  175. package/lib/typescript/src/components/Auth/Login/LoginWithPhone.d.ts +2 -2
  176. package/lib/typescript/src/components/Auth/Login/LoginWithPhone.d.ts.map +1 -1
  177. package/lib/typescript/src/components/Auth/OTP/OTP.d.ts +2 -2
  178. package/lib/typescript/src/components/Auth/OTP/OTP.d.ts.map +1 -1
  179. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts +2 -2
  180. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts.map +1 -1
  181. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts +2 -2
  182. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts.map +1 -1
  183. package/lib/typescript/src/components/Auth/SignUp/SignUp.d.ts +2 -2
  184. package/lib/typescript/src/components/Auth/SignUp/SignUp.d.ts.map +1 -1
  185. package/lib/typescript/src/components/Auth/SplashScreen/SplashScreen.d.ts +2 -2
  186. package/lib/typescript/src/components/Auth/SplashScreen/SplashScreen.d.ts.map +1 -1
  187. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.d.ts +7 -6
  188. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +1 -1
  189. package/lib/typescript/src/components/Auth/index.d.ts +5 -5
  190. package/lib/typescript/src/components/Auth/index.d.ts.map +1 -1
  191. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts +2 -2
  192. package/lib/typescript/src/components/BackgroundLayout/BackgroundLayout.d.ts.map +1 -1
  193. package/lib/typescript/src/components/BlogView/BlogView.d.ts +2 -2
  194. package/lib/typescript/src/components/BlogView/BlogView.d.ts.map +1 -1
  195. package/lib/typescript/src/components/Button/BackBtn.d.ts +2 -2
  196. package/lib/typescript/src/components/Button/BackBtn.d.ts.map +1 -1
  197. package/lib/typescript/src/components/Button/MenuBtn.d.ts +2 -2
  198. package/lib/typescript/src/components/Button/MenuBtn.d.ts.map +1 -1
  199. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts +2 -2
  200. package/lib/typescript/src/components/Button/PrimaryBtn.d.ts.map +1 -1
  201. package/lib/typescript/src/components/Button/SecondaryBtn.d.ts +2 -2
  202. package/lib/typescript/src/components/Button/SecondaryBtn.d.ts.map +1 -1
  203. package/lib/typescript/src/components/Button/index.d.ts +3 -3
  204. package/lib/typescript/src/components/Content/Card/Category/Category.d.ts +2 -2
  205. package/lib/typescript/src/components/Content/Card/Category/Category.d.ts.map +1 -1
  206. package/lib/typescript/src/components/Content/Card/NowWatching/NowWatching.d.ts +2 -2
  207. package/lib/typescript/src/components/Content/Card/NowWatching/NowWatching.d.ts.map +1 -1
  208. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts +2 -2
  209. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts.map +1 -1
  210. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts +2 -2
  211. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts.map +1 -1
  212. package/lib/typescript/src/components/Content/Card/Sliders/index.d.ts +2 -2
  213. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts +2 -2
  214. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts.map +1 -1
  215. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts +2 -2
  216. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts.map +1 -1
  217. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts +2 -2
  218. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts.map +1 -1
  219. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts +2 -2
  220. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts.map +1 -1
  221. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts +2 -2
  222. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts.map +1 -1
  223. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts +2 -2
  224. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts.map +1 -1
  225. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts +2 -2
  226. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts.map +1 -1
  227. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts +2 -2
  228. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts.map +1 -1
  229. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts +4 -0
  230. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  231. package/lib/typescript/src/components/Content/Card/components/ShowAllButton.d.ts +2 -0
  232. package/lib/typescript/src/components/Content/Card/components/ShowAllButton.d.ts.map +1 -1
  233. package/lib/typescript/src/components/Content/Card/index.d.ts +10 -10
  234. package/lib/typescript/src/components/Content/Content.d.ts +4 -2
  235. package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
  236. package/lib/typescript/src/components/Content/Sections.d.ts +2 -2
  237. package/lib/typescript/src/components/Content/Sections.d.ts.map +1 -1
  238. package/lib/typescript/src/components/ContentView/ContentView.d.ts +1 -5
  239. package/lib/typescript/src/components/ContentView/ContentView.d.ts.map +1 -1
  240. package/lib/typescript/src/components/ContentView/MoreContentList.d.ts +2 -2
  241. package/lib/typescript/src/components/ContentView/MoreContentList.d.ts.map +1 -1
  242. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts +6 -3
  243. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts.map +1 -1
  244. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts +3 -3
  245. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts.map +1 -1
  246. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts +1 -1
  247. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts.map +1 -1
  248. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts +22 -0
  249. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts.map +1 -0
  250. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts +2 -2
  251. package/lib/typescript/src/components/ContentView/components/TrailerButton.d.ts.map +1 -1
  252. package/lib/typescript/src/components/Fallbacks/NoContentFallback.d.ts +16 -0
  253. package/lib/typescript/src/components/Fallbacks/NoContentFallback.d.ts.map +1 -0
  254. package/lib/typescript/src/components/Fallbacks/NotFoundFallback.d.ts +19 -0
  255. package/lib/typescript/src/components/Fallbacks/NotFoundFallback.d.ts.map +1 -0
  256. package/lib/typescript/src/components/Fallbacks/index.d.ts +3 -0
  257. package/lib/typescript/src/components/Fallbacks/index.d.ts.map +1 -0
  258. package/lib/typescript/src/components/Headers/AppHeader.d.ts +2 -2
  259. package/lib/typescript/src/components/Headers/AppHeader.d.ts.map +1 -1
  260. package/lib/typescript/src/components/Headers/One.d.ts +2 -2
  261. package/lib/typescript/src/components/Headers/One.d.ts.map +1 -1
  262. package/lib/typescript/src/components/Headers/Three.d.ts +2 -2
  263. package/lib/typescript/src/components/Headers/Three.d.ts.map +1 -1
  264. package/lib/typescript/src/components/Headers/Two.d.ts +2 -2
  265. package/lib/typescript/src/components/Headers/Two.d.ts.map +1 -1
  266. package/lib/typescript/src/components/Input/InputOne.d.ts +2 -2
  267. package/lib/typescript/src/components/Input/InputOne.d.ts.map +1 -1
  268. package/lib/typescript/src/components/Input/InputTwo.d.ts +2 -2
  269. package/lib/typescript/src/components/Input/InputTwo.d.ts.map +1 -1
  270. package/lib/typescript/src/components/Input/PhoneNumberInput.d.ts +2 -2
  271. package/lib/typescript/src/components/Input/PhoneNumberInput.d.ts.map +1 -1
  272. package/lib/typescript/src/components/Logo/Logo.d.ts +2 -2
  273. package/lib/typescript/src/components/Logo/Logo.d.ts.map +1 -1
  274. package/lib/typescript/src/components/Search/One.d.ts +2 -2
  275. package/lib/typescript/src/components/Search/One.d.ts.map +1 -1
  276. package/lib/typescript/src/components/Search/components/SearchCard.d.ts +2 -2
  277. package/lib/typescript/src/components/Search/components/SearchCard.d.ts.map +1 -1
  278. package/lib/typescript/src/components/Settings/AppSettings.d.ts +2 -2
  279. package/lib/typescript/src/components/Settings/AppSettings.d.ts.map +1 -1
  280. package/lib/typescript/src/components/Subscription/SubOne.d.ts +2 -2
  281. package/lib/typescript/src/components/Subscription/SubOne.d.ts.map +1 -1
  282. package/lib/typescript/src/components/Subscription/index.d.ts +1 -1
  283. package/lib/typescript/src/components/Subscription/index.d.ts.map +1 -1
  284. package/lib/typescript/src/components/TabBar/One.d.ts +2 -2
  285. package/lib/typescript/src/components/TabBar/One.d.ts.map +1 -1
  286. package/lib/typescript/src/components/TabBar/Three.d.ts +2 -2
  287. package/lib/typescript/src/components/TabBar/Three.d.ts.map +1 -1
  288. package/lib/typescript/src/components/TabBar/Two.d.ts +2 -2
  289. package/lib/typescript/src/components/TabBar/Two.d.ts.map +1 -1
  290. package/lib/typescript/src/components/Text/Text.d.ts +3 -4
  291. package/lib/typescript/src/components/Text/Text.d.ts.map +1 -1
  292. package/lib/typescript/src/components/User/DeviceSessions/DeviceSessions.d.ts +2 -2
  293. package/lib/typescript/src/components/User/DeviceSessions/DeviceSessions.d.ts.map +1 -1
  294. package/lib/typescript/src/components/User/ProfileUpdate/ProfileUpdate.d.ts +2 -2
  295. package/lib/typescript/src/components/User/ProfileUpdate/ProfileUpdate.d.ts.map +1 -1
  296. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts +2 -2
  297. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts.map +1 -1
  298. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts +2 -2
  299. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts.map +1 -1
  300. package/lib/typescript/src/components/User/components/UserAvatar.d.ts +2 -2
  301. package/lib/typescript/src/components/User/components/UserAvatar.d.ts.map +1 -1
  302. package/lib/typescript/src/components/User/components/UserSection.d.ts +2 -2
  303. package/lib/typescript/src/components/User/components/UserSection.d.ts.map +1 -1
  304. package/lib/typescript/src/components/View/View.d.ts +2 -2
  305. package/lib/typescript/src/components/View/View.d.ts.map +1 -1
  306. package/lib/typescript/src/components/common/AppStatusBar.d.ts +17 -0
  307. package/lib/typescript/src/components/common/AppStatusBar.d.ts.map +1 -0
  308. package/lib/typescript/src/components/index.d.ts +3 -1
  309. package/lib/typescript/src/components/index.d.ts.map +1 -1
  310. package/lib/typescript/src/components/layout/SafeAreaWrapper.d.ts +2 -2
  311. package/lib/typescript/src/components/layout/SafeAreaWrapper.d.ts.map +1 -1
  312. package/lib/typescript/src/store/themeStore.d.ts +25 -0
  313. package/lib/typescript/src/store/themeStore.d.ts.map +1 -0
  314. package/lib/typescript/src/theme/ThemeProvider.d.ts +17 -10
  315. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
  316. package/lib/typescript/src/theme/hook/index.d.ts +3 -0
  317. package/lib/typescript/src/theme/hook/index.d.ts.map +1 -0
  318. package/lib/typescript/src/theme/hook/useInternalTheme.d.ts +7 -0
  319. package/lib/typescript/src/theme/hook/useInternalTheme.d.ts.map +1 -0
  320. package/lib/typescript/src/theme/hook/useThemeStatusBar.d.ts +10 -0
  321. package/lib/typescript/src/theme/hook/useThemeStatusBar.d.ts.map +1 -0
  322. package/lib/typescript/src/theme/index.d.ts +1 -6
  323. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  324. package/lib/typescript/src/theme/themes.d.ts +20 -2
  325. package/lib/typescript/src/theme/themes.d.ts.map +1 -1
  326. package/lib/typescript/src/types/content/content-view.types.d.ts +10 -3
  327. package/lib/typescript/src/types/content/content-view.types.d.ts.map +1 -1
  328. package/package.json +1 -1
  329. package/src/components/Account/Account.tsx +6 -6
  330. package/src/components/Alert/AlertDialog.tsx +4 -4
  331. package/src/components/Alert/UAAlert.tsx +5 -3
  332. package/src/components/Auth/AuthProvider/AuthProvider.tsx +106 -156
  333. package/src/components/Auth/ForgotPassword/ForgotPassword.tsx +6 -8
  334. package/src/components/Auth/Login/LoginWithEmail.tsx +9 -9
  335. package/src/components/Auth/Login/LoginWithPhone.tsx +8 -8
  336. package/src/components/Auth/OTP/OTP.tsx +7 -7
  337. package/src/components/Auth/QrLogin/QrLogin.tsx +8 -12
  338. package/src/components/Auth/QrLogin/components/QrViewArea.tsx +4 -4
  339. package/src/components/Auth/SignUp/SignUp.tsx +11 -11
  340. package/src/components/Auth/SplashScreen/SplashScreen.tsx +17 -30
  341. package/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.tsx +90 -74
  342. package/src/components/BackgroundLayout/BackgroundLayout.tsx +5 -3
  343. package/src/components/BlogView/BlogView.tsx +13 -8
  344. package/src/components/Button/BackBtn.tsx +4 -4
  345. package/src/components/Button/MenuBtn.tsx +4 -4
  346. package/src/components/Button/PrimaryBtn.tsx +4 -4
  347. package/src/components/Button/SecondaryBtn.tsx +4 -4
  348. package/src/components/Button/TextButton.tsx +2 -2
  349. package/src/components/Content/Card/Category/Category.tsx +5 -5
  350. package/src/components/Content/Card/NowWatching/NowWatching.tsx +6 -5
  351. package/src/components/Content/Card/Sliders/Styles/One.tsx +9 -6
  352. package/src/components/Content/Card/Sliders/Styles/Two.tsx +8 -5
  353. package/src/components/Content/Card/Styles/Five.tsx +5 -5
  354. package/src/components/Content/Card/Styles/Four.tsx +5 -5
  355. package/src/components/Content/Card/Styles/One.tsx +5 -5
  356. package/src/components/Content/Card/Styles/RotateInOut.tsx +5 -5
  357. package/src/components/Content/Card/Styles/Six.tsx +9 -6
  358. package/src/components/Content/Card/Styles/Three.tsx +5 -5
  359. package/src/components/Content/Card/Styles/TopTen.tsx +5 -5
  360. package/src/components/Content/Card/Styles/Two.tsx +5 -5
  361. package/src/components/Content/Card/components/CardPoster.tsx +6 -0
  362. package/src/components/Content/Card/components/RentOrBuyIcon.tsx +1 -1
  363. package/src/components/Content/Card/components/ShowAllButton.tsx +6 -1
  364. package/src/components/Content/Content.tsx +25 -5
  365. package/src/components/Content/Sections.tsx +2 -2
  366. package/src/components/ContentView/ContentView.tsx +112 -88
  367. package/src/components/ContentView/MoreContentList.tsx +5 -4
  368. package/src/components/ContentView/components/AboutSection.tsx +23 -3
  369. package/src/components/ContentView/components/CastCard.tsx +1 -1
  370. package/src/components/ContentView/components/EpisodeCard.tsx +21 -8
  371. package/src/components/ContentView/components/HeroBanner.tsx +55 -20
  372. package/src/components/ContentView/components/MiniInfo.tsx +193 -0
  373. package/src/components/ContentView/components/Title.tsx +17 -26
  374. package/src/components/ContentView/components/TrailerButton.tsx +6 -5
  375. package/src/components/Fallbacks/NoContentFallback.tsx +172 -0
  376. package/src/components/Fallbacks/NotFoundFallback.tsx +86 -0
  377. package/src/components/Fallbacks/index.ts +2 -0
  378. package/src/components/Headers/AppHeader.tsx +4 -4
  379. package/src/components/Headers/One.tsx +4 -4
  380. package/src/components/Headers/Three.tsx +4 -4
  381. package/src/components/Headers/Two.tsx +4 -4
  382. package/src/components/Input/InputOne.tsx +30 -7
  383. package/src/components/Input/InputTwo.tsx +4 -4
  384. package/src/components/Input/PhoneNumberInput.tsx +5 -5
  385. package/src/components/Logo/Logo.tsx +4 -4
  386. package/src/components/Search/One.tsx +10 -9
  387. package/src/components/Search/components/SearchCard.tsx +4 -4
  388. package/src/components/Settings/AppSettings.tsx +6 -6
  389. package/src/components/Subscription/SubOne.tsx +15 -16
  390. package/src/components/TabBar/One.tsx +10 -6
  391. package/src/components/TabBar/Three.tsx +4 -4
  392. package/src/components/TabBar/Two.tsx +9 -6
  393. package/src/components/Text/Text.tsx +26 -13
  394. package/src/components/User/DeviceSessions/DeviceSessions.tsx +6 -5
  395. package/src/components/User/ProfileUpdate/ProfileUpdate.tsx +10 -14
  396. package/src/components/User/WatchHistory/WatchHistory.tsx +5 -5
  397. package/src/components/User/WatchLater/WatchLater.tsx +7 -6
  398. package/src/components/User/components/UserAvatar.tsx +16 -10
  399. package/src/components/User/components/UserSection.tsx +5 -5
  400. package/src/components/View/View.tsx +2 -1
  401. package/src/components/common/AppStatusBar.tsx +51 -0
  402. package/src/components/index.ts +3 -1
  403. package/src/components/layout/SafeAreaWrapper.tsx +4 -4
  404. package/src/store/splashStore.ts +5 -5
  405. package/src/store/themeStore.ts +43 -0
  406. package/src/theme/ThemeProvider.tsx +39 -102
  407. package/src/theme/hook/index.ts +2 -0
  408. package/src/theme/hook/useInternalTheme.ts +83 -0
  409. package/src/theme/hook/useThemeStatusBar.ts +33 -0
  410. package/src/theme/index.ts +1 -7
  411. package/src/theme/themes.ts +40 -6
  412. package/src/types/content/content-view.types.ts +10 -3
  413. package/lib/module/components/Content/Card/components/NoContentFallback.js.map +0 -1
  414. package/lib/module/theme/hook/useTheme.js +0 -45
  415. package/lib/module/theme/hook/useTheme.js.map +0 -1
  416. package/lib/typescript/src/components/Content/Card/components/NoContentFallback.d.ts +0 -17
  417. package/lib/typescript/src/components/Content/Card/components/NoContentFallback.d.ts.map +0 -1
  418. package/lib/typescript/src/theme/hook/useTheme.d.ts +0 -9
  419. package/lib/typescript/src/theme/hook/useTheme.d.ts.map +0 -1
  420. package/src/components/Content/Card/components/NoContentFallback.tsx +0 -147
  421. package/src/theme/hook/useTheme.ts +0 -45
@@ -9,14 +9,13 @@ import {
9
9
  Dimensions,
10
10
  TouchableOpacity,
11
11
  ActivityIndicator,
12
- StatusBar,
13
12
  } from 'react-native';
14
13
  import { scale } from 'react-native-size-matters';
15
14
  import { RFValue } from 'react-native-responsive-fontsize';
16
15
  import { Text } from '../../Text';
17
16
  import AppHeader from '../../Headers/AppHeader';
18
- import { useTheme } from '../../../theme/hook/useTheme';
19
- import type { AppTheme } from '../../../theme/themes';
17
+ import { useInternalTheme } from '../../../theme/hook/useInternalTheme';
18
+ import type { ThemeOverride } from '../../../theme/themes';
20
19
  import { Camera as CameraIcon, QrCode } from 'lucide-react-native';
21
20
  import {
22
21
  Camera,
@@ -26,6 +25,7 @@ import {
26
25
  type Code as BaseCode,
27
26
  } from 'react-native-vision-camera';
28
27
  import QrViewArea from './components/QrViewArea';
28
+ import { AppStatusBar } from '../../common/AppStatusBar';
29
29
 
30
30
  const { width: SCREEN_W, height: SCREEN_H } = Dimensions.get('window');
31
31
  const HEADER_HEIGHT = 25;
@@ -43,7 +43,7 @@ export type QrLoginProps = {
43
43
  scanButtonText?: string;
44
44
  onBackPress?: () => void;
45
45
  onScanSuccess?: (value: string) => void;
46
- theme?: AppTheme;
46
+ theme?: ThemeOverride;
47
47
  cameraType?: 'back' | 'front';
48
48
  layout?: 'one' | 'two';
49
49
  };
@@ -65,7 +65,7 @@ export const QrLogin: React.FC<QrLoginProps> = ({
65
65
  cameraType = DEFAULTS.cameraType,
66
66
  layout = 'one',
67
67
  }) => {
68
- const { theme: appliedTheme } = useTheme(theme);
68
+ const { theme: appliedTheme } = useInternalTheme(theme);
69
69
  const { colors } = appliedTheme;
70
70
 
71
71
  const [scanActive, setScanActive] = useState(false);
@@ -144,17 +144,13 @@ export const QrLogin: React.FC<QrLoginProps> = ({
144
144
 
145
145
  return (
146
146
  <View style={[styles.container, { backgroundColor: colors.background }]}>
147
- <StatusBar
148
- translucent
149
- backgroundColor="transparent"
150
- barStyle={appliedTheme.dark ? 'light-content' : 'dark-content'}
151
- />
147
+ <AppStatusBar theme={theme} />
152
148
 
153
149
  <View style={[styles.headerWrapper, { height: HEADER_HEIGHT }]}>
154
150
  <AppHeader
155
151
  title={title}
156
152
  onBackPress={onBackPress}
157
- theme={appliedTheme}
153
+ theme={theme}
158
154
  titleAlign="left"
159
155
  />
160
156
  </View>
@@ -170,7 +166,7 @@ export const QrLogin: React.FC<QrLoginProps> = ({
170
166
  codeScanner={codeScanner}
171
167
  />
172
168
  <QrViewArea
173
- theme={appliedTheme}
169
+ theme={theme}
174
170
  layout={layout}
175
171
  headerHeight={HEADER_HEIGHT}
176
172
  />
@@ -13,8 +13,8 @@ import {
13
13
  } from 'react-native';
14
14
  import { scale } from 'react-native-size-matters';
15
15
  import Svg, { Rect } from 'react-native-svg';
16
- import type { AppTheme } from '../../../../theme/themes';
17
- import { useTheme } from '../../../../theme/hook/useTheme';
16
+ import type { ThemeOverride } from '../../../../theme/themes';
17
+ import { useInternalTheme } from '../../../../theme/hook/useInternalTheme';
18
18
 
19
19
  const { width: SCREEN_W, height: SCREEN_H } = Dimensions.get('window');
20
20
 
@@ -22,7 +22,7 @@ type QrViewAreaProps = {
22
22
  scanBoxWidth?: number;
23
23
  layout?: 'one' | 'two';
24
24
  headerHeight?: number;
25
- theme?: AppTheme;
25
+ theme?: ThemeOverride;
26
26
  };
27
27
 
28
28
  const QrViewArea: React.FC<QrViewAreaProps> = ({
@@ -31,7 +31,7 @@ const QrViewArea: React.FC<QrViewAreaProps> = ({
31
31
  headerHeight = 60,
32
32
  theme,
33
33
  }) => {
34
- const { theme: appliedTheme } = useTheme(theme);
34
+ const { theme: appliedTheme } = useInternalTheme(theme);
35
35
  const { colors } = appliedTheme;
36
36
 
37
37
  const anim = useRef(new Animated.Value(0)).current;
@@ -18,12 +18,12 @@ import { Button } from '../../Button';
18
18
  import { BackgroundLayout } from '../../BackgroundLayout/BackgroundLayout';
19
19
  import { Logo } from '../../Logo/Logo';
20
20
  import TextButton from '../../Button/TextButton';
21
- import { useTheme } from '../../../theme/hook/useTheme';
21
+ import { useInternalTheme } from '../../../theme/hook/useInternalTheme';
22
22
  import { useKeyboard } from '../../../hooks/useKeyboard';
23
23
  import HideKeyboard from '../../Keyboard/HideKeyboard';
24
24
  import BackBtn from '../../Button/BackBtn';
25
25
  import { Text } from '../../Text';
26
- import type { AppTheme } from '../../../theme/themes';
26
+ import type { ThemeOverride } from '../../../theme/themes';
27
27
  import { RFValue } from 'react-native-responsive-fontsize';
28
28
 
29
29
  type FormValues = {
@@ -52,7 +52,7 @@ export interface SignupProps {
52
52
  resizeMode?: 'cover' | 'contain' | 'stretch' | 'repeat';
53
53
  };
54
54
  logoUri?: string;
55
- theme?: AppTheme;
55
+ theme?: ThemeOverride;
56
56
  loadingSubmitBtn?: boolean;
57
57
  text?: {
58
58
  usernameLabel?: string;
@@ -120,7 +120,7 @@ const Signup: React.FC<SignupProps> = ({
120
120
  },
121
121
  mode: 'onChange',
122
122
  });
123
- const { theme: resolvedTheme } = useTheme(overrideTheme);
123
+ const { theme: resolvedTheme } = useInternalTheme(overrideTheme);
124
124
  const { isKeyboardOpen } = useKeyboard();
125
125
  const [isLoading, setIsLoading] = React.useState(false);
126
126
 
@@ -144,7 +144,7 @@ const Signup: React.FC<SignupProps> = ({
144
144
 
145
145
  return (
146
146
  <BackgroundLayout
147
- theme={resolvedTheme}
147
+ theme={overrideTheme}
148
148
  backgroundImage={backgroundImage?.source}
149
149
  gradientSplitBackground={
150
150
  isKeyboardOpen ? (Platform.OS === 'ios' ? 0.19 : 0.14) : 0.3
@@ -160,7 +160,7 @@ const Signup: React.FC<SignupProps> = ({
160
160
  })
161
161
  ) : (
162
162
  <BackBtn
163
- theme={resolvedTheme}
163
+ theme={overrideTheme}
164
164
  style={topBackBtnStyle}
165
165
  onPress={onTopBackBtnPress}
166
166
  />
@@ -205,7 +205,7 @@ const Signup: React.FC<SignupProps> = ({
205
205
  errorMessage={errors.username?.message}
206
206
  inputStyle={inputStyle}
207
207
  containerStyle={inputContainerStyle}
208
- theme={resolvedTheme}
208
+ theme={overrideTheme}
209
209
  />
210
210
  )}
211
211
  />
@@ -236,7 +236,7 @@ const Signup: React.FC<SignupProps> = ({
236
236
  errorMessage={errors.email?.message}
237
237
  inputStyle={inputStyle}
238
238
  containerStyle={inputContainerStyle}
239
- theme={resolvedTheme}
239
+ theme={overrideTheme}
240
240
  textContentType="emailAddress"
241
241
  autoCapitalize="none"
242
242
  keyboardType="email-address"
@@ -277,7 +277,7 @@ const Signup: React.FC<SignupProps> = ({
277
277
  spellCheck={false}
278
278
  autoCorrect={false}
279
279
  autoComplete="off"
280
- theme={resolvedTheme}
280
+ theme={overrideTheme}
281
281
  />
282
282
  )}
283
283
  />
@@ -312,7 +312,7 @@ const Signup: React.FC<SignupProps> = ({
312
312
  errorMessage={errors.confirmPassword?.message}
313
313
  inputStyle={inputStyle}
314
314
  containerStyle={inputContainerStyle}
315
- theme={resolvedTheme}
315
+ theme={overrideTheme}
316
316
  textContentType="none"
317
317
  autoCapitalize="none"
318
318
  spellCheck={false}
@@ -334,7 +334,7 @@ const Signup: React.FC<SignupProps> = ({
334
334
  <Button.Primary
335
335
  title={text?.signupButton || 'Sign up'}
336
336
  disabled={!isValid}
337
- theme={resolvedTheme}
337
+ theme={overrideTheme}
338
338
  loading={loadingSubmitBtn || isLoading}
339
339
  loadingText={text?.loadingSubmitBtnText || 'Signing up...'}
340
340
  onPress={handleSubmit(handleFormSubmit)}
@@ -4,18 +4,16 @@
4
4
  */
5
5
 
6
6
  import React, { useEffect, useMemo, useCallback } from 'react';
7
- import { StatusBar, type ViewStyle } from 'react-native';
8
- import Color from 'color';
9
-
7
+ import { type ViewStyle } from 'react-native';
10
8
  import SplashImage from './components/SplashImage/SplashImage';
11
9
  import SplashVideo from './components/SplashVideo/SplashVideo';
12
10
  import SplashLottie from './components/SplashLottie/SplashLottie';
13
11
 
14
- import { useTheme } from '../../../theme';
15
- import type { AppTheme } from '../../../theme/themes';
12
+ import type { ThemeOverride } from '../../../theme/themes';
16
13
 
17
14
  import { BackgroundLayout } from '../../BackgroundLayout/BackgroundLayout';
18
15
  import { useSplashCache } from '../../../hooks/useSplashCache';
16
+ import { AppStatusBar } from '../../common/AppStatusBar';
19
17
 
20
18
  type SplashType = 'image' | 'video' | 'lottie-animation';
21
19
 
@@ -36,7 +34,7 @@ type SplashScreenProps = {
36
34
  splashScreenConfig: SplashScreenConfig;
37
35
  innerContainerStyle?: ViewStyle;
38
36
  onRedirect: () => void;
39
- theme?: AppTheme;
37
+ theme?: ThemeOverride;
40
38
  backgroundImage?: {
41
39
  source?: string | null;
42
40
  onImageError?: (error: Error) => void;
@@ -70,7 +68,6 @@ export const SplashScreen: React.FC<SplashScreenProps> = ({
70
68
  backgroundColor: splashBgColor,
71
69
  } = splashScreenConfig;
72
70
 
73
- const { theme } = useTheme(overrideTheme);
74
71
  const isRemote = splashSource.startsWith('http');
75
72
  const isImageSplash = splashType === 'image';
76
73
 
@@ -159,23 +156,6 @@ export const SplashScreen: React.FC<SplashScreenProps> = ({
159
156
  handleRedirect,
160
157
  ]);
161
158
 
162
- /** 🎨 Safe Background Color Calculation */
163
- const safeBgColor = useMemo(() => {
164
- try {
165
- if (!splashBgColor) return theme.colors.background;
166
- const c = Color(splashBgColor);
167
- return c.alpha() < 0.8 ? theme.colors.background : c.hex();
168
- } catch {
169
- return theme.colors.background;
170
- }
171
- }, [splashBgColor, theme.colors.background]);
172
-
173
- const statusBarStyle: 'light-content' | 'dark-content' = Color(
174
- safeBgColor
175
- ).isDark()
176
- ? 'light-content'
177
- : 'dark-content';
178
-
179
159
  return (
180
160
  <BackgroundLayout
181
161
  backgroundImage={isImageSplash ? backgroundImage.source : undefined}
@@ -183,15 +163,22 @@ export const SplashScreen: React.FC<SplashScreenProps> = ({
183
163
  resizeMode={backgroundImage.resizeMode ?? 'cover'}
184
164
  innerContainerStyle={innerContainerStyle}
185
165
  onImageError={backgroundImage.onImageError}
186
- theme={theme}
166
+ theme={overrideTheme}
187
167
  gradientSplitBackground={backgroundImage.gradientSplitBackground ?? 0.4}
188
168
  >
189
- <StatusBar
190
- translucent
191
- backgroundColor="transparent"
192
- barStyle={statusBarStyle}
169
+ <AppStatusBar
170
+ theme={{
171
+ ...overrideTheme,
172
+ dark: {
173
+ ...overrideTheme?.dark,
174
+ background: splashBgColor,
175
+ },
176
+ light: {
177
+ ...overrideTheme?.light,
178
+ background: splashBgColor,
179
+ },
180
+ }}
193
181
  />
194
-
195
182
  {renderSplashContent()}
196
183
  </BackgroundLayout>
197
184
  );
@@ -1,41 +1,53 @@
1
1
  /**
2
2
  * @author Naresh Dhamu
3
- * @lastModified Thu 17 Oct 2025
3
+ * @lastModified Sat 25 Oct 2025
4
4
  */
5
- import React, { useMemo, useCallback, useState } from 'react';
6
- import { View, StyleSheet, Animated } from 'react-native';
7
- import Video from 'react-native-video';
5
+
6
+ import React, {
7
+ useMemo,
8
+ useCallback,
9
+ useRef,
10
+ useState,
11
+ useEffect,
12
+ } from 'react';
13
+ import { StyleSheet, Animated, View as RNView } from 'react-native';
14
+ import Video, {
15
+ type OnLoadData,
16
+ type OnVideoErrorData,
17
+ } from 'react-native-video';
8
18
  import Display from '../../../../../utils/Display';
9
- import { useTheme } from '../../../../../theme';
19
+ import { useInternalTheme } from '../../../../../theme/hook';
20
+ import { View } from '../../../../View';
21
+ import { Loader } from '../../../../Loader/Loader';
10
22
 
11
23
  interface IProps {
12
- width: number;
13
- height: number;
24
+ width?: number;
25
+ height?: number;
14
26
  source: string;
15
- fullscreen: boolean;
27
+ fullscreen?: boolean;
16
28
  resizeMode?: 'cover' | 'contain' | 'stretch' | 'none';
17
29
  onEnd?: () => void;
18
30
  onLoadStart?: () => void;
19
- onLoaded?: (data: any) => void;
20
- onError?: (error: any) => void;
31
+ onLoaded?: (data: OnLoadData) => void;
32
+ onError?: (error: string) => void;
21
33
  }
22
34
 
23
35
  const SplashVideo: React.FC<IProps> = ({
24
- fullscreen,
25
- height,
36
+ fullscreen = false,
37
+ width = Display.fullWidth,
38
+ height = Display.fullHeight,
26
39
  source,
27
40
  resizeMode = 'cover',
28
- width,
29
41
  onEnd,
30
42
  onLoadStart,
31
43
  onLoaded,
32
44
  onError,
33
45
  }) => {
34
- const { theme: applyTheme } = useTheme();
35
- const [loaded, setLoaded] = useState(false);
36
- const fadeAnim = useMemo(() => new Animated.Value(0), []);
46
+ const { theme: applyTheme } = useInternalTheme();
47
+ const fadeAnim = useRef(new Animated.Value(0)).current;
48
+ const [isLoaded, setIsLoaded] = useState(false);
37
49
 
38
- // Video style
50
+ /** 🎨 Compute video dimensions */
39
51
  const videoStyle = useMemo(
40
52
  () => ({
41
53
  width: fullscreen ? Display.fullWidth : width,
@@ -44,77 +56,71 @@ const SplashVideo: React.FC<IProps> = ({
44
56
  [fullscreen, width, height]
45
57
  );
46
58
 
47
- // Event handlers
59
+ /** 🌀 Fade-in animation */
60
+ const animateIn = useCallback(() => {
61
+ Animated.timing(fadeAnim, {
62
+ toValue: 1,
63
+ duration: 400,
64
+ useNativeDriver: true,
65
+ }).start();
66
+ }, [fadeAnim]);
67
+
68
+ /** 📦 Resolve video URI */
69
+ const resolveUri = useCallback((src: string): string => {
70
+ if (!src) return '';
71
+ if (/^(https?|file):\/\//.test(src)) return src;
72
+ return `file://${src}`;
73
+ }, []);
74
+
75
+ /** 🔄 Video lifecycle handlers */
48
76
  const handleLoadStart = useCallback(() => {
49
- setLoaded(false);
50
- fadeAnim.setValue(0); // Reset fade animation
77
+ setIsLoaded(false);
78
+ fadeAnim.setValue(0);
51
79
  onLoadStart?.();
52
- }, [onLoadStart, fadeAnim]);
80
+ }, [fadeAnim, onLoadStart]);
53
81
 
54
82
  const handleLoad = useCallback(
55
- (data: any) => {
56
- setLoaded(true);
57
-
58
- // Fade-in animation
59
- Animated.timing(fadeAnim, {
60
- toValue: 1,
61
- duration: 400, // 0.4s smooth fade
62
- useNativeDriver: true,
63
- }).start();
64
-
83
+ (data: OnLoadData) => {
84
+ setIsLoaded(true);
85
+ animateIn();
65
86
  onLoaded?.(data);
66
87
  },
67
- [onLoaded, fadeAnim]
88
+ [animateIn, onLoaded]
68
89
  );
69
90
 
70
91
  const handleError = useCallback(
71
- (e: any) => {
72
- const error =
73
- e?.error?.message ||
74
- e?.message ||
75
- e?.error ||
76
- e ||
92
+ (err: OnVideoErrorData | any) => {
93
+ const errorMsg =
94
+ err?.error?.message ||
95
+ err?.message ||
96
+ JSON.stringify(err) ||
77
97
  'Unknown video error';
78
- console.error('Video playback error:', error);
79
- setLoaded(false);
80
- onError?.(error);
98
+ console.error('🎬 SplashVideo Error:', errorMsg);
99
+ setIsLoaded(false);
100
+ onError?.(errorMsg);
81
101
  },
82
102
  [onError]
83
103
  );
84
104
 
85
- const resolveUri = (src?: string): string => {
86
- if (!src) return '';
87
- if (
88
- src.startsWith('http') ||
89
- src.startsWith('https') ||
90
- src.startsWith('file://')
91
- ) {
92
- return src;
93
- }
94
- return `file://${src}`;
95
- };
105
+ /** 🧹 Cleanup animation */
106
+ useEffect(() => {
107
+ return () => fadeAnim.stopAnimation();
108
+ }, [fadeAnim]);
96
109
 
110
+ /** 🧱 Render */
97
111
  return (
98
- <View
99
- style={[
100
- videoStyle,
101
- styles.wrapper,
102
- { backgroundColor: applyTheme.colors.background },
103
- ]}
104
- >
105
- {/* Black background layer */}
106
- {!loaded && (
107
- <View
108
- style={[
109
- videoStyle,
110
- styles.blackLayer,
111
- { backgroundColor: applyTheme.colors.background },
112
- ]}
113
- />
112
+ <View style={styles.container}>
113
+ {/* Loader shown before video fully loads */}
114
+ {!isLoaded && (
115
+ <RNView style={styles.loaderWrapper}>
116
+ <Loader color={applyTheme.colors.primary} />
117
+ </RNView>
114
118
  )}
115
119
 
116
- {/* Animated video */}
117
- <Animated.View style={[videoStyle, { opacity: fadeAnim }]}>
120
+ {/* Video Layer */}
121
+ <Animated.View
122
+ style={[videoStyle, { opacity: fadeAnim, position: 'absolute' }]}
123
+ >
118
124
  <Video
119
125
  source={{ uri: resolveUri(source) }}
120
126
  style={videoStyle}
@@ -143,6 +149,8 @@ const SplashVideo: React.FC<IProps> = ({
143
149
  playWhenInactive={false}
144
150
  allowsExternalPlayback={false}
145
151
  automaticallyWaitsToMinimizeStalling
152
+ controls={false}
153
+ repeat={false}
146
154
  />
147
155
  </Animated.View>
148
156
  </View>
@@ -150,14 +158,22 @@ const SplashVideo: React.FC<IProps> = ({
150
158
  };
151
159
 
152
160
  const styles = StyleSheet.create({
153
- wrapper: {
154
- overflow: 'hidden',
161
+ container: {
162
+ flex: 1,
163
+ position: 'relative',
164
+ justifyContent: 'center',
165
+ alignItems: 'center',
155
166
  },
156
- blackLayer: {
157
- ...StyleSheet.absoluteFillObject,
158
167
 
168
+ loaderWrapper: {
169
+ ...StyleSheet.absoluteFillObject,
170
+ justifyContent: 'center',
171
+ alignItems: 'center',
159
172
  zIndex: 1,
160
173
  },
174
+ loader: {
175
+ transform: [{ scale: 1.2 }],
176
+ },
161
177
  });
162
178
 
163
179
  export default React.memo(SplashVideo);
@@ -7,8 +7,9 @@ import {
7
7
  type ImageStyle,
8
8
  } from 'react-native';
9
9
  import LinearGradient from 'react-native-linear-gradient';
10
- import type { ITheme } from '../../theme/themes';
10
+ import type { ThemeOverride } from '../../theme/themes';
11
11
  import { useSplashCache } from '../../hooks/useSplashCache';
12
+ import { useInternalTheme } from '../../theme/hook';
12
13
 
13
14
  interface BackgroundLayoutProps {
14
15
  children: React.ReactNode;
@@ -17,7 +18,7 @@ interface BackgroundLayoutProps {
17
18
  gradientSplitBackground?: number;
18
19
  resizeMode?: 'cover' | 'contain' | 'stretch' | 'repeat' | 'center';
19
20
  innerContainerStyle?: ViewStyle;
20
- theme: ITheme;
21
+ theme?: ThemeOverride;
21
22
  onImageError?: (error: Error) => void;
22
23
  }
23
24
 
@@ -30,9 +31,10 @@ export const BackgroundLayout: React.FC<BackgroundLayoutProps> = (props) => {
30
31
  resizeMode = 'cover',
31
32
  innerContainerStyle,
32
33
  onImageError,
33
- theme,
34
+ theme: themeOverride,
34
35
  } = props;
35
36
 
37
+ const { theme } = useInternalTheme(themeOverride);
36
38
  const {
37
39
  data: { backgroundPath: localPathBackground },
38
40
  } = useSplashCache({
@@ -9,10 +9,10 @@ import {
9
9
  } from 'react-native';
10
10
  import Markdown from 'react-native-markdown-display';
11
11
  import { Text } from '../Text';
12
- import { useTheme } from '../../theme/hook/useTheme';
12
+ import { useInternalTheme } from '../../theme/hook/useInternalTheme';
13
13
  import AppHeader from '../Headers/AppHeader';
14
14
  import { scale, moderateScale } from 'react-native-size-matters';
15
- import type { AppTheme, ITheme } from '../../theme/themes';
15
+ import type { ITheme, ThemeOverride } from '../../theme/themes';
16
16
  import { RFValue } from 'react-native-responsive-fontsize';
17
17
 
18
18
  type BlogViewProps = {
@@ -20,7 +20,7 @@ type BlogViewProps = {
20
20
  containerStyle?: ViewStyle;
21
21
  scrollable?: boolean;
22
22
  emptyText?: string;
23
- theme?: AppTheme;
23
+ theme?: ThemeOverride;
24
24
 
25
25
  // Header customization
26
26
  headerTitle?: string;
@@ -51,7 +51,7 @@ export const BlogView: React.FC<BlogViewProps> = ({
51
51
  renderEmpty,
52
52
  isLoading = false,
53
53
  }) => {
54
- const { theme: appliedTheme } = useTheme(theme);
54
+ const { theme: appliedTheme, isDarkMode } = useInternalTheme(theme);
55
55
 
56
56
  const renderFinalHeader = () => {
57
57
  if (renderHeader) return renderHeader();
@@ -62,7 +62,7 @@ export const BlogView: React.FC<BlogViewProps> = ({
62
62
  onRightPress={onRightPress}
63
63
  title={headerTitle}
64
64
  titleAlign="left"
65
- theme={appliedTheme}
65
+ theme={theme}
66
66
  titleStyle={{
67
67
  ...styles.headerTitle,
68
68
  color: appliedTheme.colors.onBackground,
@@ -83,7 +83,9 @@ export const BlogView: React.FC<BlogViewProps> = ({
83
83
  if (renderContent) return renderContent();
84
84
  if (content) {
85
85
  return (
86
- <Markdown style={getMarkdownStyles(appliedTheme)}>{content}</Markdown>
86
+ <Markdown style={getMarkdownStyles(appliedTheme, isDarkMode)}>
87
+ {content}
88
+ </Markdown>
87
89
  );
88
90
  }
89
91
 
@@ -130,7 +132,10 @@ export const BlogView: React.FC<BlogViewProps> = ({
130
132
  );
131
133
  };
132
134
 
133
- const getMarkdownStyles = (theme: ITheme): { [key: string]: TextStyle } => {
135
+ const getMarkdownStyles = (
136
+ theme: ITheme,
137
+ isDarkMode: boolean
138
+ ): { [key: string]: TextStyle } => {
134
139
  const baseColor = theme.colors.textPrimary;
135
140
 
136
141
  return {
@@ -161,7 +166,7 @@ const getMarkdownStyles = (theme: ITheme): { [key: string]: TextStyle } => {
161
166
  ordered_list: { color: baseColor },
162
167
  link: { color: theme.colors.primary },
163
168
  blockquote: {
164
- backgroundColor: theme.dark
169
+ backgroundColor: isDarkMode
165
170
  ? theme.colors.surfaceVariant
166
171
  : theme.colors.surface,
167
172
  color: theme.colors.onSurface,
@@ -13,17 +13,17 @@ import {
13
13
  } from 'react-native';
14
14
  import { ArrowLeft } from 'lucide-react-native';
15
15
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
16
- import { useTheme } from '../../theme/hook/useTheme';
16
+ import { useInternalTheme } from '../../theme/hook/useInternalTheme';
17
17
  import { scale, verticalScale } from 'react-native-size-matters';
18
18
  import { BlurView } from '@react-native-community/blur';
19
- import type { AppTheme } from '../../theme/themes';
19
+ import type { ThemeOverride } from '../../theme/themes';
20
20
 
21
21
  type BackBtnProps = {
22
22
  size?: number;
23
23
  color?: string;
24
24
  onPress?: () => void;
25
25
  style?: StyleProp<ViewStyle>;
26
- theme?: AppTheme;
26
+ theme?: ThemeOverride;
27
27
  enableBlur?: boolean;
28
28
  };
29
29
 
@@ -36,7 +36,7 @@ const BackBtn: React.FC<BackBtnProps> = ({
36
36
  enableBlur = false,
37
37
  }) => {
38
38
  const insets = useSafeAreaInsets();
39
- const { theme: appliedTheme } = useTheme(theme);
39
+ const { theme: appliedTheme } = useInternalTheme(theme);
40
40
 
41
41
  const handlePress = () => {
42
42
  if (onPress) {
@@ -21,15 +21,15 @@ import {
21
21
  import { Ellipsis } from 'lucide-react-native';
22
22
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
23
23
  import { BlurView } from '@react-native-community/blur';
24
- import { useTheme } from '../../theme/hook/useTheme';
24
+ import { useInternalTheme } from '../../theme/hook/useInternalTheme';
25
25
  import { scale, verticalScale } from 'react-native-size-matters';
26
- import type { AppTheme } from '../../theme/themes';
26
+ import type { ThemeOverride } from '../../theme/themes';
27
27
  import type { MenuAction } from '../../types/content/content-view.types';
28
28
  import { RFValue } from 'react-native-responsive-fontsize';
29
29
 
30
30
  type MenuBtnProps = {
31
31
  actions: MenuAction[];
32
- theme?: AppTheme;
32
+ theme?: ThemeOverride;
33
33
  style?: StyleProp<ViewStyle>;
34
34
  enableBlur?: boolean;
35
35
  };
@@ -41,7 +41,7 @@ const MenuBtn: React.FC<MenuBtnProps> = ({
41
41
  enableBlur = false,
42
42
  }) => {
43
43
  const insets = useSafeAreaInsets();
44
- const { theme: appliedTheme } = useTheme(theme);
44
+ const { theme: appliedTheme } = useInternalTheme(theme);
45
45
  const [visible, setVisible] = useState(false);
46
46
  const [menuPosition, setMenuPosition] = useState<{
47
47
  top: number;