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

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 (211) hide show
  1. package/README.md +1 -1
  2. package/lib/module/components/Account/Account.js +1 -1
  3. package/lib/module/components/Account/Account.js.map +1 -1
  4. package/lib/module/components/Auth/AuthProvider/AuthProvider.js +48 -19
  5. package/lib/module/components/Auth/AuthProvider/AuthProvider.js.map +1 -1
  6. package/lib/module/components/Auth/Login/LoginWithEmail.js +4 -2
  7. package/lib/module/components/Auth/Login/LoginWithEmail.js.map +1 -1
  8. package/lib/module/components/Auth/OTP/OTP.js +15 -1
  9. package/lib/module/components/Auth/OTP/OTP.js.map +1 -1
  10. package/lib/module/components/Auth/SignUp/SignUp.js +4 -2
  11. package/lib/module/components/Auth/SignUp/SignUp.js.map +1 -1
  12. package/lib/module/components/BlurView/BlurView.js +171 -0
  13. package/lib/module/components/BlurView/BlurView.js.map +1 -0
  14. package/lib/module/components/BlurView/index.js +9 -0
  15. package/lib/module/components/BlurView/index.js.map +1 -0
  16. package/lib/module/components/Content/Card/NowWatching/NowWatching.js.map +1 -1
  17. package/lib/module/components/Content/Card/Sliders/Styles/One.js.map +1 -1
  18. package/lib/module/components/Content/Card/Sliders/Styles/Two.js.map +1 -1
  19. package/lib/module/components/Content/Card/Styles/Five.js.map +1 -1
  20. package/lib/module/components/Content/Card/Styles/Four.js +2 -3
  21. package/lib/module/components/Content/Card/Styles/Four.js.map +1 -1
  22. package/lib/module/components/Content/Card/Styles/One.js +1 -2
  23. package/lib/module/components/Content/Card/Styles/One.js.map +1 -1
  24. package/lib/module/components/Content/Card/Styles/RotateInOut.js.map +1 -1
  25. package/lib/module/components/Content/Card/Styles/Six.js.map +1 -1
  26. package/lib/module/components/Content/Card/Styles/Three.js.map +1 -1
  27. package/lib/module/components/Content/Card/Styles/TopTen.js.map +1 -1
  28. package/lib/module/components/Content/Card/Styles/Two.js +1 -2
  29. package/lib/module/components/Content/Card/Styles/Two.js.map +1 -1
  30. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  31. package/lib/module/components/Content/Content.js +4 -2
  32. package/lib/module/components/Content/Content.js.map +1 -1
  33. package/lib/module/components/Content/Sections.js.map +1 -1
  34. package/lib/module/components/ContentView/ContentView.js +4 -2
  35. package/lib/module/components/ContentView/ContentView.js.map +1 -1
  36. package/lib/module/components/ContentView/MoreContentList.js.map +1 -1
  37. package/lib/module/components/ContentView/components/CastCard.js +2 -1
  38. package/lib/module/components/ContentView/components/CastCard.js.map +1 -1
  39. package/lib/module/components/ContentView/components/EpisodeCard.js +3 -3
  40. package/lib/module/components/ContentView/components/EpisodeCard.js.map +1 -1
  41. package/lib/module/components/ContentView/components/GenreTags.js.map +1 -1
  42. package/lib/module/components/ContentView/components/MiniInfo.js +64 -19
  43. package/lib/module/components/ContentView/components/MiniInfo.js.map +1 -1
  44. package/lib/module/components/ContentView/components/Title.js.map +1 -1
  45. package/lib/module/components/Search/One.js.map +1 -1
  46. package/lib/module/components/Settings/AppSettings.js +1 -1
  47. package/lib/module/components/Settings/AppSettings.js.map +1 -1
  48. package/lib/module/components/Subscription/SubOne.js +340 -14
  49. package/lib/module/components/Subscription/SubOne.js.map +1 -1
  50. package/lib/module/components/TabBar/One.js +71 -108
  51. package/lib/module/components/TabBar/One.js.map +1 -1
  52. package/lib/module/components/TabBar/Three.js +63 -78
  53. package/lib/module/components/TabBar/Three.js.map +1 -1
  54. package/lib/module/components/TabBar/Two.js +110 -106
  55. package/lib/module/components/TabBar/Two.js.map +1 -1
  56. package/lib/module/components/User/PurchaseHistory/PurchaseHistory.js +324 -0
  57. package/lib/module/components/User/PurchaseHistory/PurchaseHistory.js.map +1 -0
  58. package/lib/module/components/User/WatchHistory/WatchHistory.js.map +1 -1
  59. package/lib/module/components/User/WatchLater/WatchLater.js.map +1 -1
  60. package/lib/module/components/User/index.js +2 -1
  61. package/lib/module/components/User/index.js.map +1 -1
  62. package/lib/module/components/index.js +1 -0
  63. package/lib/module/components/index.js.map +1 -1
  64. package/lib/module/hooks/useNavigationMode.js +34 -0
  65. package/lib/module/hooks/useNavigationMode.js.map +1 -0
  66. package/lib/module/utils/Spacing.js +26 -0
  67. package/lib/module/utils/Spacing.js.map +1 -0
  68. package/lib/typescript/src/components/Auth/AuthProvider/AuthProvider.d.ts +1 -0
  69. package/lib/typescript/src/components/Auth/AuthProvider/AuthProvider.d.ts.map +1 -1
  70. package/lib/typescript/src/components/Auth/Login/LoginWithEmail.d.ts.map +1 -1
  71. package/lib/typescript/src/components/Auth/OTP/OTP.d.ts +2 -0
  72. package/lib/typescript/src/components/Auth/OTP/OTP.d.ts.map +1 -1
  73. package/lib/typescript/src/components/Auth/SignUp/SignUp.d.ts.map +1 -1
  74. package/lib/typescript/src/components/Auth/index.d.ts +2 -0
  75. package/lib/typescript/src/components/Auth/index.d.ts.map +1 -1
  76. package/lib/typescript/src/components/BlurView/BlurView.d.ts +48 -0
  77. package/lib/typescript/src/components/BlurView/BlurView.d.ts.map +1 -0
  78. package/lib/typescript/src/components/BlurView/index.d.ts +7 -0
  79. package/lib/typescript/src/components/BlurView/index.d.ts.map +1 -0
  80. package/lib/typescript/src/components/Content/Card/NowWatching/NowWatching.d.ts +2 -1
  81. package/lib/typescript/src/components/Content/Card/NowWatching/NowWatching.d.ts.map +1 -1
  82. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts +2 -1
  83. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts.map +1 -1
  84. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts +2 -1
  85. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts.map +1 -1
  86. package/lib/typescript/src/components/Content/Card/Sliders/index.d.ts +2 -2
  87. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts +2 -1
  88. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts.map +1 -1
  89. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts +2 -1
  90. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts.map +1 -1
  91. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts +2 -1
  92. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts.map +1 -1
  93. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts +2 -1
  94. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts.map +1 -1
  95. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts +2 -1
  96. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts.map +1 -1
  97. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts +2 -1
  98. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts.map +1 -1
  99. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts +2 -1
  100. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts.map +1 -1
  101. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts +2 -1
  102. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts.map +1 -1
  103. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts +1 -1
  104. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  105. package/lib/typescript/src/components/Content/Card/components/RentOrBuyIcon.d.ts +1 -1
  106. package/lib/typescript/src/components/Content/Card/components/RentOrBuyIcon.d.ts.map +1 -1
  107. package/lib/typescript/src/components/Content/Card/index.d.ts +24 -24
  108. package/lib/typescript/src/components/Content/Content.d.ts +2 -1
  109. package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
  110. package/lib/typescript/src/components/Content/Sections.d.ts +2 -1
  111. package/lib/typescript/src/components/Content/Sections.d.ts.map +1 -1
  112. package/lib/typescript/src/components/ContentView/ContentView.d.ts +1 -1
  113. package/lib/typescript/src/components/ContentView/ContentView.d.ts.map +1 -1
  114. package/lib/typescript/src/components/ContentView/MoreContentList.d.ts +1 -1
  115. package/lib/typescript/src/components/ContentView/MoreContentList.d.ts.map +1 -1
  116. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts +1 -1
  117. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts.map +1 -1
  118. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts +1 -1
  119. package/lib/typescript/src/components/ContentView/components/CastCard.d.ts.map +1 -1
  120. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts +1 -1
  121. package/lib/typescript/src/components/ContentView/components/EpisodeCard.d.ts.map +1 -1
  122. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts +1 -1
  123. package/lib/typescript/src/components/ContentView/components/GenreTags.d.ts.map +1 -1
  124. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts +18 -2
  125. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts.map +1 -1
  126. package/lib/typescript/src/components/ContentView/components/Title.d.ts +1 -1
  127. package/lib/typescript/src/components/ContentView/components/Title.d.ts.map +1 -1
  128. package/lib/typescript/src/components/Search/One.d.ts +2 -1
  129. package/lib/typescript/src/components/Search/One.d.ts.map +1 -1
  130. package/lib/typescript/src/components/Subscription/SubOne.d.ts +6 -0
  131. package/lib/typescript/src/components/Subscription/SubOne.d.ts.map +1 -1
  132. package/lib/typescript/src/components/Subscription/index.d.ts.map +1 -1
  133. package/lib/typescript/src/components/TabBar/One.d.ts +2 -2
  134. package/lib/typescript/src/components/TabBar/One.d.ts.map +1 -1
  135. package/lib/typescript/src/components/TabBar/Three.d.ts +3 -2
  136. package/lib/typescript/src/components/TabBar/Three.d.ts.map +1 -1
  137. package/lib/typescript/src/components/TabBar/Two.d.ts +13 -4
  138. package/lib/typescript/src/components/TabBar/Two.d.ts.map +1 -1
  139. package/lib/typescript/src/components/TabBar/index.d.ts +1 -1
  140. package/lib/typescript/src/components/User/PurchaseHistory/PurchaseHistory.d.ts +50 -0
  141. package/lib/typescript/src/components/User/PurchaseHistory/PurchaseHistory.d.ts.map +1 -0
  142. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts +1 -1
  143. package/lib/typescript/src/components/User/WatchHistory/WatchHistory.d.ts.map +1 -1
  144. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts +1 -1
  145. package/lib/typescript/src/components/User/WatchLater/WatchLater.d.ts.map +1 -1
  146. package/lib/typescript/src/components/User/index.d.ts +2 -1
  147. package/lib/typescript/src/components/User/index.d.ts.map +1 -1
  148. package/lib/typescript/src/components/index.d.ts +1 -0
  149. package/lib/typescript/src/components/index.d.ts.map +1 -1
  150. package/lib/typescript/src/hooks/useNavigationMode.d.ts +14 -0
  151. package/lib/typescript/src/hooks/useNavigationMode.d.ts.map +1 -0
  152. package/lib/typescript/src/types/content/content-view.types.d.ts +3 -1
  153. package/lib/typescript/src/types/content/content-view.types.d.ts.map +1 -1
  154. package/lib/typescript/src/types/index.d.ts +1 -1
  155. package/lib/typescript/src/types/index.d.ts.map +1 -1
  156. package/lib/typescript/src/types/sections/index.d.ts +1 -1
  157. package/lib/typescript/src/types/sections/index.d.ts.map +1 -1
  158. package/lib/typescript/src/utils/Spacing.d.ts +16 -0
  159. package/lib/typescript/src/utils/Spacing.d.ts.map +1 -0
  160. package/package.json +10 -5
  161. package/src/components/Account/Account.tsx +1 -1
  162. package/src/components/Auth/AuthProvider/AuthProvider.tsx +82 -37
  163. package/src/components/Auth/Login/LoginWithEmail.tsx +9 -2
  164. package/src/components/Auth/OTP/OTP.tsx +37 -1
  165. package/src/components/Auth/SignUp/SignUp.tsx +9 -2
  166. package/src/components/BlurView/BlurView.tsx +199 -0
  167. package/src/components/BlurView/index.ts +7 -0
  168. package/src/components/Content/Card/NowWatching/NowWatching.tsx +2 -5
  169. package/src/components/Content/Card/Sliders/Styles/One.tsx +2 -1
  170. package/src/components/Content/Card/Sliders/Styles/Two.tsx +2 -1
  171. package/src/components/Content/Card/Styles/Five.tsx +1 -1
  172. package/src/components/Content/Card/Styles/Four.tsx +4 -2
  173. package/src/components/Content/Card/Styles/One.tsx +1 -1
  174. package/src/components/Content/Card/Styles/RotateInOut.tsx +1 -1
  175. package/src/components/Content/Card/Styles/Six.tsx +1 -1
  176. package/src/components/Content/Card/Styles/Three.tsx +1 -1
  177. package/src/components/Content/Card/Styles/TopTen.tsx +1 -1
  178. package/src/components/Content/Card/Styles/Two.tsx +1 -1
  179. package/src/components/Content/Card/components/CardPoster.tsx +1 -1
  180. package/src/components/Content/Card/components/RentOrBuyIcon.tsx +1 -1
  181. package/src/components/Content/Content.tsx +7 -5
  182. package/src/components/Content/Sections.tsx +2 -1
  183. package/src/components/ContentView/ContentView.tsx +8 -1
  184. package/src/components/ContentView/MoreContentList.tsx +1 -1
  185. package/src/components/ContentView/components/AboutSection.tsx +1 -1
  186. package/src/components/ContentView/components/CastCard.tsx +2 -1
  187. package/src/components/ContentView/components/EpisodeCard.tsx +5 -1
  188. package/src/components/ContentView/components/GenreTags.tsx +1 -1
  189. package/src/components/ContentView/components/MiniInfo.tsx +100 -23
  190. package/src/components/ContentView/components/Title.tsx +1 -1
  191. package/src/components/Search/One.tsx +2 -6
  192. package/src/components/Settings/AppSettings.tsx +1 -1
  193. package/src/components/Subscription/SubOne.tsx +422 -12
  194. package/src/components/TabBar/One.tsx +79 -141
  195. package/src/components/TabBar/Three.tsx +84 -99
  196. package/src/components/TabBar/Two.tsx +139 -110
  197. package/src/components/User/PurchaseHistory/PurchaseHistory.tsx +439 -0
  198. package/src/components/User/WatchHistory/WatchHistory.tsx +1 -1
  199. package/src/components/User/WatchLater/WatchLater.tsx +1 -1
  200. package/src/components/User/index.ts +8 -1
  201. package/src/components/index.ts +1 -0
  202. package/src/hooks/useNavigationMode.ts +35 -0
  203. package/src/types/content/content-view.types.ts +6 -1
  204. package/src/types/index.ts +1 -1
  205. package/src/types/sections/index.ts +1 -1
  206. package/src/utils/Spacing.ts +27 -0
  207. package/lib/module/types/content/index.js +0 -2
  208. package/lib/module/types/content/index.js.map +0 -1
  209. package/lib/typescript/src/types/content/index.d.ts +0 -174
  210. package/lib/typescript/src/types/content/index.d.ts.map +0 -1
  211. package/src/types/content/index.ts +0 -194
@@ -0,0 +1,199 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Thu 06 Nov 2025 at 05:00 PM
4
+ */
5
+
6
+ import React from 'react';
7
+ import { View, StyleSheet, type ViewStyle, type StyleProp } from 'react-native';
8
+
9
+ /**
10
+ * BlurView Props - Same as @react-native-community/blur
11
+ */
12
+ export interface BlurViewProps {
13
+ /** Style of the BlurView container */
14
+ style?: StyleProp<ViewStyle>;
15
+
16
+ /** The blur type (tint) - exactly matches community lib */
17
+ blurType?:
18
+ | 'dark'
19
+ | 'light'
20
+ | 'xlight'
21
+ | 'extraDark'
22
+ | 'regular'
23
+ | 'prominent'
24
+ | 'chromeMaterial'
25
+ | 'material'
26
+ | 'thickMaterial'
27
+ | 'thinMaterial'
28
+ | 'ultraThinMaterial'
29
+ | 'chromeMaterialDark'
30
+ | 'materialDark'
31
+ | 'thickMaterialDark'
32
+ | 'thinMaterialDark'
33
+ | 'ultraThinMaterialDark'
34
+ | 'chromeMaterialLight'
35
+ | 'materialLight'
36
+ | 'thickMaterialLight'
37
+ | 'thinMaterialLight'
38
+ | 'ultraThinMaterialLight';
39
+
40
+ /** The blur intensity amount (0-100) - exactly matches community lib */
41
+ blurAmount?: number;
42
+
43
+ /** Fallback color for reduced transparency - exactly matches community lib */
44
+ reducedTransparencyFallbackColor?: string;
45
+
46
+ /** iOS only: Overlay color - exactly matches community lib */
47
+ overlayColor?: string;
48
+
49
+ /** Android only: Downsample factor (higher = more blur but lower quality) */
50
+ downsampleFactor?: number;
51
+
52
+ /** Android only: Blur radius */
53
+ blurRadius?: number;
54
+
55
+ /** Child components */
56
+ children?: React.ReactNode;
57
+ }
58
+
59
+ /**
60
+ * Custom BlurView - 100% Compatible with @react-native-community/blur
61
+ *
62
+ * ✅ Same API as @react-native-community/blur
63
+ * ✅ Works on iOS, Android, and Web
64
+ * ✅ Drop-in replacement - just change the import
65
+ * 🚫 Simulates blur (no live backdrop) using semi-transparent layers
66
+ *
67
+ * @example
68
+ * ```tsx
69
+ * <BlurView
70
+ * style={styles.blur}
71
+ * blurType="light"
72
+ * blurAmount={10}
73
+ * reducedTransparencyFallbackColor="white"
74
+ * />
75
+ * ```
76
+ */
77
+ const BlurView: React.FC<BlurViewProps> = ({
78
+ style,
79
+ blurType = 'light',
80
+ blurAmount = 100,
81
+ reducedTransparencyFallbackColor,
82
+ overlayColor,
83
+ children,
84
+ }) => {
85
+ // Clamp blur amount to 0-100 range (same as community lib)
86
+ const intensity = Math.max(0, Math.min(100, blurAmount));
87
+
88
+ // Get tint style based on blur type
89
+ const tintStyle = getBlurTintStyle(
90
+ blurType,
91
+ intensity,
92
+ reducedTransparencyFallbackColor,
93
+ overlayColor
94
+ );
95
+
96
+ // Platform-specific rendering
97
+ return (
98
+ <View style={[styles.container, style]}>
99
+ {/* Background blur layer */}
100
+ <View style={[StyleSheet.absoluteFillObject, tintStyle]} />
101
+
102
+ {/* Content layer */}
103
+ <View pointerEvents="box-none" style={styles.content}>
104
+ {children}
105
+ </View>
106
+ </View>
107
+ );
108
+ };
109
+
110
+ /**
111
+ * Get blur tint style based on blurType
112
+ * Matches the exact behavior of @react-native-community/blur
113
+ */
114
+ function getBlurTintStyle(
115
+ blurType: string,
116
+ intensity: number,
117
+ fallbackColor?: string,
118
+ overlayColor?: string
119
+ ): ViewStyle {
120
+ // If overlayColor is provided, use it (iOS behavior)
121
+ if (overlayColor) {
122
+ return { backgroundColor: overlayColor };
123
+ }
124
+
125
+ // Calculate opacity based on intensity (0-100)
126
+ // Higher intensity = more opaque = stronger blur effect
127
+ const opacity = Math.min(0.95, intensity / 100);
128
+ const lightOpacity = opacity * 0.7;
129
+ const darkOpacity = opacity * 0.8;
130
+
131
+ // Match exact blur types from @react-native-community/blur
132
+ switch (blurType) {
133
+ // Dark blur types
134
+ case 'dark':
135
+ return { backgroundColor: `rgba(0, 0, 0, ${darkOpacity})` };
136
+ case 'extraDark':
137
+ return {
138
+ backgroundColor: `rgba(0, 0, 0, ${Math.min(0.98, darkOpacity * 1.2)})`,
139
+ };
140
+ case 'materialDark':
141
+ case 'thickMaterialDark':
142
+ case 'chromeMaterialDark':
143
+ return { backgroundColor: `rgba(28, 28, 30, ${darkOpacity})` };
144
+ case 'thinMaterialDark':
145
+ return { backgroundColor: `rgba(28, 28, 30, ${darkOpacity * 0.7})` };
146
+ case 'ultraThinMaterialDark':
147
+ return { backgroundColor: `rgba(28, 28, 30, ${darkOpacity * 0.5})` };
148
+
149
+ // Light blur types
150
+ case 'light':
151
+ return {
152
+ backgroundColor:
153
+ fallbackColor || `rgba(255, 255, 255, ${lightOpacity})`,
154
+ };
155
+ case 'xlight':
156
+ return { backgroundColor: `rgba(255, 255, 255, ${lightOpacity * 0.6})` };
157
+ case 'materialLight':
158
+ case 'chromeMaterialLight':
159
+ return { backgroundColor: `rgba(255, 255, 255, ${lightOpacity})` };
160
+ case 'thickMaterialLight':
161
+ return { backgroundColor: `rgba(242, 242, 247, ${lightOpacity})` };
162
+ case 'thinMaterialLight':
163
+ return { backgroundColor: `rgba(242, 242, 247, ${lightOpacity * 0.7})` };
164
+ case 'ultraThinMaterialLight':
165
+ return { backgroundColor: `rgba(242, 242, 247, ${lightOpacity * 0.5})` };
166
+
167
+ // Regular/prominent types
168
+ case 'regular':
169
+ case 'prominent':
170
+ return { backgroundColor: `rgba(255, 255, 255, ${lightOpacity * 0.8})` };
171
+ case 'material':
172
+ case 'chromeMaterial':
173
+ return { backgroundColor: `rgba(242, 242, 247, ${lightOpacity})` };
174
+ case 'thickMaterial':
175
+ return { backgroundColor: `rgba(242, 242, 247, ${lightOpacity * 1.1})` };
176
+ case 'thinMaterial':
177
+ return { backgroundColor: `rgba(242, 242, 247, ${lightOpacity * 0.7})` };
178
+ case 'ultraThinMaterial':
179
+ return { backgroundColor: `rgba(242, 242, 247, ${lightOpacity * 0.5})` };
180
+
181
+ // Default
182
+ default:
183
+ return {
184
+ backgroundColor:
185
+ fallbackColor || `rgba(255, 255, 255, ${lightOpacity})`,
186
+ };
187
+ }
188
+ }
189
+
190
+ const styles = StyleSheet.create({
191
+ container: {
192
+ overflow: 'hidden',
193
+ },
194
+ content: {
195
+ flex: 1,
196
+ },
197
+ });
198
+
199
+ export default BlurView;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Thu 06 Nov 2025 at 05:00 PM
4
+ */
5
+
6
+ export { default as BlurView, default } from './BlurView';
7
+ export type { BlurViewProps } from './BlurView';
@@ -28,15 +28,12 @@ import Animated, {
28
28
  import { usePaginatedSection } from '../../../../hooks/usePaginatedSection';
29
29
  import { useInternalTheme } from '../../../../theme/hook/useInternalTheme';
30
30
  import NavigateToMore from '../components/NavigateToMore';
31
- import type {
32
- IContentData,
33
- IGetSectionData,
34
- MoreFetchData,
35
- } from '../../../../types';
31
+ import type { IGetSectionData, MoreFetchData } from '../../../../types';
36
32
  import type { ITheme, ThemeOverride } from '../../../../theme/themes';
37
33
  import { Text } from '../../../Text';
38
34
  import { RFValue } from 'react-native-responsive-fontsize';
39
35
  import RentOrBuyIcon from '../components/RentOrBuyIcon';
36
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
40
37
 
41
38
  export interface IHistoryItem {
42
39
  _id: string;
@@ -18,11 +18,12 @@ import SkeletonPlaceholder from 'react-native-skeleton-placeholder';
18
18
  import { Play } from 'lucide-react-native';
19
19
  import { Text } from '../../../../Text';
20
20
  import Display from '../../../../../utils/Display';
21
- import type { IContentData, ISectionContent } from '../../../../../types';
21
+ import type { ISectionContent } from '../../../../../types';
22
22
  import { useInternalTheme } from '../../../../../theme/hook/useInternalTheme';
23
23
  import { RFValue } from 'react-native-responsive-fontsize';
24
24
  import RentOrBuyIcon from '../../components/RentOrBuyIcon';
25
25
  import type { ThemeOverride } from '../../../../../theme/themes';
26
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
26
27
 
27
28
  // Constants
28
29
  const DEFAULT_SKELETON_COUNT = 3;
@@ -18,10 +18,11 @@ import { Text } from '../../../../Text';
18
18
  import { useInternalTheme } from '../../../../../theme/hook/useInternalTheme';
19
19
  import Display from '../../../../../utils/Display';
20
20
  import { ThumbnailCard } from '../../components/ThumbnailCard';
21
- import type { IContentData, ISectionContent } from '../../../../../types';
21
+ import type { ISectionContent } from '../../../../../types';
22
22
  import { RFValue } from 'react-native-responsive-fontsize';
23
23
  import RentOrBuyIcon from '../../components/RentOrBuyIcon';
24
24
  import type { ThemeOverride } from '../../../../../theme/themes';
25
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
25
26
 
26
27
  const FULL_WIDTH = Display.fullWidth;
27
28
  const FULL_HEIGHT = FULL_WIDTH * (9 / 16);
@@ -26,12 +26,12 @@ import { usePaginatedSection } from '../../../../hooks/usePaginatedSection';
26
26
  import { useInternalTheme } from '../../../../theme/hook/useInternalTheme';
27
27
  import type { ITheme, ThemeOverride } from '../../../../theme/themes';
28
28
  import type {
29
- IContentData,
30
29
  IGetSectionData,
31
30
  ISectionContent,
32
31
  MoreFetchData,
33
32
  } from '../../../../types';
34
33
  import { RFValue } from 'react-native-responsive-fontsize';
34
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
35
35
 
36
36
  const DEFAULT_ITEM_WIDTH = moderateScale(140);
37
37
  const DEFAULT_BORDER_RADIUS = moderateScale(5);
@@ -24,13 +24,13 @@ import { useInternalTheme } from '../../../../theme/hook/useInternalTheme';
24
24
  import CardPoster from '../components/CardPoster';
25
25
  import FastImage from 'react-native-fast-image';
26
26
  import type {
27
- IContentData,
28
27
  IGetSectionData,
29
28
  ISectionContent,
30
29
  MoreFetchData,
31
30
  } from '../../../../types';
32
31
  import type { ITheme, ThemeOverride } from '../../../../theme/themes';
33
32
  import { RFValue } from 'react-native-responsive-fontsize';
33
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
34
34
 
35
35
  // default values
36
36
  const DEFAULT_ITEM_WIDTH = moderateScale(100);
@@ -234,7 +234,9 @@ const MovieCardFour: React.FC<MovieCardFourProps> = ({
234
234
  ref={flatListRef}
235
235
  data={data}
236
236
  horizontal
237
- keyExtractor={(item, index) => `${item._id}-${index}`}
237
+ keyExtractor={(item, index) =>
238
+ item._id || `item-${item.slug || item.name || index}`
239
+ }
238
240
  renderItem={renderItem}
239
241
  showsHorizontalScrollIndicator={false}
240
242
  contentContainerStyle={styles.listContent}
@@ -23,13 +23,13 @@ import CardPoster from '../components/CardPoster';
23
23
  import NavigateToMore from '../components/NavigateToMore';
24
24
  import { usePaginatedSection } from '../../../../hooks/usePaginatedSection';
25
25
  import type {
26
- IContentData,
27
26
  IGetSectionData,
28
27
  ISectionContent,
29
28
  MoreFetchData,
30
29
  } from '../../../../types';
31
30
  import type { ITheme, ThemeOverride } from '../../../../theme/themes';
32
31
  import { RFValue } from 'react-native-responsive-fontsize';
32
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
33
33
 
34
34
  // Constants
35
35
  const DEFAULT_ITEM_WIDTH = moderateScale(105);
@@ -25,13 +25,13 @@ import NavigateToMore from '../components/NavigateToMore';
25
25
 
26
26
  import { usePaginatedSection } from '../../../../hooks/usePaginatedSection';
27
27
  import type {
28
- IContentData,
29
28
  IGetSectionData,
30
29
  ISectionContent,
31
30
  MoreFetchData,
32
31
  } from '../../../../types';
33
32
  import type { ThemeOverride } from '../../../../theme/themes';
34
33
  import { RFValue } from 'react-native-responsive-fontsize';
34
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
35
35
 
36
36
  const { width, height } = Dimensions.get('window');
37
37
 
@@ -27,13 +27,13 @@ import { Text } from '../../../Text';
27
27
  import { usePaginatedSection } from '../../../../hooks/usePaginatedSection';
28
28
  import type { ThemeOverride } from '../../../../theme/themes';
29
29
  import type {
30
- IContentData,
31
30
  IGetSectionData,
32
31
  ISectionContent,
33
32
  MoreFetchData,
34
33
  } from '../../../../types';
35
34
  import { RFValue } from 'react-native-responsive-fontsize';
36
35
  import RentOrBuyIcon from '../components/RentOrBuyIcon';
36
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
37
37
  const DEFAULT_ITEM_WIDTH = moderateScale(160);
38
38
  const DEFAULT_BORDER_RADIUS = moderateScale(5);
39
39
  const DEFAULT_SKELETON_COUNT = 3;
@@ -25,13 +25,13 @@ import { useInternalTheme } from '../../../../theme/hook/useInternalTheme';
25
25
  import CardPoster from '../components/CardPoster';
26
26
  import NavigateToMore from '../components/NavigateToMore';
27
27
  import type {
28
- IContentData,
29
28
  IGetSectionData,
30
29
  ISectionContent,
31
30
  MoreFetchData,
32
31
  } from '../../../../types';
33
32
  import type { ThemeOverride } from '../../../../theme/themes';
34
33
  import { RFValue } from 'react-native-responsive-fontsize';
34
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
35
35
 
36
36
  const { width, height } = Dimensions.get('window');
37
37
 
@@ -21,7 +21,6 @@ import { useInternalTheme } from '../../../../theme/hook/useInternalTheme';
21
21
  import NavigateToMore from '../components/NavigateToMore';
22
22
  import { usePaginatedSection } from '../../../../hooks/usePaginatedSection';
23
23
  import type {
24
- IContentData,
25
24
  IGetSectionData,
26
25
  ISectionContent,
27
26
  MoreFetchData,
@@ -32,6 +31,7 @@ import LinearGradient from 'react-native-linear-gradient';
32
31
  import { Text } from '../../../Text';
33
32
  import CardPoster from '../components/CardPoster';
34
33
  import { RFValue } from 'react-native-responsive-fontsize';
34
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
35
35
 
36
36
  const DEFAULT_ITEM_WIDTH = moderateScale(120);
37
37
  const DEFAULT_ITEM_HEIGHT = moderateScale(180);
@@ -22,7 +22,6 @@ import { moderateScale, verticalScale } from 'react-native-size-matters';
22
22
 
23
23
  import { usePaginatedSection } from '../../../../hooks/usePaginatedSection';
24
24
  import type {
25
- IContentData,
26
25
  IGetSectionData,
27
26
  ISectionContent,
28
27
  MoreFetchData,
@@ -32,6 +31,7 @@ import { useInternalTheme } from '../../../../theme/hook/useInternalTheme';
32
31
  import NavigateToMore from '../components/NavigateToMore';
33
32
  import CardPoster from '../components/CardPoster';
34
33
  import { RFValue } from 'react-native-responsive-fontsize';
34
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
35
35
 
36
36
  // Defaults
37
37
  const DEFAULT_WIDTH = moderateScale(172);
@@ -14,8 +14,8 @@ import { scale } from 'react-native-size-matters';
14
14
  import { Text } from '../../../Text';
15
15
  import { ImageOff } from 'lucide-react-native';
16
16
  import type { ITheme } from '../../../../theme/themes';
17
- import type { IContentData } from '../../../../types';
18
17
  import RentOrBuyIcon from './RentOrBuyIcon';
18
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
19
19
 
20
20
  export type CardPosterProps = {
21
21
  content_offering_type?: IContentData['content_offering_type'];
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { View, StyleSheet, type StyleProp, type ViewStyle } from 'react-native';
3
3
  import Svg, { Path } from 'react-native-svg';
4
4
  import { scale } from 'react-native-size-matters';
5
- import type { IContentData } from '../../../../types';
5
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
6
6
  import type { ITheme } from '../../../../theme/themes';
7
7
 
8
8
  interface RentOrBuyIconProps {
@@ -12,20 +12,22 @@ import {
12
12
  type StyleProp,
13
13
  type ViewStyle,
14
14
  } from 'react-native';
15
- import { scale } from 'react-native-size-matters';
15
+ import { scale, verticalScale } from 'react-native-size-matters';
16
16
  import Animated, {
17
17
  type AnimatedStyle,
18
18
  type SharedValue,
19
19
  } from 'react-native-reanimated';
20
20
 
21
21
  import SectionType from './Sections';
22
- import type { IContentData, IGetSectionData, MoreFetchData } from '../../types';
22
+ import type { IGetSectionData, MoreFetchData } from '../../types';
23
23
  import { dummySections } from '../../constants/dummySections';
24
24
  import CategoryCard, { type ICategory } from './Card/Category/Category';
25
25
  import type { IHistoryItem } from './Card/NowWatching/NowWatching';
26
26
  import type { ThemeOverride } from '../../theme/themes';
27
27
  import { NoContentFallback, type NoContentFallbackProps } from '../Fallbacks';
28
28
  import { useInternalTheme } from '../../theme/hook';
29
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
30
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
29
31
 
30
32
  export interface ICustomComponentsForContent {
31
33
  type: string;
@@ -150,6 +152,7 @@ export const Content: React.FC<IContentProps> = ({
150
152
  isLoading,
151
153
  noContentFallbackProps,
152
154
  }) => {
155
+ const insets = useSafeAreaInsets();
153
156
  const sectionData = useMemo<IGetSectionData[]>(
154
157
  () => contentData?.sectionData ?? [],
155
158
  [contentData?.sectionData]
@@ -247,9 +250,8 @@ export const Content: React.FC<IContentProps> = ({
247
250
  }
248
251
  onEndReachedThreshold={0.7}
249
252
  contentContainerStyle={[
250
- {
251
- paddingBottom: scale(100),
252
- },
253
+ { paddingBottom: verticalScale(100) + insets.bottom },
254
+
253
255
  contentContainerStyle,
254
256
  ]}
255
257
  />
@@ -5,11 +5,12 @@
5
5
  import React from 'react';
6
6
  import Sliders from './Card/Sliders';
7
7
  import Cards from './Card';
8
- import type { IContentData, IGetSectionData, MoreFetchData } from '../../types';
8
+ import type { IGetSectionData, MoreFetchData } from '../../types';
9
9
  import type { IHistoryItem } from './Card/NowWatching/NowWatching';
10
10
  import type { ICategory } from './Card/Category/Category';
11
11
  import type { ThemeOverride } from '../../theme/themes';
12
12
  import type { IContentLoading } from './Content';
13
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
13
14
 
14
15
  export interface ICustomComponentsForSections {
15
16
  type: string;
@@ -33,6 +33,7 @@ export const ContentView = ({
33
33
  recommendedContentCardStyles,
34
34
  history,
35
35
  episodeCardMode,
36
+ pricingAndExpiryInfo,
36
37
  }: ComponentProps) => {
37
38
  const { theme: appliedTheme } = useInternalTheme(theme);
38
39
  const seekTime = history?.currentTime || 0;
@@ -95,7 +96,13 @@ export const ContentView = ({
95
96
  isLoading={isLoading}
96
97
  style={genreTagsStyles}
97
98
  />
98
- <MiniInfo content={content} theme={theme} isLoading={isLoading} />
99
+ <MiniInfo
100
+ content={content}
101
+ theme={theme}
102
+ isLoading={isLoading}
103
+ {...pricingAndExpiryInfo}
104
+ />
105
+
99
106
  <AboutSection
100
107
  theme={appliedTheme}
101
108
  description={content?.description}
@@ -13,7 +13,6 @@ import {
13
13
  } from 'react-native';
14
14
  import { scale, verticalScale } from 'react-native-size-matters';
15
15
  import Display from '../../utils/Display';
16
- import type { IContentData } from '../../types';
17
16
  import { Text } from '../Text';
18
17
  import { View } from '../View';
19
18
  import AppHeader, { type AppHeaderProps } from '../Headers/AppHeader';
@@ -23,6 +22,7 @@ import type { ThemeOverride } from '../../theme/themes';
23
22
  import { useInternalTheme } from '../../theme/hook';
24
23
  import Animated from 'react-native-reanimated';
25
24
  import { Search } from 'lucide-react-native';
25
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
26
26
 
27
27
  interface Props {
28
28
  headerProps?: AppHeaderProps;
@@ -18,7 +18,7 @@ import SkeletonPlaceholder from 'react-native-skeleton-placeholder';
18
18
  import { scale, verticalScale } from 'react-native-size-matters';
19
19
  import type { ITheme } from '../../../theme/themes';
20
20
  import { RFValue } from 'react-native-responsive-fontsize';
21
- import type { IContentData } from '../../../types';
21
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
22
22
 
23
23
  type Props = {
24
24
  theme: ITheme;
@@ -18,8 +18,8 @@ import FastImage, { type ImageStyle } from 'react-native-fast-image';
18
18
  import { scale } from 'react-native-size-matters';
19
19
  import { Text } from '../../Text';
20
20
  import type { ITheme } from '../../../theme/themes';
21
- import type { IContentCast } from '../../../types';
22
21
  import { RFValue } from 'react-native-responsive-fontsize';
22
+ import type { IContentCast } from '@zezosoft/zezo-ott-api-client';
23
23
 
24
24
  type StyleProps = {
25
25
  container?: StyleProp<ViewStyle>;
@@ -61,6 +61,7 @@ export const CastCard = ({
61
61
  name: '',
62
62
  avatar: '',
63
63
  castType: '',
64
+ type: 'actor',
64
65
  }));
65
66
 
66
67
  const listData = isLoading ? placeholderData : (data ?? []);
@@ -10,12 +10,15 @@ import SkeletonPlaceholder from 'react-native-skeleton-placeholder';
10
10
  import { scale, verticalScale, moderateScale } from 'react-native-size-matters';
11
11
  import { Text } from '../../Text';
12
12
  import Display from '../../../utils/Display';
13
- import type { IContentEpisodes, IContentSeasons } from '../../../types';
14
13
  import type { ITheme, ThemeOverride } from '../../../theme/themes';
15
14
  import { ThumbnailCard } from '../../Content/Card/components/ThumbnailCard';
16
15
  import { RFValue } from 'react-native-responsive-fontsize';
17
16
  import RentOrBuyIcon from '../../Content/Card/components/RentOrBuyIcon';
18
17
  import { useInternalTheme } from '../../../theme/hook';
18
+ import type {
19
+ IContentEpisodes,
20
+ IContentSeasons,
21
+ } from '@zezosoft/zezo-ott-api-client';
19
22
 
20
23
  // Constants
21
24
  const SKELETON_COUNT = 3;
@@ -367,6 +370,7 @@ export const EpisodeCard = ({
367
370
  source_type: 'HLS',
368
371
  content_offering_type: 'FREE',
369
372
  status: true,
373
+ data: '',
370
374
  }}
371
375
  onPress={onPress}
372
376
  style={{ width: cardWidth }}
@@ -14,9 +14,9 @@ import {
14
14
  import { Text } from '../../Text';
15
15
  import SkeletonPlaceholder from 'react-native-skeleton-placeholder';
16
16
  import { scale, verticalScale } from 'react-native-size-matters';
17
- import type { IContentData } from '../../../types';
18
17
  import type { ITheme } from '../../../theme/themes';
19
18
  import { RFValue } from 'react-native-responsive-fontsize';
19
+ import type { IContentData } from '@zezosoft/zezo-ott-api-client';
20
20
 
21
21
  type Props = {
22
22
  genres?: IContentData['genres'];