@zezosoft/zezo-ott-react-native-ui-kit 1.3.6 → 1.3.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.
- package/README.md +40 -36
- package/package.json +1 -3
- package/src/assets/animations/135037-payment-processing-error.json +0 -1347
- package/src/assets/animations/7227-vui-animation.json +0 -3377
- package/src/assets/animations/Failed.json +0 -2103
- package/src/assets/animations/Pending.json +0 -522
- package/src/assets/animations/Successful.json +0 -2289
- package/src/assets/animations/heart.json +0 -788
- package/src/assets/animations/succesfull-payment.json +0 -2379
- package/src/assets/animations/voice-icon.json +0 -542
- package/src/assets/img/back.png +0 -0
- package/src/assets/img/bottom-panel.png +0 -0
- package/src/assets/img/camera.png +0 -0
- package/src/assets/img/camera2.png +0 -0
- package/src/assets/img/home.png +0 -0
- package/src/assets/img/lock.png +0 -0
- package/src/assets/img/play.png +0 -0
- package/src/assets/img/profile.jpg +0 -0
- package/src/assets/img/qr-code.png +0 -0
- package/src/assets/img/shadow.png +0 -0
- package/src/assets/img/shadow2.png +0 -0
- package/src/assets/img/user.png +0 -0
- package/src/assets/svg/Account.svg +0 -4
- package/src/assets/svg/Favourite.svg +0 -14
- package/src/assets/svg/Upcoming.svg +0 -4
- package/src/assets/svg/content-error.svg +0 -28
- package/src/assets/svg/download.svg +0 -3
- package/src/assets/svg/eye-off.svg +0 -10
- package/src/assets/svg/favorites.svg +0 -3
- package/src/assets/svg/h.svg +0 -4
- package/src/assets/svg/home.svg +0 -5
- package/src/assets/svg/home1.svg +0 -3
- package/src/assets/svg/menu-bar.svg +0 -4
- package/src/assets/svg/my-space.svg +0 -14
- package/src/assets/svg/play-icon-with-bg.svg +0 -5
- package/src/assets/svg/profile.svg +0 -4
- package/src/assets/svg/search.svg +0 -5
- package/src/assets/svg/search1.svg +0 -4
- package/src/assets/svg/server-error.svg +0 -139
- package/src/components/Account/Account.tsx +0 -354
- package/src/components/Account/index.ts +0 -6
- package/src/components/Alert/AlertDialog.tsx +0 -253
- package/src/components/Alert/UAAlert.tsx +0 -176
- package/src/components/Alert/index.ts +0 -7
- package/src/components/Auth/AuthProvider/AuthProvider.tsx +0 -412
- package/src/components/Auth/One/ForgotPassword/ForgotPassword.tsx +0 -333
- package/src/components/Auth/One/Login/LoginWithEmail.tsx +0 -449
- package/src/components/Auth/One/Login/LoginWithPhone.tsx +0 -309
- package/src/components/Auth/One/OTP/OTP.tsx +0 -539
- package/src/components/Auth/One/QrLogin/QrLogin.tsx +0 -329
- package/src/components/Auth/One/QrLogin/components/index.ts +0 -8
- package/src/components/Auth/One/QrLogin/components/qr-scanner-fallback.tsx +0 -158
- package/src/components/Auth/One/QrLogin/components/qr-scanner-frame.tsx +0 -207
- package/src/components/Auth/One/QrLogin/components/qr-scanner-header.tsx +0 -65
- package/src/components/Auth/One/QrLogin/components/qr-scanner-intro.tsx +0 -255
- package/src/components/Auth/One/QrLogin/components/qr-scanner-overlay.tsx +0 -291
- package/src/components/Auth/One/SignUp/SignUp.tsx +0 -470
- package/src/components/Auth/One/SplashScreen/SplashScreen.tsx +0 -229
- package/src/components/Auth/One/SplashScreen/components/SplashImage/SplashImage.tsx +0 -92
- package/src/components/Auth/One/SplashScreen/components/SplashLottie/SplashLottie.tsx +0 -129
- package/src/components/Auth/One/SplashScreen/components/SplashVideo/SplashVideo.tsx +0 -172
- package/src/components/Auth/One/SplashScreen/utils/splashUtils.ts +0 -23
- package/src/components/Auth/One/index.ts +0 -24
- package/src/components/Auth/Two/AuthHeader/AuthHeader.tsx +0 -130
- package/src/components/Auth/Two/ForgotPassword/ForgotPassword.tsx +0 -331
- package/src/components/Auth/Two/Login/EmailOrPhoneLogin.tsx +0 -612
- package/src/components/Auth/Two/OTP/OTP.tsx +0 -504
- package/src/components/Auth/Two/SignUp/SignUp.tsx +0 -439
- package/src/components/Auth/Two/index.ts +0 -20
- package/src/components/Auth/index.ts +0 -16
- package/src/components/BackgroundLayout/One/One.tsx +0 -184
- package/src/components/BackgroundLayout/Two/Two.tsx +0 -65
- package/src/components/BackgroundLayout/index.ts +0 -14
- package/src/components/BlogView/BlogView.tsx +0 -282
- package/src/components/BlogView/index.ts +0 -8
- package/src/components/BlurView/BlurView.tsx +0 -199
- package/src/components/BlurView/index.ts +0 -7
- package/src/components/BottomSheet/BottomSheet.tsx +0 -204
- package/src/components/BottomSheet/BottomSheetOne.tsx +0 -223
- package/src/components/BottomSheet/index.ts +0 -9
- package/src/components/Button/BackBtn.tsx +0 -149
- package/src/components/Button/MenuBtn.tsx +0 -220
- package/src/components/Button/PrimaryBtn.tsx +0 -123
- package/src/components/Button/SecondaryBtn.tsx +0 -123
- package/src/components/Button/TextButton.tsx +0 -150
- package/src/components/Button/index.ts +0 -18
- package/src/components/Button/types.ts +0 -33
- package/src/components/Content/Card/Category/Category.tsx +0 -436
- package/src/components/Content/Card/Category/CategroyTwo.tsx +0 -429
- package/src/components/Content/Card/NowWatching/NowWatching.tsx +0 -607
- package/src/components/Content/Card/Sliders/Styles/One.tsx +0 -490
- package/src/components/Content/Card/Sliders/Styles/Three.tsx +0 -1017
- package/src/components/Content/Card/Sliders/Styles/Two.tsx +0 -395
- package/src/components/Content/Card/Sliders/index.ts +0 -18
- package/src/components/Content/Card/Styles/Five.tsx +0 -367
- package/src/components/Content/Card/Styles/Four.tsx +0 -366
- package/src/components/Content/Card/Styles/One.tsx +0 -372
- package/src/components/Content/Card/Styles/RotateInOut.tsx +0 -413
- package/src/components/Content/Card/Styles/Six.tsx +0 -378
- package/src/components/Content/Card/Styles/Three.tsx +0 -312
- package/src/components/Content/Card/Styles/TopTen.tsx +0 -402
- package/src/components/Content/Card/Styles/Two.tsx +0 -404
- package/src/components/Content/Card/components/AdsPoster.tsx +0 -207
- package/src/components/Content/Card/components/CardPoster.tsx +0 -377
- package/src/components/Content/Card/components/LiveBadge.tsx +0 -125
- package/src/components/Content/Card/components/NavigateToMore.tsx +0 -97
- package/src/components/Content/Card/components/RentOrBuyIcon.tsx +0 -134
- package/src/components/Content/Card/components/ShowAllButton.tsx +0 -92
- package/src/components/Content/Card/components/ThumbnailCard.tsx +0 -219
- package/src/components/Content/Card/components/index.ts +0 -12
- package/src/components/Content/Card/index.ts +0 -31
- package/src/components/Content/Content.tsx +0 -338
- package/src/components/Content/Sections.tsx +0 -239
- package/src/components/Content/types.ts +0 -180
- package/src/components/ContentView/MoreContentList.tsx +0 -330
- package/src/components/ContentView/One/ContentViewOne.tsx +0 -251
- package/src/components/ContentView/One/components/CastCard.tsx +0 -266
- package/src/components/ContentView/One/components/HeroBanner.tsx +0 -413
- package/src/components/ContentView/One/components/MiniInfo.tsx +0 -343
- package/src/components/ContentView/One/components/Title.tsx +0 -149
- package/src/components/ContentView/Two/ContentViewTwo.tsx +0 -332
- package/src/components/ContentView/Two/components/Details.tsx +0 -196
- package/src/components/ContentView/Two/components/HeroBanner.tsx +0 -267
- package/src/components/ContentView/Two/components/LikeShareActions.tsx +0 -125
- package/src/components/ContentView/Two/components/MoreLikeThisContentList .tsx +0 -308
- package/src/components/ContentView/Two/components/PlayOrTrailer.tsx +0 -162
- package/src/components/ContentView/Two/components/SectionTabs.tsx +0 -181
- package/src/components/ContentView/Two/components/Title.tsx +0 -229
- package/src/components/ContentView/Two/components/index.ts +0 -12
- package/src/components/ContentView/index.ts +0 -13
- package/src/components/ContentView/shared/AboutSection.tsx +0 -226
- package/src/components/ContentView/shared/EpisodeCard.tsx +0 -600
- package/src/components/ContentView/shared/GenreTags.tsx +0 -189
- package/src/components/ContentView/shared/PlayButton.tsx +0 -52
- package/src/components/ContentView/shared/TrailerButton.tsx +0 -76
- package/src/components/Fallbacks/NoContentFallback.tsx +0 -175
- package/src/components/Fallbacks/NotFoundFallback.tsx +0 -94
- package/src/components/Fallbacks/index.ts +0 -7
- package/src/components/Headers/AppHeader.tsx +0 -151
- package/src/components/Headers/Four.tsx +0 -84
- package/src/components/Headers/One.tsx +0 -115
- package/src/components/Headers/Three.tsx +0 -137
- package/src/components/Headers/Two.tsx +0 -101
- package/src/components/Headers/index.ts +0 -34
- package/src/components/Input/Input.ts +0 -18
- package/src/components/Input/InputOne.tsx +0 -265
- package/src/components/Input/InputThree.tsx +0 -205
- package/src/components/Input/InputTwo.tsx +0 -217
- package/src/components/Input/PhoneInput/One/One.tsx +0 -415
- package/src/components/Input/PhoneInput/Two/Two.tsx +0 -406
- package/src/components/Input/PhoneInput/index.ts +0 -14
- package/src/components/Keyboard/HideKeyboard.tsx +0 -91
- package/src/components/Loader/Loader.tsx +0 -49
- package/src/components/Logo/Logo.tsx +0 -150
- package/src/components/NewRelease/NewReleaseSheet.tsx +0 -260
- package/src/components/NewRelease/index.ts +0 -6
- package/src/components/Reels/ReelsSeries/MediaControls/BottomControls.tsx +0 -226
- package/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.tsx +0 -324
- package/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.tsx +0 -201
- package/src/components/Reels/ReelsSeries/MediaControls/RightControls.tsx +0 -100
- package/src/components/Reels/ReelsSeries/MediaControls/TopControls.tsx +0 -168
- package/src/components/Reels/ReelsSeries/Model/DetailsModal.tsx +0 -207
- package/src/components/Reels/ReelsSeries/Model/SettingModal.tsx +0 -151
- package/src/components/Reels/ReelsSeries/Model/UnlockModal.tsx +0 -159
- package/src/components/Reels/ReelsSeries/ReelsSeries.tsx +0 -278
- package/src/components/Reels/ReelsSeries/ReelsSeriesItem.tsx +0 -569
- package/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.tsx +0 -189
- package/src/components/Reels/ReelsSeries/components/Episodes.tsx +0 -159
- package/src/components/Reels/ReelsSeries/components/GradientOverlay.tsx +0 -46
- package/src/components/Reels/ReelsSeries/components/Like.tsx +0 -45
- package/src/components/Reels/ReelsSeries/components/RotatingLoader.tsx +0 -84
- package/src/components/Reels/ReelsSeries/components/Synopsis.tsx +0 -338
- package/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.tsx +0 -185
- package/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.tsx +0 -77
- package/src/components/Reels/ReelsSeries/components/VideoControls/index.ts +0 -7
- package/src/components/Reels/ReelsSeries/types.ts +0 -78
- package/src/components/Reels/ReelsSeries/useReelsWatchProgress.ts +0 -90
- package/src/components/Reels/ReelsSeries/utils/quality.ts +0 -72
- package/src/components/Reels/index.ts +0 -9
- package/src/components/Reels/utils/Controls/gestureUtils.ts +0 -46
- package/src/components/Reels/utils/Controls/index.ts +0 -9
- package/src/components/Reels/utils/Controls/overlayUtils.ts +0 -40
- package/src/components/Reels/utils/Controls/videoControlsConstants.ts +0 -30
- package/src/components/Reels/utils/Controls/videoRef.ts +0 -9
- package/src/components/Reels/utils/index.ts +0 -6
- package/src/components/Reels/utils/timeoutUtils.ts +0 -34
- package/src/components/Search/One.tsx +0 -262
- package/src/components/Search/components/RecentSearchesSection.tsx +0 -181
- package/src/components/Search/components/SearchCard.tsx +0 -285
- package/src/components/Search/index.ts +0 -16
- package/src/components/Settings/AppSettings.tsx +0 -442
- package/src/components/Settings/index.ts +0 -6
- package/src/components/Subscription/SubOne.tsx +0 -423
- package/src/components/Subscription/components/SubsDetailsModal.tsx +0 -347
- package/src/components/Subscription/components/SubscriptionCard.tsx +0 -342
- package/src/components/Subscription/index.ts +0 -12
- package/src/components/TabBar/One.tsx +0 -145
- package/src/components/TabBar/Three.tsx +0 -162
- package/src/components/TabBar/Two.tsx +0 -179
- package/src/components/TabBar/index.ts +0 -20
- package/src/components/Text/Text.tsx +0 -90
- package/src/components/Text/index.ts +0 -6
- package/src/components/User/DeviceSessions/DeviceSessions.tsx +0 -468
- package/src/components/User/ProfileUpdate/ProfileUpdate.tsx +0 -293
- package/src/components/User/PurchaseHistory/PurchaseHistory.tsx +0 -504
- package/src/components/User/WatchHistory/WatchHistory.tsx +0 -214
- package/src/components/User/WatchLater/WatchLater.tsx +0 -400
- package/src/components/User/components/UserAvatar.tsx +0 -121
- package/src/components/User/components/UserSection.tsx +0 -218
- package/src/components/User/index.ts +0 -18
- package/src/components/View/View.tsx +0 -38
- package/src/components/View/index.ts +0 -6
- package/src/components/common/AppStatusBar.tsx +0 -57
- package/src/components/common/index.ts +0 -1
- package/src/components/index.ts +0 -30
- package/src/components/layout/SafeAreaWrapper.tsx +0 -50
- package/src/components/layout/index.ts +0 -6
- package/src/constants/dummySections.ts +0 -103
- package/src/hooks/Images/index.ts +0 -6
- package/src/hooks/Images/useImageLoader.ts +0 -209
- package/src/hooks/index.ts +0 -16
- package/src/hooks/useAdTracking.ts +0 -354
- package/src/hooks/useCards.ts +0 -247
- package/src/hooks/useDebounce.ts +0 -40
- package/src/hooks/useKeyboard.ts +0 -43
- package/src/hooks/useNavigationMode.ts +0 -48
- package/src/hooks/usePaginatedSection.ts +0 -108
- package/src/hooks/usePrevious.ts +0 -28
- package/src/hooks/useSafeCallback.ts +0 -29
- package/src/hooks/useSkeletonItems.ts +0 -30
- package/src/hooks/useSplashCache.ts +0 -245
- package/src/index.tsx +0 -9
- package/src/store/RecentSearchesStore.ts +0 -72
- package/src/store/splashStore.ts +0 -86
- package/src/store/storage.ts +0 -29
- package/src/theme/ThemeContext.ts +0 -19
- package/src/theme/ThemeProvider.tsx +0 -87
- package/src/theme/hooks/index.ts +0 -6
- package/src/theme/hooks/useTheme.ts +0 -118
- package/src/theme/index.ts +0 -8
- package/src/theme/store/theme.ts +0 -50
- package/src/theme/themes.ts +0 -262
- package/src/theme/utils/cleanColors.ts +0 -71
- package/src/theme/utils/toRgba.ts +0 -150
- package/src/types/content/content-view.types.ts +0 -209
- package/src/types/hook/index.ts +0 -6
- package/src/types/hook/usePaginatedSection.ts +0 -20
- package/src/types/index.ts +0 -10
- package/src/types/navigation.ts +0 -17
- package/src/types/sections/index.ts +0 -87
- package/src/types/user.ts +0 -18
- package/src/utils/Display.ts +0 -15
- package/src/utils/Formater.ts +0 -33
- package/src/utils/SizeMatters.ts +0 -8
- package/src/utils/Spacing.ts +0 -27
- package/src/utils/colorUtils.ts +0 -70
- package/src/utils/imageValidation.ts +0 -36
- package/src/utils/interaction.ts +0 -19
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
|
|
7
|
-
import type { ImageStyle as FastImageStyle } from 'react-native-fast-image';
|
|
8
|
-
import type { ThemeOverride } from '../../theme/themes';
|
|
9
|
-
import type {
|
|
10
|
-
IGetSectionData,
|
|
11
|
-
ISectionItem,
|
|
12
|
-
IHistoryV1,
|
|
13
|
-
} from '../../types/sections';
|
|
14
|
-
import type { MoreFetchData } from '../../types/hook/usePaginatedSection';
|
|
15
|
-
import type React from 'react';
|
|
16
|
-
import type { MiniInfo } from '../../components/ContentView/One/components/MiniInfo';
|
|
17
|
-
import type { IContentData } from '@zezosoft/zezo-ott-api-client';
|
|
18
|
-
|
|
19
|
-
// 🔷 Common Style Aliases
|
|
20
|
-
export type ViewStyleProp = StyleProp<ViewStyle>;
|
|
21
|
-
export type TextStyleProp = StyleProp<TextStyle>;
|
|
22
|
-
export type FastImageStyleProp = StyleProp<FastImageStyle>;
|
|
23
|
-
|
|
24
|
-
// 🔹 UI Style Overrides
|
|
25
|
-
export type TitleStyles = {
|
|
26
|
-
container?: ViewStyleProp;
|
|
27
|
-
title?: TextStyleProp;
|
|
28
|
-
subTitle?: TextStyleProp;
|
|
29
|
-
rating?: TextStyleProp;
|
|
30
|
-
releaseYear?: TextStyleProp;
|
|
31
|
-
duration?: TextStyleProp;
|
|
32
|
-
language?: TextStyleProp;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export type LikeShareActionsStyles = {
|
|
36
|
-
container?: ViewStyleProp;
|
|
37
|
-
likeButton?: ViewStyleProp;
|
|
38
|
-
shareButton?: ViewStyleProp;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export type SectionTabsStyles = {
|
|
42
|
-
container?: ViewStyleProp;
|
|
43
|
-
tab?: ViewStyleProp;
|
|
44
|
-
title?: TextStyleProp;
|
|
45
|
-
indicator?: ViewStyleProp;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export type DetailsStyles = {
|
|
49
|
-
container?: ViewStyleProp;
|
|
50
|
-
section?: ViewStyleProp;
|
|
51
|
-
labelText?: TextStyleProp;
|
|
52
|
-
valueText?: TextStyleProp;
|
|
53
|
-
release_year?: ViewStyleProp;
|
|
54
|
-
cast?: ViewStyleProp;
|
|
55
|
-
directors?: ViewStyleProp;
|
|
56
|
-
writers?: ViewStyleProp;
|
|
57
|
-
producers?: ViewStyleProp;
|
|
58
|
-
maturity_rating?: ViewStyleProp;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
export type GenreTagStyles = {
|
|
62
|
-
container?: ViewStyleProp;
|
|
63
|
-
tagContainer?: ViewStyleProp;
|
|
64
|
-
tagText?: TextStyleProp;
|
|
65
|
-
skeletonTag?: ViewStyleProp;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
export type AboutSectionStyles = {
|
|
69
|
-
container?: ViewStyleProp;
|
|
70
|
-
title?: TextStyleProp;
|
|
71
|
-
body?: TextStyleProp;
|
|
72
|
-
scrollExpanded?: ViewStyleProp;
|
|
73
|
-
toggleText?: TextStyleProp;
|
|
74
|
-
skeletonLine?: ViewStyleProp;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export type CastCardStyles = {
|
|
78
|
-
container?: ViewStyleProp;
|
|
79
|
-
heading?: TextStyleProp;
|
|
80
|
-
listContent?: ViewStyleProp;
|
|
81
|
-
card?: ViewStyleProp;
|
|
82
|
-
image?: FastImageStyleProp;
|
|
83
|
-
name?: TextStyleProp;
|
|
84
|
-
role?: TextStyleProp;
|
|
85
|
-
imageSkeleton?: ViewStyleProp;
|
|
86
|
-
nameSkeleton?: ViewStyleProp;
|
|
87
|
-
roleSkeleton?: ViewStyleProp;
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
export type RecommendedCardStyles = {
|
|
91
|
-
renderItemImage?: (params: {
|
|
92
|
-
item: IContentData;
|
|
93
|
-
index: number;
|
|
94
|
-
}) => React.ReactNode;
|
|
95
|
-
itemWidth?: number;
|
|
96
|
-
itemHeight?: number;
|
|
97
|
-
borderRadius?: number;
|
|
98
|
-
skeletonCount?: number;
|
|
99
|
-
containerStyle?: ViewStyleProp;
|
|
100
|
-
titleStyle?: TextStyleProp;
|
|
101
|
-
itemStyle?: ViewStyleProp;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
// 🟩 Events
|
|
105
|
-
export type PlayEventArgs = {
|
|
106
|
-
id: string;
|
|
107
|
-
title: IContentData['name'];
|
|
108
|
-
slug: string;
|
|
109
|
-
type: IContentData['type'];
|
|
110
|
-
episodeId?: string;
|
|
111
|
-
episode_title?: string;
|
|
112
|
-
current_season?: string;
|
|
113
|
-
current_episode?: string;
|
|
114
|
-
episode_number?: number;
|
|
115
|
-
is_trailer?: boolean;
|
|
116
|
-
seekTime?: number;
|
|
117
|
-
mode?: 'fullscreen' | 'normal';
|
|
118
|
-
};
|
|
119
|
-
export type LikeShareEventArgs = {
|
|
120
|
-
id: IContentData['_id'];
|
|
121
|
-
source?: 'title' | 'card' | 'hero' | 'list';
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
// 🟩 Events
|
|
125
|
-
export type LikeResponse = {
|
|
126
|
-
is_liked: boolean;
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
export type ContentViewEvents = {
|
|
130
|
-
onPlay?: (args: PlayEventArgs) => void;
|
|
131
|
-
onPressRecommendedItem?: (args: { item: IContentData }) => void;
|
|
132
|
-
onPressRecommendedMore?: (args: {
|
|
133
|
-
section_id: IGetSectionData['_id'];
|
|
134
|
-
name: IGetSectionData['name'];
|
|
135
|
-
type: IGetSectionData['type'];
|
|
136
|
-
}) => void;
|
|
137
|
-
onBackPress?: () => void;
|
|
138
|
-
onPressCast?: (args: { cast: IContentData }) => void;
|
|
139
|
-
moreFetchDataRecommended?: MoreFetchData<IContentData>;
|
|
140
|
-
onLikeContent?: (args: LikeShareEventArgs) => Promise<{ is_liked: boolean }>;
|
|
141
|
-
onShareContent?: (args: LikeShareEventArgs) => void;
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
// 🟦 Menu
|
|
145
|
-
export type MenuAction = {
|
|
146
|
-
label: string;
|
|
147
|
-
icon?: (props: { size?: number; color?: string }) => React.ReactNode;
|
|
148
|
-
onPress: () => void;
|
|
149
|
-
isLoading?: boolean;
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
// 🟨 HeroBanner
|
|
153
|
-
export type RenderButtons = Partial<{
|
|
154
|
-
back: () => React.ReactNode;
|
|
155
|
-
menu: () => React.ReactNode;
|
|
156
|
-
play: () => React.ReactNode;
|
|
157
|
-
trailer: () => React.ReactNode;
|
|
158
|
-
}>;
|
|
159
|
-
|
|
160
|
-
export type SkeletonOverrides = Partial<{
|
|
161
|
-
play: () => React.ReactNode;
|
|
162
|
-
trailer: () => React.ReactNode;
|
|
163
|
-
back: () => React.ReactNode;
|
|
164
|
-
menu: () => React.ReactNode;
|
|
165
|
-
}>;
|
|
166
|
-
|
|
167
|
-
export type HeroBannerProps = {
|
|
168
|
-
backgroundImage: IContentData['thumbnail'];
|
|
169
|
-
title: IContentData['name'];
|
|
170
|
-
titleImage?: string | null;
|
|
171
|
-
theme?: ThemeOverride;
|
|
172
|
-
isLoading?: boolean;
|
|
173
|
-
onPressPlay?: ({ is_trailer }: { is_trailer: boolean }) => void;
|
|
174
|
-
onBackPress?: () => void;
|
|
175
|
-
menuActions?: MenuAction[];
|
|
176
|
-
content_offering_type?: IContentData['content_offering_type'];
|
|
177
|
-
contentType?: IContentData['type'];
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
// 🟧 Final Component Props
|
|
181
|
-
export type ComponentProps = {
|
|
182
|
-
content: IContentData;
|
|
183
|
-
seasons?: IContentData['seasons'];
|
|
184
|
-
text?: {
|
|
185
|
-
notFound?: {
|
|
186
|
-
title?: string;
|
|
187
|
-
subtitle?: string;
|
|
188
|
-
buttonText?: string;
|
|
189
|
-
};
|
|
190
|
-
};
|
|
191
|
-
theme?: ThemeOverride;
|
|
192
|
-
isLoading?: boolean;
|
|
193
|
-
pricingAndExpiryInfo?: Omit<
|
|
194
|
-
React.ComponentProps<typeof MiniInfo>,
|
|
195
|
-
'content' | 'theme'
|
|
196
|
-
>;
|
|
197
|
-
seasonsIsLoading?: boolean;
|
|
198
|
-
recommendedContent?: ISectionItem | null;
|
|
199
|
-
events?: ContentViewEvents;
|
|
200
|
-
isLiked?: boolean;
|
|
201
|
-
heroBannerProps?: Partial<HeroBannerProps>;
|
|
202
|
-
titleStyles?: TitleStyles;
|
|
203
|
-
genreTagsStyles?: GenreTagStyles;
|
|
204
|
-
aboutSectionStyles?: AboutSectionStyles;
|
|
205
|
-
castStyles?: CastCardStyles;
|
|
206
|
-
recommendedContentCardStyles?: RecommendedCardStyles;
|
|
207
|
-
history?: IHistoryV1;
|
|
208
|
-
episodeCardMode?: 'horizontal' | 'vertical';
|
|
209
|
-
};
|
package/src/types/hook/index.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { ISectionMeta } from '../sections';
|
|
7
|
-
|
|
8
|
-
export type MoreFetchData<T> = ({
|
|
9
|
-
sectionId,
|
|
10
|
-
meta,
|
|
11
|
-
}: {
|
|
12
|
-
sectionId: string;
|
|
13
|
-
meta: {
|
|
14
|
-
hasNextPage: boolean;
|
|
15
|
-
nextPage: number;
|
|
16
|
-
};
|
|
17
|
-
}) => Promise<{
|
|
18
|
-
data: T[];
|
|
19
|
-
meta: ISectionMeta;
|
|
20
|
-
} | null>;
|
package/src/types/index.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export type * from './content/content-view.types';
|
|
7
|
-
export type * from './sections';
|
|
8
|
-
export type * from './hook';
|
|
9
|
-
export type * from './user';
|
|
10
|
-
export type * from './navigation';
|
package/src/types/navigation.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type React from 'react';
|
|
7
|
-
|
|
8
|
-
export interface ITab {
|
|
9
|
-
key: string;
|
|
10
|
-
name: string;
|
|
11
|
-
screenComponent: React.ComponentType<never>;
|
|
12
|
-
icon: React.ComponentType<{
|
|
13
|
-
width: number;
|
|
14
|
-
height: number;
|
|
15
|
-
color: string;
|
|
16
|
-
}>;
|
|
17
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { IContentData, IServeAd } from '@zezosoft/zezo-ott-api-client';
|
|
7
|
-
export type { IHistoryV1 } from '@zezosoft/zezo-ott-api-client';
|
|
8
|
-
|
|
9
|
-
export type IAdItem = IServeAd & {
|
|
10
|
-
type: 'ads';
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export type ISectionType =
|
|
14
|
-
| 'normal'
|
|
15
|
-
| 'card_style_2'
|
|
16
|
-
| 'card_style_3'
|
|
17
|
-
| 'card_style_4'
|
|
18
|
-
| 'card_style_5'
|
|
19
|
-
| 'card_style_6'
|
|
20
|
-
| 'card_rotate_in_out'
|
|
21
|
-
| 'slider'
|
|
22
|
-
| 'slider_style_2'
|
|
23
|
-
| 'slider_style_3'
|
|
24
|
-
| 'card_series_featured_style_1'
|
|
25
|
-
| 'continue_watching'
|
|
26
|
-
| 'new_releases'
|
|
27
|
-
| 'top_10'
|
|
28
|
-
| 'category';
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Generic pagination metadata
|
|
32
|
-
*/
|
|
33
|
-
export interface ISectionPagination {
|
|
34
|
-
page: number;
|
|
35
|
-
limit: number;
|
|
36
|
-
total: number;
|
|
37
|
-
length: number;
|
|
38
|
-
hasNextPage: boolean;
|
|
39
|
-
nextPage: number | null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Single section object with associated content
|
|
44
|
-
*/
|
|
45
|
-
export interface IGetSectionData {
|
|
46
|
-
_id: string;
|
|
47
|
-
name: string;
|
|
48
|
-
label: string;
|
|
49
|
-
order: number;
|
|
50
|
-
type: ISectionType;
|
|
51
|
-
content_ids: string[];
|
|
52
|
-
category: {
|
|
53
|
-
_id: string;
|
|
54
|
-
name: string;
|
|
55
|
-
slug: string;
|
|
56
|
-
};
|
|
57
|
-
genre?: string;
|
|
58
|
-
content: {
|
|
59
|
-
data: (IContentData | IAdItem)[];
|
|
60
|
-
meta: {
|
|
61
|
-
pagination: ISectionPagination;
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
status: boolean;
|
|
65
|
-
createdAt: Date;
|
|
66
|
-
updatedAt: Date;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Full response from section fetch API
|
|
71
|
-
*/
|
|
72
|
-
export interface IGetSectionResponse {
|
|
73
|
-
success: boolean;
|
|
74
|
-
message: string;
|
|
75
|
-
data: IGetSectionData[];
|
|
76
|
-
meta: {
|
|
77
|
-
pagination: ISectionPagination;
|
|
78
|
-
};
|
|
79
|
-
cache: boolean;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Optional utility types (for local use)
|
|
84
|
-
*/
|
|
85
|
-
export type ISectionItem = IGetSectionData;
|
|
86
|
-
export type ISectionContent = IGetSectionData['content'];
|
|
87
|
-
export type ISectionMeta = IGetSectionResponse['meta'];
|
package/src/types/user.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { TextStyle, StyleProp } from 'react-native';
|
|
7
|
-
|
|
8
|
-
export interface UserInfo {
|
|
9
|
-
name: string;
|
|
10
|
-
avatarUri: string;
|
|
11
|
-
emailOrPhone: string;
|
|
12
|
-
onEditPress?: () => void;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface UserInfoTextStyle {
|
|
16
|
-
nameStyle?: StyleProp<TextStyle>;
|
|
17
|
-
emailStyle?: StyleProp<TextStyle>;
|
|
18
|
-
}
|
package/src/utils/Display.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { Dimensions } from 'react-native';
|
|
7
|
-
|
|
8
|
-
const { height, width } = Dimensions.get('window');
|
|
9
|
-
|
|
10
|
-
const setHeight = (h: number) => (height / 100) * h;
|
|
11
|
-
const setWidth = (w: number) => (width / 100) * w;
|
|
12
|
-
const fullWidth = Dimensions.get('window').width;
|
|
13
|
-
const fullHeight = Dimensions.get('window').height;
|
|
14
|
-
|
|
15
|
-
export default { setHeight, setWidth, fullWidth, fullHeight };
|
package/src/utils/Formater.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export function formatCount(count: number): string {
|
|
7
|
-
if (count < 1000) {
|
|
8
|
-
return count.toString();
|
|
9
|
-
} else if (count < 1000000) {
|
|
10
|
-
const thousands = count / 1000;
|
|
11
|
-
return thousands % 1 === 0 ? `${thousands}K` : `${thousands.toFixed(1)}K`;
|
|
12
|
-
} else if (count < 1000000000) {
|
|
13
|
-
const millions = count / 1000000;
|
|
14
|
-
return millions % 1 === 0 ? `${millions}M` : `${millions.toFixed(1)}M`;
|
|
15
|
-
} else {
|
|
16
|
-
const billions = count / 1000000000;
|
|
17
|
-
return billions % 1 === 0 ? `${billions}B` : `${billions.toFixed(1)}B`;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Formats an ISO date string into a human-readable date (e.g. "01 Jan 2025").
|
|
23
|
-
* Extracted from ContentView/One/components/EpisodeCard and
|
|
24
|
-
* ContentView/Two/components/EpisodeCard to eliminate duplication.
|
|
25
|
-
*/
|
|
26
|
-
export function formatDate(dateString: string): string {
|
|
27
|
-
const date = new Date(dateString);
|
|
28
|
-
return date.toLocaleDateString('en-US', {
|
|
29
|
-
day: '2-digit',
|
|
30
|
-
month: 'short',
|
|
31
|
-
year: 'numeric',
|
|
32
|
-
});
|
|
33
|
-
}
|
package/src/utils/SizeMatters.ts
DELETED
package/src/utils/Spacing.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { Platform } from 'react-native';
|
|
7
|
-
import { verticalScale } from 'react-native-size-matters';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Get responsive bottom spacing that accounts for platform differences
|
|
11
|
-
* Automatically adds extra spacing for Android navigation bar
|
|
12
|
-
* @param baseSpacing - Base spacing value (default: 35)
|
|
13
|
-
* @returns Platform-specific responsive bottom spacing
|
|
14
|
-
* @example
|
|
15
|
-
* // Usage in any component
|
|
16
|
-
* bottom: getResponsiveBottomSpacing(35) // iOS: 35, Android: 45
|
|
17
|
-
*/
|
|
18
|
-
export const getResponsiveBottomSpacing = (
|
|
19
|
-
baseSpacing: number = 35
|
|
20
|
-
): number => {
|
|
21
|
-
return Platform.OS === 'ios'
|
|
22
|
-
? verticalScale(baseSpacing)
|
|
23
|
-
: verticalScale(baseSpacing + 10);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
// Legacy export for backward compatibility
|
|
27
|
-
export const getAuthBottomSpacing = getResponsiveBottomSpacing;
|
package/src/utils/colorUtils.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Converts a color string to rgba format with specified opacity
|
|
8
|
-
* Supports multiple color formats: rgba, rgb, hex (#RGB, #RRGGBB, #RRGGBBAA)
|
|
9
|
-
*
|
|
10
|
-
* @param color - Color string in any supported format
|
|
11
|
-
* @param opacity - Opacity value between 0 and 1 (default: 0.9)
|
|
12
|
-
* @returns Color string in rgba format with specified opacity
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* convertColorWithOpacity('rgb(255, 0, 0)', 0.5) // 'rgba(255, 0, 0, 0.5)'
|
|
16
|
-
* convertColorWithOpacity('#FF0000', 0.8) // 'rgba(255, 0, 0, 0.8)'
|
|
17
|
-
* convertColorWithOpacity('rgba(255, 0, 0, 1)', 0.5) // 'rgba(255, 0, 0, 0.5)'
|
|
18
|
-
*/
|
|
19
|
-
export const convertColorWithOpacity = (
|
|
20
|
-
color: string,
|
|
21
|
-
opacity: number = 0.9
|
|
22
|
-
): string => {
|
|
23
|
-
// Handle rgba format
|
|
24
|
-
if (color.startsWith('rgba(')) {
|
|
25
|
-
return color.replace(/rgba\(([^)]+)\)/, (match, rgb) => {
|
|
26
|
-
const values = rgb.split(',').map((v: string) => v.trim());
|
|
27
|
-
if (values.length === 4) {
|
|
28
|
-
return `rgba(${values[0]}, ${values[1]}, ${values[2]}, ${opacity})`;
|
|
29
|
-
}
|
|
30
|
-
return match;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Handle rgb format
|
|
35
|
-
if (color.startsWith('rgb(')) {
|
|
36
|
-
return color.replace(/rgb\(([^)]+)\)/, (match, rgb) => {
|
|
37
|
-
const values = rgb.split(',').map((v: string) => v.trim());
|
|
38
|
-
if (values.length === 3) {
|
|
39
|
-
return `rgba(${values[0]}, ${values[1]}, ${values[2]}, ${opacity})`;
|
|
40
|
-
}
|
|
41
|
-
return match;
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Handle hex format (#RGB, #RRGGBB, #RRGGBBAA)
|
|
46
|
-
if (color.startsWith('#')) {
|
|
47
|
-
const hex = color.replace('#', '');
|
|
48
|
-
let r: number, g: number, b: number;
|
|
49
|
-
|
|
50
|
-
if (hex.length === 3) {
|
|
51
|
-
// #RGB format
|
|
52
|
-
r = parseInt(hex[0]! + hex[0]!, 16);
|
|
53
|
-
g = parseInt(hex[1]! + hex[1]!, 16);
|
|
54
|
-
b = parseInt(hex[2]! + hex[2]!, 16);
|
|
55
|
-
} else if (hex.length === 6 || hex.length === 8) {
|
|
56
|
-
// #RRGGBB or #RRGGBBAA format
|
|
57
|
-
r = parseInt(hex.substring(0, 2)!, 16);
|
|
58
|
-
g = parseInt(hex.substring(2, 4)!, 16);
|
|
59
|
-
b = parseInt(hex.substring(4, 6)!, 16);
|
|
60
|
-
} else {
|
|
61
|
-
return color; // Invalid hex, return as is
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// For other formats (named colors, etc.), return as is
|
|
68
|
-
// In a real scenario, you might want to convert named colors to rgba
|
|
69
|
-
return color;
|
|
70
|
-
};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Utility function to check if URL is a local file path
|
|
8
|
-
* @param url - The URL to check
|
|
9
|
-
* @returns true if the URL is a local file path, false otherwise
|
|
10
|
-
*/
|
|
11
|
-
export const isLocalFile = (url: string): boolean => {
|
|
12
|
-
return url?.startsWith?.('file://') || url?.startsWith?.('/');
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Utility function to validate image URL (supports cloud URIs, data URIs, and local file paths)
|
|
17
|
-
* @param url - The URL to validate
|
|
18
|
-
* @returns true if the URL is a valid image URL, false otherwise
|
|
19
|
-
*/
|
|
20
|
-
export const isValidImageUrl = (url: string | null | undefined): boolean => {
|
|
21
|
-
if (!url || typeof url !== 'string') return false;
|
|
22
|
-
const cleaned = url.trim();
|
|
23
|
-
|
|
24
|
-
// Check for local file paths
|
|
25
|
-
if (isLocalFile(cleaned)) {
|
|
26
|
-
return cleaned.length > 0;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Check for data URIs
|
|
30
|
-
if (cleaned.startsWith('data:image/')) {
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Check for cloud URIs (http/https)
|
|
35
|
-
return cleaned.startsWith('http://') || cleaned.startsWith('https://');
|
|
36
|
-
};
|
package/src/utils/interaction.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Naresh Dhamu
|
|
3
|
-
* @LastModified Mon 13 Jul 2026 at 10:13 AM
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
declare const requestIdleCallback: any;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Runs a callback when the JS thread is idle, replacing the deprecated InteractionManager.
|
|
10
|
-
*/
|
|
11
|
-
export const runAfterInteractions = (callback: () => void): void => {
|
|
12
|
-
if (typeof requestIdleCallback !== 'undefined') {
|
|
13
|
-
requestIdleCallback(callback);
|
|
14
|
-
} else if (typeof requestAnimationFrame !== 'undefined') {
|
|
15
|
-
requestAnimationFrame(callback);
|
|
16
|
-
} else {
|
|
17
|
-
setTimeout(callback, 0);
|
|
18
|
-
}
|
|
19
|
-
};
|