@zezosoft/zezo-ott-react-native-ui-kit 1.3.6 → 1.3.8

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 (276) hide show
  1. package/README.md +40 -36
  2. package/lib/module/components/Content/Card/components/AdsPoster.js +40 -55
  3. package/lib/module/components/Content/Card/components/AdsPoster.js.map +1 -1
  4. package/lib/module/components/Content/Card/components/CardPoster.js +81 -107
  5. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  6. package/lib/module/components/Content/Card/components/ThumbnailCard.js +48 -70
  7. package/lib/module/components/Content/Card/components/ThumbnailCard.js.map +1 -1
  8. package/lib/module/components/Search/components/SearchCard.js +2 -2
  9. package/lib/module/components/Search/components/SearchCard.js.map +1 -1
  10. package/lib/typescript/src/components/Content/Card/components/AdsPoster.d.ts +1 -1
  11. package/lib/typescript/src/components/Content/Card/components/AdsPoster.d.ts.map +1 -1
  12. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  13. package/lib/typescript/src/components/Content/Card/components/ThumbnailCard.d.ts +1 -1
  14. package/lib/typescript/src/components/Content/Card/components/ThumbnailCard.d.ts.map +1 -1
  15. package/lib/typescript/src/components/Search/components/SearchCard.d.ts.map +1 -1
  16. package/package.json +1 -3
  17. package/lib/module/utils/colorUtils.js +0 -68
  18. package/lib/module/utils/colorUtils.js.map +0 -1
  19. package/lib/typescript/src/utils/colorUtils.d.ts +0 -19
  20. package/lib/typescript/src/utils/colorUtils.d.ts.map +0 -1
  21. package/src/assets/animations/135037-payment-processing-error.json +0 -1347
  22. package/src/assets/animations/7227-vui-animation.json +0 -3377
  23. package/src/assets/animations/Failed.json +0 -2103
  24. package/src/assets/animations/Pending.json +0 -522
  25. package/src/assets/animations/Successful.json +0 -2289
  26. package/src/assets/animations/heart.json +0 -788
  27. package/src/assets/animations/succesfull-payment.json +0 -2379
  28. package/src/assets/animations/voice-icon.json +0 -542
  29. package/src/assets/img/back.png +0 -0
  30. package/src/assets/img/bottom-panel.png +0 -0
  31. package/src/assets/img/camera.png +0 -0
  32. package/src/assets/img/camera2.png +0 -0
  33. package/src/assets/img/home.png +0 -0
  34. package/src/assets/img/lock.png +0 -0
  35. package/src/assets/img/play.png +0 -0
  36. package/src/assets/img/profile.jpg +0 -0
  37. package/src/assets/img/qr-code.png +0 -0
  38. package/src/assets/img/shadow.png +0 -0
  39. package/src/assets/img/shadow2.png +0 -0
  40. package/src/assets/img/user.png +0 -0
  41. package/src/assets/svg/Account.svg +0 -4
  42. package/src/assets/svg/Favourite.svg +0 -14
  43. package/src/assets/svg/Upcoming.svg +0 -4
  44. package/src/assets/svg/content-error.svg +0 -28
  45. package/src/assets/svg/download.svg +0 -3
  46. package/src/assets/svg/eye-off.svg +0 -10
  47. package/src/assets/svg/favorites.svg +0 -3
  48. package/src/assets/svg/h.svg +0 -4
  49. package/src/assets/svg/home.svg +0 -5
  50. package/src/assets/svg/home1.svg +0 -3
  51. package/src/assets/svg/menu-bar.svg +0 -4
  52. package/src/assets/svg/my-space.svg +0 -14
  53. package/src/assets/svg/play-icon-with-bg.svg +0 -5
  54. package/src/assets/svg/profile.svg +0 -4
  55. package/src/assets/svg/search.svg +0 -5
  56. package/src/assets/svg/search1.svg +0 -4
  57. package/src/assets/svg/server-error.svg +0 -139
  58. package/src/components/Account/Account.tsx +0 -354
  59. package/src/components/Account/index.ts +0 -6
  60. package/src/components/Alert/AlertDialog.tsx +0 -253
  61. package/src/components/Alert/UAAlert.tsx +0 -176
  62. package/src/components/Alert/index.ts +0 -7
  63. package/src/components/Auth/AuthProvider/AuthProvider.tsx +0 -412
  64. package/src/components/Auth/One/ForgotPassword/ForgotPassword.tsx +0 -333
  65. package/src/components/Auth/One/Login/LoginWithEmail.tsx +0 -449
  66. package/src/components/Auth/One/Login/LoginWithPhone.tsx +0 -309
  67. package/src/components/Auth/One/OTP/OTP.tsx +0 -539
  68. package/src/components/Auth/One/QrLogin/QrLogin.tsx +0 -329
  69. package/src/components/Auth/One/QrLogin/components/index.ts +0 -8
  70. package/src/components/Auth/One/QrLogin/components/qr-scanner-fallback.tsx +0 -158
  71. package/src/components/Auth/One/QrLogin/components/qr-scanner-frame.tsx +0 -207
  72. package/src/components/Auth/One/QrLogin/components/qr-scanner-header.tsx +0 -65
  73. package/src/components/Auth/One/QrLogin/components/qr-scanner-intro.tsx +0 -255
  74. package/src/components/Auth/One/QrLogin/components/qr-scanner-overlay.tsx +0 -291
  75. package/src/components/Auth/One/SignUp/SignUp.tsx +0 -470
  76. package/src/components/Auth/One/SplashScreen/SplashScreen.tsx +0 -229
  77. package/src/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.tsx +0 -92
  78. package/src/components/Auth/One/SplashScreen/components/SplashLottie/SplashLottie.tsx +0 -129
  79. package/src/components/Auth/One/SplashScreen/components/SplashVideo/SplashVideo.tsx +0 -172
  80. package/src/components/Auth/One/SplashScreen/utils/splashUtils.ts +0 -23
  81. package/src/components/Auth/One/index.ts +0 -24
  82. package/src/components/Auth/Two/AuthHeader/AuthHeader.tsx +0 -130
  83. package/src/components/Auth/Two/ForgotPassword/ForgotPassword.tsx +0 -331
  84. package/src/components/Auth/Two/Login/EmailOrPhoneLogin.tsx +0 -612
  85. package/src/components/Auth/Two/OTP/OTP.tsx +0 -504
  86. package/src/components/Auth/Two/SignUp/SignUp.tsx +0 -439
  87. package/src/components/Auth/Two/index.ts +0 -20
  88. package/src/components/Auth/index.ts +0 -16
  89. package/src/components/BackgroundLayout/One/One.tsx +0 -184
  90. package/src/components/BackgroundLayout/Two/Two.tsx +0 -65
  91. package/src/components/BackgroundLayout/index.ts +0 -14
  92. package/src/components/BlogView/BlogView.tsx +0 -282
  93. package/src/components/BlogView/index.ts +0 -8
  94. package/src/components/BlurView/BlurView.tsx +0 -199
  95. package/src/components/BlurView/index.ts +0 -7
  96. package/src/components/BottomSheet/BottomSheet.tsx +0 -204
  97. package/src/components/BottomSheet/BottomSheetOne.tsx +0 -223
  98. package/src/components/BottomSheet/index.ts +0 -9
  99. package/src/components/Button/BackBtn.tsx +0 -149
  100. package/src/components/Button/MenuBtn.tsx +0 -220
  101. package/src/components/Button/PrimaryBtn.tsx +0 -123
  102. package/src/components/Button/SecondaryBtn.tsx +0 -123
  103. package/src/components/Button/TextButton.tsx +0 -150
  104. package/src/components/Button/index.ts +0 -18
  105. package/src/components/Button/types.ts +0 -33
  106. package/src/components/Content/Card/Category/Category.tsx +0 -436
  107. package/src/components/Content/Card/Category/CategroyTwo.tsx +0 -429
  108. package/src/components/Content/Card/NowWatching/NowWatching.tsx +0 -607
  109. package/src/components/Content/Card/Sliders/Styles/One.tsx +0 -490
  110. package/src/components/Content/Card/Sliders/Styles/Three.tsx +0 -1017
  111. package/src/components/Content/Card/Sliders/Styles/Two.tsx +0 -395
  112. package/src/components/Content/Card/Sliders/index.ts +0 -18
  113. package/src/components/Content/Card/Styles/Five.tsx +0 -367
  114. package/src/components/Content/Card/Styles/Four.tsx +0 -366
  115. package/src/components/Content/Card/Styles/One.tsx +0 -372
  116. package/src/components/Content/Card/Styles/RotateInOut.tsx +0 -413
  117. package/src/components/Content/Card/Styles/Six.tsx +0 -378
  118. package/src/components/Content/Card/Styles/Three.tsx +0 -312
  119. package/src/components/Content/Card/Styles/TopTen.tsx +0 -402
  120. package/src/components/Content/Card/Styles/Two.tsx +0 -404
  121. package/src/components/Content/Card/components/AdsPoster.tsx +0 -207
  122. package/src/components/Content/Card/components/CardPoster.tsx +0 -377
  123. package/src/components/Content/Card/components/LiveBadge.tsx +0 -125
  124. package/src/components/Content/Card/components/NavigateToMore.tsx +0 -97
  125. package/src/components/Content/Card/components/RentOrBuyIcon.tsx +0 -134
  126. package/src/components/Content/Card/components/ShowAllButton.tsx +0 -92
  127. package/src/components/Content/Card/components/ThumbnailCard.tsx +0 -219
  128. package/src/components/Content/Card/components/index.ts +0 -12
  129. package/src/components/Content/Card/index.ts +0 -31
  130. package/src/components/Content/Content.tsx +0 -338
  131. package/src/components/Content/Sections.tsx +0 -239
  132. package/src/components/Content/types.ts +0 -180
  133. package/src/components/ContentView/MoreContentList.tsx +0 -330
  134. package/src/components/ContentView/One/ContentViewOne.tsx +0 -251
  135. package/src/components/ContentView/One/components/CastCard.tsx +0 -266
  136. package/src/components/ContentView/One/components/HeroBanner.tsx +0 -413
  137. package/src/components/ContentView/One/components/MiniInfo.tsx +0 -343
  138. package/src/components/ContentView/One/components/Title.tsx +0 -149
  139. package/src/components/ContentView/Two/ContentViewTwo.tsx +0 -332
  140. package/src/components/ContentView/Two/components/Details.tsx +0 -196
  141. package/src/components/ContentView/Two/components/HeroBanner.tsx +0 -267
  142. package/src/components/ContentView/Two/components/LikeShareActions.tsx +0 -125
  143. package/src/components/ContentView/Two/components/MoreLikeThisContentList .tsx +0 -308
  144. package/src/components/ContentView/Two/components/PlayOrTrailer.tsx +0 -162
  145. package/src/components/ContentView/Two/components/SectionTabs.tsx +0 -181
  146. package/src/components/ContentView/Two/components/Title.tsx +0 -229
  147. package/src/components/ContentView/Two/components/index.ts +0 -12
  148. package/src/components/ContentView/index.ts +0 -13
  149. package/src/components/ContentView/shared/AboutSection.tsx +0 -226
  150. package/src/components/ContentView/shared/EpisodeCard.tsx +0 -600
  151. package/src/components/ContentView/shared/GenreTags.tsx +0 -189
  152. package/src/components/ContentView/shared/PlayButton.tsx +0 -52
  153. package/src/components/ContentView/shared/TrailerButton.tsx +0 -76
  154. package/src/components/Fallbacks/NoContentFallback.tsx +0 -175
  155. package/src/components/Fallbacks/NotFoundFallback.tsx +0 -94
  156. package/src/components/Fallbacks/index.ts +0 -7
  157. package/src/components/Headers/AppHeader.tsx +0 -151
  158. package/src/components/Headers/Four.tsx +0 -84
  159. package/src/components/Headers/One.tsx +0 -115
  160. package/src/components/Headers/Three.tsx +0 -137
  161. package/src/components/Headers/Two.tsx +0 -101
  162. package/src/components/Headers/index.ts +0 -34
  163. package/src/components/Input/Input.ts +0 -18
  164. package/src/components/Input/InputOne.tsx +0 -265
  165. package/src/components/Input/InputThree.tsx +0 -205
  166. package/src/components/Input/InputTwo.tsx +0 -217
  167. package/src/components/Input/PhoneInput/One/One.tsx +0 -415
  168. package/src/components/Input/PhoneInput/Two/Two.tsx +0 -406
  169. package/src/components/Input/PhoneInput/index.ts +0 -14
  170. package/src/components/Keyboard/HideKeyboard.tsx +0 -91
  171. package/src/components/Loader/Loader.tsx +0 -49
  172. package/src/components/Logo/Logo.tsx +0 -150
  173. package/src/components/NewRelease/NewReleaseSheet.tsx +0 -260
  174. package/src/components/NewRelease/index.ts +0 -6
  175. package/src/components/Reels/ReelsSeries/MediaControls/BottomControls.tsx +0 -226
  176. package/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.tsx +0 -324
  177. package/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.tsx +0 -201
  178. package/src/components/Reels/ReelsSeries/MediaControls/RightControls.tsx +0 -100
  179. package/src/components/Reels/ReelsSeries/MediaControls/TopControls.tsx +0 -168
  180. package/src/components/Reels/ReelsSeries/Model/DetailsModal.tsx +0 -207
  181. package/src/components/Reels/ReelsSeries/Model/SettingModal.tsx +0 -151
  182. package/src/components/Reels/ReelsSeries/Model/UnlockModal.tsx +0 -159
  183. package/src/components/Reels/ReelsSeries/ReelsSeries.tsx +0 -278
  184. package/src/components/Reels/ReelsSeries/ReelsSeriesItem.tsx +0 -569
  185. package/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.tsx +0 -189
  186. package/src/components/Reels/ReelsSeries/components/Episodes.tsx +0 -159
  187. package/src/components/Reels/ReelsSeries/components/GradientOverlay.tsx +0 -46
  188. package/src/components/Reels/ReelsSeries/components/Like.tsx +0 -45
  189. package/src/components/Reels/ReelsSeries/components/RotatingLoader.tsx +0 -84
  190. package/src/components/Reels/ReelsSeries/components/Synopsis.tsx +0 -338
  191. package/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.tsx +0 -185
  192. package/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.tsx +0 -77
  193. package/src/components/Reels/ReelsSeries/components/VideoControls/index.ts +0 -7
  194. package/src/components/Reels/ReelsSeries/types.ts +0 -78
  195. package/src/components/Reels/ReelsSeries/useReelsWatchProgress.ts +0 -90
  196. package/src/components/Reels/ReelsSeries/utils/quality.ts +0 -72
  197. package/src/components/Reels/index.ts +0 -9
  198. package/src/components/Reels/utils/Controls/gestureUtils.ts +0 -46
  199. package/src/components/Reels/utils/Controls/index.ts +0 -9
  200. package/src/components/Reels/utils/Controls/overlayUtils.ts +0 -40
  201. package/src/components/Reels/utils/Controls/videoControlsConstants.ts +0 -30
  202. package/src/components/Reels/utils/Controls/videoRef.ts +0 -9
  203. package/src/components/Reels/utils/index.ts +0 -6
  204. package/src/components/Reels/utils/timeoutUtils.ts +0 -34
  205. package/src/components/Search/One.tsx +0 -262
  206. package/src/components/Search/components/RecentSearchesSection.tsx +0 -181
  207. package/src/components/Search/components/SearchCard.tsx +0 -285
  208. package/src/components/Search/index.ts +0 -16
  209. package/src/components/Settings/AppSettings.tsx +0 -442
  210. package/src/components/Settings/index.ts +0 -6
  211. package/src/components/Subscription/SubOne.tsx +0 -423
  212. package/src/components/Subscription/components/SubsDetailsModal.tsx +0 -347
  213. package/src/components/Subscription/components/SubscriptionCard.tsx +0 -342
  214. package/src/components/Subscription/index.ts +0 -12
  215. package/src/components/TabBar/One.tsx +0 -145
  216. package/src/components/TabBar/Three.tsx +0 -162
  217. package/src/components/TabBar/Two.tsx +0 -179
  218. package/src/components/TabBar/index.ts +0 -20
  219. package/src/components/Text/Text.tsx +0 -90
  220. package/src/components/Text/index.ts +0 -6
  221. package/src/components/User/DeviceSessions/DeviceSessions.tsx +0 -468
  222. package/src/components/User/ProfileUpdate/ProfileUpdate.tsx +0 -293
  223. package/src/components/User/PurchaseHistory/PurchaseHistory.tsx +0 -504
  224. package/src/components/User/WatchHistory/WatchHistory.tsx +0 -214
  225. package/src/components/User/WatchLater/WatchLater.tsx +0 -400
  226. package/src/components/User/components/UserAvatar.tsx +0 -121
  227. package/src/components/User/components/UserSection.tsx +0 -218
  228. package/src/components/User/index.ts +0 -18
  229. package/src/components/View/View.tsx +0 -38
  230. package/src/components/View/index.ts +0 -6
  231. package/src/components/common/AppStatusBar.tsx +0 -57
  232. package/src/components/common/index.ts +0 -1
  233. package/src/components/index.ts +0 -30
  234. package/src/components/layout/SafeAreaWrapper.tsx +0 -50
  235. package/src/components/layout/index.ts +0 -6
  236. package/src/constants/dummySections.ts +0 -103
  237. package/src/hooks/Images/index.ts +0 -6
  238. package/src/hooks/Images/useImageLoader.ts +0 -209
  239. package/src/hooks/index.ts +0 -16
  240. package/src/hooks/useAdTracking.ts +0 -354
  241. package/src/hooks/useCards.ts +0 -247
  242. package/src/hooks/useDebounce.ts +0 -40
  243. package/src/hooks/useKeyboard.ts +0 -43
  244. package/src/hooks/useNavigationMode.ts +0 -48
  245. package/src/hooks/usePaginatedSection.ts +0 -108
  246. package/src/hooks/usePrevious.ts +0 -28
  247. package/src/hooks/useSafeCallback.ts +0 -29
  248. package/src/hooks/useSkeletonItems.ts +0 -30
  249. package/src/hooks/useSplashCache.ts +0 -245
  250. package/src/index.tsx +0 -9
  251. package/src/store/RecentSearchesStore.ts +0 -72
  252. package/src/store/splashStore.ts +0 -86
  253. package/src/store/storage.ts +0 -29
  254. package/src/theme/ThemeContext.ts +0 -19
  255. package/src/theme/ThemeProvider.tsx +0 -87
  256. package/src/theme/hooks/index.ts +0 -6
  257. package/src/theme/hooks/useTheme.ts +0 -118
  258. package/src/theme/index.ts +0 -8
  259. package/src/theme/store/theme.ts +0 -50
  260. package/src/theme/themes.ts +0 -262
  261. package/src/theme/utils/cleanColors.ts +0 -71
  262. package/src/theme/utils/toRgba.ts +0 -150
  263. package/src/types/content/content-view.types.ts +0 -209
  264. package/src/types/hook/index.ts +0 -6
  265. package/src/types/hook/usePaginatedSection.ts +0 -20
  266. package/src/types/index.ts +0 -10
  267. package/src/types/navigation.ts +0 -17
  268. package/src/types/sections/index.ts +0 -87
  269. package/src/types/user.ts +0 -18
  270. package/src/utils/Display.ts +0 -15
  271. package/src/utils/Formater.ts +0 -33
  272. package/src/utils/SizeMatters.ts +0 -8
  273. package/src/utils/Spacing.ts +0 -27
  274. package/src/utils/colorUtils.ts +0 -70
  275. package/src/utils/imageValidation.ts +0 -36
  276. package/src/utils/interaction.ts +0 -19
@@ -1,332 +0,0 @@
1
- /**
2
- * @author Naresh Dhamu
3
- * @LastModified Mon 13 Jul 2026 at 10:13 AM
4
- */
5
-
6
- import React, { useMemo, useCallback, useState } from 'react';
7
- import { ScrollView, StyleSheet } from 'react-native';
8
- import { useTheme } from '../../../theme';
9
- import { CastCard } from '../One/components/CastCard';
10
- import { scale } from 'react-native-size-matters';
11
- import type {
12
- ComponentProps,
13
- LikeShareEventArgs,
14
- } from '../../../types/content/content-view.types';
15
- import { NotFoundFallback } from '../../Fallbacks';
16
- import {
17
- Details,
18
- HeroBanner,
19
- PlayOrTrailer,
20
- SectionTabs,
21
- Title,
22
- type playButtonConfig,
23
- } from './components';
24
- import { AboutSection } from '../shared/AboutSection';
25
- import { GenreTags } from '../shared/GenreTags';
26
- import type { IContentData } from '@zezosoft/zezo-ott-api-client';
27
- import MoreLikeThisContentList from './components/MoreLikeThisContentList ';
28
- import { EpisodeCard } from '../shared/EpisodeCard';
29
- import { MiniInfo } from '../One/components/MiniInfo';
30
-
31
- export const ContentViewTwo = React.memo(
32
- ({
33
- content,
34
- seasons,
35
- isLoading = false,
36
- seasonsIsLoading = false,
37
- theme,
38
- text,
39
- recommendedContent,
40
- isLiked = false,
41
- events,
42
- titleStyles,
43
- genreTagsStyles,
44
- aboutSectionStyles,
45
- castStyles,
46
- history,
47
- episodeCardMode,
48
- playButtonConfig,
49
- pricingAndExpiryInfo,
50
- }: Omit<ComponentProps, 'heroBannerProps'> & {
51
- playButtonConfig?: playButtonConfig;
52
- }) => {
53
- const { theme: appliedTheme } = useTheme(theme);
54
- const hasFetchedOnce = !!recommendedContent?.content;
55
-
56
- const seekTime = useMemo(
57
- () => history?.currentTime || 0,
58
- [history?.currentTime]
59
- );
60
- const isComplete = useMemo(
61
- () => history?.completed || false,
62
- [history?.completed]
63
- );
64
- const currentEpisode = useMemo(
65
- () => history?.current_episode,
66
- [history?.current_episode]
67
- );
68
- const isNotFound = useMemo(
69
- () => !isLoading && !content,
70
- [isLoading, content]
71
- );
72
-
73
- // Memoize play handler
74
- const handlePlayPress = useCallback(
75
- ({ is_trailer }: { is_trailer?: boolean }) => {
76
- if (!content) return;
77
- events?.onPlay?.({
78
- id: content._id,
79
- title: content.name,
80
- slug: content.slug,
81
- type: content.type,
82
- current_episode: currentEpisode,
83
- mode: 'fullscreen',
84
- is_trailer,
85
- seekTime: isComplete ? 0 : seekTime,
86
- });
87
- },
88
- [content, currentEpisode, isComplete, seekTime, events]
89
- );
90
-
91
- const handleLikePress = useCallback(
92
- async (args: LikeShareEventArgs) => {
93
- await events?.onLikeContent?.(args);
94
- },
95
- [events]
96
- );
97
-
98
- const handleSharePress = useCallback(
99
- async (args: LikeShareEventArgs) => {
100
- const { id, source } = args;
101
-
102
- if (!events?.onShareContent) {
103
- console.error('Share API not provided');
104
- return;
105
- }
106
-
107
- try {
108
- await events.onShareContent({ id, source });
109
- } catch (error) {
110
- console.error('Share API failed', error);
111
- }
112
- },
113
- [events]
114
- );
115
-
116
- const handleEpisodePress = useCallback(
117
- ({
118
- season_id,
119
- episode_id,
120
- episode_title,
121
- episode_number,
122
- }: {
123
- season_id: string;
124
- episode_id: string;
125
- episode_title: string;
126
- episode_number: number;
127
- }) => {
128
- if (!content || seasonsIsLoading) return;
129
- events?.onPlay?.({
130
- id: content._id,
131
- title: content.name,
132
- slug: content.slug,
133
- type: content.type,
134
- episode_title,
135
- current_episode: episode_id,
136
- current_season: season_id,
137
- episode_number,
138
- });
139
- },
140
- [content, seasonsIsLoading, events]
141
- );
142
-
143
- const handleRecommendedItemPress = useCallback(
144
- (item: any) => {
145
- events?.onPressRecommendedItem?.({ item });
146
- },
147
- [events]
148
- );
149
-
150
- const notFoundText = useMemo(
151
- () => ({
152
- title: text?.notFound?.title || 'Oops! Content Not Found',
153
- subtitle:
154
- text?.notFound?.subtitle ||
155
- "We couldn't find anything to show here. Please check back later.",
156
- buttonText: text?.notFound?.buttonText || 'Go Back',
157
- }),
158
- [text?.notFound]
159
- );
160
-
161
- const showEpisodes = useMemo(
162
- () =>
163
- content?.type === 'series' &&
164
- (seasonsIsLoading || (seasons && seasons.length > 0)),
165
- [content?.type, seasonsIsLoading, seasons]
166
- );
167
-
168
- const [activeTab, setActiveTab] = useState<'more' | 'details'>('more');
169
-
170
- return (
171
- <>
172
- {isNotFound ? (
173
- <NotFoundFallback
174
- title={notFoundText.title}
175
- subtitle={notFoundText.subtitle}
176
- backButtonText={notFoundText.buttonText}
177
- onPressBack={events?.onBackPress}
178
- theme={theme}
179
- />
180
- ) : (
181
- <ScrollView
182
- showsVerticalScrollIndicator={false}
183
- keyboardShouldPersistTaps="handled"
184
- bounces={false}
185
- contentContainerStyle={styles.scrollContent}
186
- >
187
- <HeroBanner
188
- backgroundImage={content?.thumbnail}
189
- title={content?.name}
190
- theme={theme}
191
- isLoading={isLoading}
192
- onBackPress={events?.onBackPress}
193
- titleImage={content?.title_image}
194
- contentType={content?.type}
195
- />
196
- <Title
197
- contentId={content?._id}
198
- subtitle={content?.u_age}
199
- rating={content?.rating}
200
- releaseYear={content?.release_year}
201
- duration={content?.duration}
202
- language={
203
- typeof content?.language === 'string'
204
- ? content.language
205
- : (content?.language?.name ?? null)
206
- }
207
- theme={appliedTheme}
208
- isLoading={isLoading}
209
- isLiked={isLiked}
210
- onPressLike={handleLikePress}
211
- onPressShare={handleSharePress}
212
- style={titleStyles}
213
- />
214
-
215
- <PlayOrTrailer
216
- onPressPlay={handlePlayPress}
217
- theme={theme}
218
- isLoading={isLoading}
219
- playButtonConfig={playButtonConfig}
220
- contentType={content?.type}
221
- />
222
-
223
- <GenreTags
224
- genres={content?.genres}
225
- theme={appliedTheme}
226
- isLoading={isLoading}
227
- style={genreTagsStyles}
228
- layoutMode="inline"
229
- />
230
-
231
- {pricingAndExpiryInfo?.visible && (
232
- <MiniInfo
233
- content={content}
234
- theme={theme}
235
- isLoading={isLoading}
236
- {...pricingAndExpiryInfo}
237
- />
238
- )}
239
- <AboutSection
240
- theme={appliedTheme}
241
- description={content?.description}
242
- release_year={content?.release_year}
243
- isLoading={isLoading}
244
- style={aboutSectionStyles}
245
- />
246
- {showEpisodes && (
247
- <EpisodeCard
248
- isLoading={seasonsIsLoading}
249
- seasons={seasonsIsLoading ? [] : (seasons ?? [])}
250
- onPress={handleEpisodePress}
251
- theme={theme}
252
- mode={
253
- episodeCardMode ?? ('horizontal' as 'horizontal' | 'vertical')
254
- }
255
- content_offering_type={content?.content_offering_type}
256
- />
257
- )}
258
- <CastCard
259
- theme={appliedTheme}
260
- data={content?.cast || null}
261
- isLoading={isLoading}
262
- onItemPress={() => {}}
263
- style={castStyles}
264
- />
265
- <SectionTabs
266
- theme={appliedTheme}
267
- isLoading={isLoading}
268
- activeTab={activeTab}
269
- onTabChange={setActiveTab}
270
- />
271
-
272
- {activeTab === 'more' && (
273
- <MoreLikeThisContentList
274
- contentList={
275
- recommendedContent?.content?.data?.filter(
276
- (item): item is IContentData =>
277
- 'name' in item && '_id' in item
278
- ) ?? []
279
- }
280
- isLoading={isLoading}
281
- hasFetchedOnce={hasFetchedOnce}
282
- theme={theme}
283
- onItemPress={handleRecommendedItemPress}
284
- moreDataIsLoading={false}
285
- />
286
- )}
287
-
288
- {activeTab === 'details' && (
289
- <Details
290
- theme={appliedTheme}
291
- isLoading={isLoading}
292
- content={content}
293
- />
294
- )}
295
-
296
- {/* {showRecommended && recommendedContent && (
297
- <Cards.Styles.Four
298
- section_id={recommendedContent._id}
299
- title={recommendedContent.name}
300
- type={recommendedContent.type}
301
- data={recommendedContent.content}
302
- isLoading={isLoading}
303
- theme={theme}
304
- onPressItem={handleRecommendedItemPress}
305
- onPressMore={events?.onPressRecommendedMore}
306
- moreFetchData={events?.moreFetchDataRecommended}
307
- {...recommendedContentCardStyles}
308
- />
309
- )} */}
310
- </ScrollView>
311
- )}
312
- </>
313
- );
314
- }
315
- );
316
-
317
- const styles = StyleSheet.create({
318
- scrollContent: {
319
- paddingBottom: scale(30),
320
- flexGrow: 1,
321
- },
322
- });
323
-
324
- export namespace ContentViewTwo {
325
- export type Props = ComponentProps;
326
- export type RecommendedContent = Props['recommendedContent'];
327
- export type HeroBannerProps = Props['heroBannerProps'];
328
- export type MenuAction = NonNullable<
329
- NonNullable<ComponentProps['heroBannerProps']>['menuActions']
330
- >[number];
331
- export type History = NonNullable<ComponentProps['history']>;
332
- }
@@ -1,196 +0,0 @@
1
- /**
2
- * @author Naresh Dhamu
3
- * @LastModified Mon 13 Jul 2026 at 10:13 AM
4
- */
5
-
6
- import React, { memo, useMemo } from 'react';
7
- import { View, StyleSheet, ScrollView } from 'react-native';
8
- import SkeletonPlaceholder from 'react-native-skeleton-placeholder';
9
- import { scale, verticalScale } from 'react-native-size-matters';
10
- import { RFValue } from 'react-native-responsive-fontsize';
11
- import { Text } from '../../../Text';
12
- import type { ITheme } from '../../../../theme/themes';
13
- import type { IContentData } from '@zezosoft/zezo-ott-api-client';
14
-
15
- type ContentPerson = {
16
- _id: string;
17
- name: string;
18
- type?: string;
19
- };
20
-
21
- type Props = {
22
- theme: ITheme;
23
- isLoading?: boolean;
24
- content: IContentData;
25
- };
26
-
27
- const InfoRow = memo(
28
- ({
29
- label,
30
- value,
31
- theme,
32
- }: {
33
- label: string;
34
- value?: string;
35
- theme: ITheme;
36
- }) => {
37
- const displayValue = value && value.trim().length > 0 ? value : 'N/A';
38
-
39
- return (
40
- <View style={styles.row}>
41
- <Text style={[styles.label, { color: theme.colors.textPrimary }]}>
42
- {label}
43
- </Text>
44
-
45
- <Text style={[styles.value, { color: theme.colors.textPrimary }]}>
46
- {displayValue}
47
- </Text>
48
- </View>
49
- );
50
- }
51
- );
52
-
53
- export const Details: React.FC<Props> = ({
54
- theme,
55
- isLoading = false,
56
- content,
57
- }) => {
58
- const castList = useMemo(() => content?.cast ?? [], [content?.cast]);
59
-
60
- const { actors, directors, writers, producers } = useMemo(() => {
61
- const grouped = {
62
- actors: [] as ContentPerson[],
63
- directors: [] as ContentPerson[],
64
- writers: [] as ContentPerson[],
65
- producers: [] as ContentPerson[],
66
- };
67
-
68
- castList.forEach((person) => {
69
- switch (person.type) {
70
- case 'actor':
71
- grouped.actors.push(person);
72
- break;
73
- case 'director':
74
- grouped.directors.push(person);
75
- break;
76
- case 'writer':
77
- grouped.writers.push(person);
78
- break;
79
- case 'producer':
80
- grouped.producers.push(person);
81
- break;
82
- default:
83
- break;
84
- }
85
- });
86
-
87
- return grouped;
88
- }, [castList]);
89
-
90
- if (isLoading) {
91
- return (
92
- <SkeletonPlaceholder
93
- backgroundColor={theme.colors.skeletonBaseColor}
94
- highlightColor={theme.colors.skeletonHighlightColor}
95
- >
96
- <SkeletonPlaceholder.Item
97
- paddingHorizontal={scale(14)}
98
- marginTop={verticalScale(16)}
99
- >
100
- {Array.from({ length: 6 }).map((_, index) => (
101
- <SkeletonPlaceholder.Item
102
- key={index}
103
- flexDirection="row"
104
- alignItems="center"
105
- marginBottom={verticalScale(14)}
106
- >
107
- <SkeletonPlaceholder.Item
108
- width={scale(120)}
109
- height={verticalScale(14)}
110
- borderRadius={4}
111
- />
112
- <SkeletonPlaceholder.Item
113
- flex={1}
114
- height={verticalScale(14)}
115
- marginLeft={scale(12)}
116
- borderRadius={4}
117
- />
118
- </SkeletonPlaceholder.Item>
119
- ))}
120
- </SkeletonPlaceholder.Item>
121
- </SkeletonPlaceholder>
122
- );
123
- }
124
- if (!castList.length) {
125
- return null;
126
- }
127
-
128
- return (
129
- <ScrollView
130
- style={styles.container}
131
- contentContainerStyle={styles.content}
132
- showsVerticalScrollIndicator={false}
133
- >
134
- <InfoRow
135
- label="Year of release"
136
- value={content?.release_year ? String(content.release_year) : 'N/A'}
137
- theme={theme}
138
- />
139
-
140
- <InfoRow
141
- label="Cast"
142
- value={actors.map((a) => a.name).join(', ')}
143
- theme={theme}
144
- />
145
-
146
- <InfoRow
147
- label="Director"
148
- value={directors.map((d) => d.name).join(', ')}
149
- theme={theme}
150
- />
151
-
152
- <InfoRow
153
- label="Writers"
154
- value={writers.map((w) => w.name).join(', ')}
155
- theme={theme}
156
- />
157
-
158
- <InfoRow
159
- label="Producers"
160
- value={producers.map((p) => p.name).join(', ')}
161
- theme={theme}
162
- />
163
-
164
- <InfoRow label="Maturity" value={content?.u_age} theme={theme} />
165
- </ScrollView>
166
- );
167
- };
168
-
169
- const styles = StyleSheet.create({
170
- container: {
171
- flex: 1,
172
- },
173
-
174
- content: {
175
- paddingHorizontal: scale(14),
176
- paddingBottom: verticalScale(24),
177
- },
178
-
179
- row: {
180
- flexDirection: 'row',
181
- marginBottom: verticalScale(16),
182
- alignItems: 'flex-start',
183
- },
184
-
185
- label: {
186
- flex: 0.55,
187
- fontSize: RFValue(11),
188
- lineHeight: RFValue(20),
189
- opacity: 0.85,
190
- },
191
-
192
- value: {
193
- flex: 0.55,
194
- fontSize: RFValue(11),
195
- },
196
- });