@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,354 +0,0 @@
1
- /**
2
- * @author Naresh Dhamu
3
- * @LastModified Mon 13 Jul 2026 at 10:13 AM
4
- */
5
-
6
- import { View, StyleSheet, ScrollView, TouchableOpacity } from 'react-native';
7
- import { ChevronRight, Trash2 } from 'lucide-react-native';
8
- import { useTheme } from '../../theme';
9
- import { moderateScale, scale, verticalScale } from 'react-native-size-matters';
10
- import AppHeader from '../Headers/AppHeader';
11
- import SkeletonPlaceholder from 'react-native-skeleton-placeholder';
12
- import UserSection from '../User/components/UserSection';
13
- import TextButton from '../Button/TextButton';
14
- import { Text } from '../Text';
15
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
16
- import type { ThemeOverride, ITheme } from '../../theme/themes';
17
- import type { UserInfo, UserInfoTextStyle } from '../../types';
18
- import { RFValue } from 'react-native-responsive-fontsize';
19
- import { cloneElement, isValidElement, memo, type ReactElement } from 'react';
20
-
21
- type CardItem = {
22
- type: 'card';
23
- title: string;
24
- subtitle: string;
25
- };
26
-
27
- type RowItem = {
28
- type?: 'row';
29
- label: string;
30
- subtitle?: string;
31
- leftIcon?: React.ReactNode;
32
- showRightIcon?: boolean;
33
- onPress?: () => void;
34
- };
35
-
36
- type AccountSectionItem = CardItem | RowItem;
37
-
38
- type AccountSection = {
39
- title: string;
40
- items: AccountSectionItem[];
41
- };
42
-
43
- export type AccountProps = {
44
- title?: string;
45
- userInfo: UserInfo;
46
- renderUserInfo?: (userInfo: UserInfo) => React.ReactNode;
47
- sections: AccountSection[];
48
- onBackPress?: () => void;
49
- theme?: ThemeOverride;
50
- isLoading?: boolean;
51
- avatarComponent?: React.ReactNode;
52
- skeletonProps?: Partial<React.ComponentProps<typeof SkeletonPlaceholder>>;
53
- userInfoTextStyle?: UserInfoTextStyle;
54
- helpText?: string;
55
- clickableText?: string;
56
- deleteAccountText?: string;
57
- deleteAccountIcon?: React.ReactNode;
58
- onHelpPress?: () => void;
59
- onDeleteAccountPress?: () => void;
60
- };
61
-
62
- const isInvalidText = (val?: string | null): boolean =>
63
- !val ||
64
- val.trim() === '' ||
65
- val.includes('undefined') ||
66
- val.includes('Invalid');
67
-
68
- const renderIconWithColor = (
69
- icon: React.ReactNode,
70
- color: string
71
- ): React.ReactNode => {
72
- if (isValidElement(icon)) {
73
- return cloneElement(icon as ReactElement<any>, { color });
74
- }
75
- return icon;
76
- };
77
-
78
- const getValidSectionItems = (
79
- items: AccountSectionItem[]
80
- ): AccountSectionItem[] =>
81
- items.filter((item) =>
82
- item.type === 'card'
83
- ? !isInvalidText(item.title) || !isInvalidText(item.subtitle)
84
- : true
85
- );
86
-
87
- export const Account: React.FC<AccountProps> = ({
88
- title = 'Account',
89
- userInfo,
90
- renderUserInfo,
91
- sections,
92
- onBackPress,
93
- theme,
94
- isLoading,
95
- avatarComponent,
96
- userInfoTextStyle = {},
97
- skeletonProps = {},
98
- helpText = 'Need Help?',
99
- clickableText = 'Click Here',
100
- deleteAccountText = 'Delete Account',
101
- deleteAccountIcon,
102
- onHelpPress,
103
- onDeleteAccountPress,
104
- }) => {
105
- const { theme: appliedTheme } = useTheme(theme);
106
- const insets = useSafeAreaInsets();
107
-
108
- return (
109
- <View
110
- style={[
111
- styles.container,
112
- { backgroundColor: appliedTheme.colors.background },
113
- ]}
114
- >
115
- <AppHeader onBackPress={onBackPress} title={title} theme={theme} />
116
-
117
- <ScrollView
118
- contentContainerStyle={[
119
- styles.content,
120
- { paddingBottom: verticalScale(100) + insets.bottom },
121
- ]}
122
- showsVerticalScrollIndicator={false}
123
- keyboardShouldPersistTaps="handled"
124
- >
125
- <UserSection
126
- theme={theme}
127
- userInfo={userInfo}
128
- avatarComponent={avatarComponent}
129
- isLoading={isLoading}
130
- renderUserInfo={renderUserInfo}
131
- skeletonProps={skeletonProps}
132
- userInfoTextStyle={userInfoTextStyle}
133
- />
134
-
135
- {sections?.map(({ title: sectionTitle, items }) => {
136
- const validItems = getValidSectionItems(items);
137
- if (validItems.length === 0) return null;
138
-
139
- return (
140
- <View key={sectionTitle} style={styles.sectionBlock}>
141
- <Text
142
- style={[
143
- styles.sectionTitle,
144
- { color: appliedTheme.colors.textSecondary },
145
- ]}
146
- >
147
- {sectionTitle}
148
- </Text>
149
-
150
- {validItems.map((item, index) =>
151
- item.type === 'card' ? (
152
- <CardItemView
153
- key={`card-${index}`}
154
- {...item}
155
- theme={appliedTheme}
156
- />
157
- ) : (
158
- <MenuItemView
159
- key={`row-${index}`}
160
- {...item}
161
- theme={appliedTheme}
162
- />
163
- )
164
- )}
165
- </View>
166
- );
167
- })}
168
-
169
- {(onDeleteAccountPress || helpText || clickableText) && (
170
- <View style={styles.bottomBlock}>
171
- {onDeleteAccountPress && (
172
- <TextButton
173
- onPress={onDeleteAccountPress}
174
- style={StyleSheet.flatten([
175
- styles.fontWeight500,
176
- { color: appliedTheme.colors.error },
177
- ])}
178
- title={deleteAccountText}
179
- underline
180
- leftIcon={
181
- deleteAccountIcon ?? (
182
- <Trash2
183
- size={18}
184
- color={appliedTheme.colors.error}
185
- style={{ marginRight: scale(4) }}
186
- />
187
- )
188
- }
189
- />
190
- )}
191
-
192
- {(helpText || clickableText) && (
193
- <View style={styles.helpSubContainer}>
194
- <Text
195
- style={[
196
- styles.helpText,
197
- { color: appliedTheme.colors.textSecondary },
198
- ]}
199
- >
200
- {helpText}
201
- </Text>
202
- {clickableText && (
203
- <TextButton
204
- onPress={() => onHelpPress?.()}
205
- style={StyleSheet.flatten([
206
- styles.fontWeight500,
207
- { color: appliedTheme.colors.primary },
208
- ])}
209
- title={clickableText}
210
- underline
211
- />
212
- )}
213
- </View>
214
- )}
215
- </View>
216
- )}
217
- </ScrollView>
218
- </View>
219
- );
220
- };
221
-
222
- const CardItemView = memo(
223
- ({ title, subtitle, theme }: CardItem & { theme: ITheme }) => {
224
- if (isInvalidText(title) && isInvalidText(subtitle)) return null;
225
-
226
- return (
227
- <View
228
- style={[styles.card, { backgroundColor: theme.colors.surfaceDisabled }]}
229
- >
230
- {!isInvalidText(title) && (
231
- <Text style={[styles.cardTitle, { color: theme.colors.textPrimary }]}>
232
- {title}
233
- </Text>
234
- )}
235
- {!isInvalidText(subtitle) && (
236
- <Text style={[styles.cardSub, { color: theme.colors.textSecondary }]}>
237
- {subtitle}
238
- </Text>
239
- )}
240
- </View>
241
- );
242
- }
243
- );
244
-
245
- const MenuItemView = memo(
246
- ({
247
- label,
248
- leftIcon,
249
- showRightIcon,
250
- onPress,
251
- theme,
252
- }: RowItem & { theme: ITheme }) => {
253
- return (
254
- <TouchableOpacity
255
- onPress={onPress}
256
- activeOpacity={0.6}
257
- style={[
258
- styles.row,
259
- {
260
- backgroundColor: theme.colors.surfaceDisabled,
261
- borderColor: theme.colors.border,
262
- },
263
- ]}
264
- >
265
- <View style={styles.leftRow}>
266
- {leftIcon && (
267
- <View style={styles.menuIcon}>
268
- {renderIconWithColor(leftIcon, theme.colors.textPrimary)}
269
- </View>
270
- )}
271
- <Text style={[styles.rowText, { color: theme.colors.textPrimary }]}>
272
- {label}
273
- </Text>
274
- </View>
275
-
276
- {showRightIcon && (
277
- <ChevronRight color={theme.colors.textSecondary} size={20} />
278
- )}
279
- </TouchableOpacity>
280
- );
281
- }
282
- );
283
-
284
- const styles = StyleSheet.create({
285
- container: { flex: 1 },
286
- content: { paddingHorizontal: moderateScale(16) },
287
-
288
- sectionBlock: {
289
- marginBottom: verticalScale(16),
290
- },
291
- sectionTitle: {
292
- fontSize: RFValue(11),
293
- fontWeight: '500',
294
- marginBottom: verticalScale(8),
295
- textTransform: 'uppercase',
296
- },
297
-
298
- card: {
299
- borderRadius: scale(8),
300
- padding: moderateScale(16),
301
- marginBottom: verticalScale(12),
302
- },
303
- cardTitle: {
304
- fontSize: RFValue(12),
305
- fontWeight: '600',
306
- marginBottom: verticalScale(4),
307
- },
308
- cardSub: {
309
- fontSize: RFValue(10),
310
- },
311
-
312
- row: {
313
- paddingVertical: verticalScale(14),
314
- paddingHorizontal: scale(16),
315
- borderRadius: scale(8),
316
- borderWidth: 1,
317
- marginBottom: verticalScale(12),
318
- flexDirection: 'row',
319
- alignItems: 'center',
320
- justifyContent: 'space-between',
321
- },
322
- leftRow: {
323
- flexDirection: 'row',
324
- alignItems: 'center',
325
- flexShrink: 1,
326
- },
327
- menuIcon: {
328
- marginRight: scale(8),
329
- alignItems: 'center',
330
- justifyContent: 'center',
331
- },
332
- rowText: {
333
- fontSize: RFValue(12),
334
- fontWeight: '500',
335
- },
336
-
337
- bottomBlock: {
338
- marginTop: verticalScale(32),
339
- alignItems: 'center',
340
- justifyContent: 'center',
341
- gap: verticalScale(8),
342
- },
343
- helpSubContainer: {
344
- flexDirection: 'row',
345
- alignItems: 'center',
346
- gap: scale(1),
347
- },
348
- helpText: {
349
- fontSize: RFValue(10),
350
- },
351
- fontWeight500: {
352
- fontWeight: '500',
353
- },
354
- });
@@ -1,6 +0,0 @@
1
- /**
2
- * @author Naresh Dhamu
3
- * @LastModified Mon 13 Jul 2026 at 10:13 AM
4
- */
5
-
6
- export * from './Account';
@@ -1,253 +0,0 @@
1
- /**
2
- * @author Naresh Dhamu
3
- * @LastModified Mon 13 Jul 2026 at 10:13 AM
4
- */
5
-
6
- import React, { useEffect, useRef } from 'react';
7
- import {
8
- View,
9
- TouchableOpacity,
10
- StyleSheet,
11
- Dimensions,
12
- Modal,
13
- Animated,
14
- TouchableWithoutFeedback,
15
- } from 'react-native';
16
- import { Text } from '../Text';
17
- import { X } from 'lucide-react-native';
18
- import LottieView from 'lottie-react-native';
19
- import { useTheme } from '../../theme';
20
- import type { ThemeOverride } from '../../theme/themes';
21
- import { scale, verticalScale, moderateScale } from 'react-native-size-matters';
22
- import { RFValue } from 'react-native-responsive-fontsize';
23
- import { Button } from '../Button';
24
-
25
- const { width } = Dimensions.get('window');
26
-
27
- export interface AlertDialogProps {
28
- visible: boolean;
29
- type: 'success' | 'pending' | 'failed';
30
- title: string;
31
- buttonText?: string;
32
- onPressButton?: () => void;
33
- onClose?: () => void;
34
- theme?: ThemeOverride;
35
- }
36
-
37
- export const AlertDialog: React.FC<AlertDialogProps> = ({
38
- visible,
39
- type = 'success',
40
- title,
41
- buttonText,
42
- onPressButton,
43
- onClose,
44
- theme,
45
- }) => {
46
- const { theme: appliedTheme } = useTheme(theme);
47
-
48
- const fadeAnim = useRef(new Animated.Value(0)).current;
49
- const scaleAnim = useRef(new Animated.Value(0.85)).current;
50
-
51
- useEffect(() => {
52
- if (visible) {
53
- Animated.parallel([
54
- Animated.timing(fadeAnim, {
55
- toValue: 1,
56
- duration: 220,
57
- useNativeDriver: true,
58
- }),
59
- Animated.spring(scaleAnim, {
60
- toValue: 1,
61
- friction: 7,
62
- tension: 90,
63
- useNativeDriver: true,
64
- }),
65
- ]).start();
66
- } else {
67
- Animated.parallel([
68
- Animated.timing(fadeAnim, {
69
- toValue: 0,
70
- duration: 180,
71
- useNativeDriver: true,
72
- }),
73
- Animated.timing(scaleAnim, {
74
- toValue: 0.85,
75
- duration: 180,
76
- useNativeDriver: true,
77
- }),
78
- ]).start();
79
- }
80
- }, [fadeAnim, scaleAnim, visible]);
81
-
82
- const animationMap = {
83
- success: require('../../assets/animations/Successful.json'),
84
- pending: require('../../assets/animations/Pending.json'),
85
- failed: require('../../assets/animations/Failed.json'),
86
- };
87
-
88
- const defaultTitles = {
89
- success: 'Account successfully created!',
90
- pending: 'Please wait... Processing',
91
- failed: 'Something went wrong!',
92
- };
93
-
94
- const defaultButtonText = {
95
- success: 'Go to Home',
96
- pending: 'Please Wait...',
97
- failed: 'Try Again',
98
- };
99
-
100
- return (
101
- <Modal
102
- transparent
103
- visible={visible}
104
- animationType="none"
105
- onRequestClose={onClose}
106
- >
107
- <Animated.View
108
- style={[
109
- styles.backdrop,
110
- { backgroundColor: appliedTheme.colors.shadow },
111
- ]}
112
- >
113
- <TouchableWithoutFeedback onPress={onClose}>
114
- <View style={StyleSheet.absoluteFill} />
115
- </TouchableWithoutFeedback>
116
-
117
- <Animated.View
118
- style={[
119
- styles.centerContainer,
120
- { opacity: fadeAnim, transform: [{ scale: scaleAnim }] },
121
- ]}
122
- >
123
- <View
124
- style={[
125
- styles.dialogBox,
126
- {
127
- backgroundColor: appliedTheme.colors.surface,
128
- shadowColor: appliedTheme.colors.shadow,
129
- },
130
- ]}
131
- >
132
- {/* Close Button */}
133
- <TouchableOpacity
134
- style={[
135
- styles.closeButton,
136
- { backgroundColor: appliedTheme.colors.background },
137
- ]}
138
- onPress={onClose}
139
- activeOpacity={0.7}
140
- >
141
- <X
142
- color={appliedTheme.colors.textPrimary}
143
- size={scale(18)}
144
- strokeWidth={2}
145
- />
146
- </TouchableOpacity>
147
-
148
- {/* Content Wrapper */}
149
- <View style={styles.contentWrapper}>
150
- {/* Animation */}
151
- <View style={styles.lottieStyle}>
152
- <LottieView
153
- source={animationMap[type]}
154
- autoPlay
155
- loop={type === 'pending'}
156
- style={styles.lottieImage}
157
- />
158
- </View>
159
-
160
- {/* Title */}
161
- <Text
162
- style={[
163
- styles.titleText,
164
- { color: appliedTheme.colors.textPrimary },
165
- ]}
166
- >
167
- {title || defaultTitles[type]}
168
- </Text>
169
- </View>
170
-
171
- {/* Button fixed at bottom */}
172
- <Button.Primary
173
- title={buttonText || defaultButtonText[type]}
174
- onPress={onPressButton}
175
- disabled={type === 'pending'}
176
- containerStyle={styles.bottomButton}
177
- />
178
- </View>
179
- </Animated.View>
180
- </Animated.View>
181
- </Modal>
182
- );
183
- };
184
-
185
- export default AlertDialog;
186
- const styles = StyleSheet.create({
187
- backdrop: {
188
- flex: 1,
189
- zIndex: 10,
190
- backgroundColor: 'rgba(0,0,0,0.5)',
191
- justifyContent: 'center',
192
- alignItems: 'center',
193
- overflow: 'hidden',
194
- paddingHorizontal: scale(15),
195
- },
196
- centerContainer: {
197
- justifyContent: 'center',
198
- alignItems: 'center',
199
- },
200
- dialogBox: {
201
- width: width * 0.85,
202
- borderRadius: moderateScale(16),
203
- paddingTop: verticalScale(20),
204
- paddingBottom: verticalScale(15),
205
- paddingHorizontal: scale(20),
206
- shadowOpacity: 0.25,
207
- shadowRadius: moderateScale(8),
208
- shadowOffset: { width: 0, height: 3 },
209
- elevation: 8,
210
- minHeight: verticalScale(250),
211
- justifyContent: 'flex-start',
212
- },
213
- closeButton: {
214
- position: 'absolute',
215
- top: verticalScale(8),
216
- right: scale(8),
217
- width: scale(28),
218
- height: scale(28),
219
- borderRadius: scale(14),
220
- justifyContent: 'center',
221
- alignItems: 'center',
222
- zIndex: 10,
223
- elevation: 6,
224
- },
225
- contentWrapper: {
226
- alignItems: 'center',
227
- marginBottom: verticalScale(50),
228
- },
229
- lottieStyle: {
230
- width: scale(150),
231
- height: scale(150),
232
- justifyContent: 'center',
233
- alignItems: 'center',
234
- marginBottom: verticalScale(10),
235
- },
236
- lottieImage: {
237
- width: 500,
238
- height: 500,
239
- padding: 0,
240
- },
241
- titleText: {
242
- fontSize: RFValue(15),
243
- fontWeight: '600',
244
- textAlign: 'center',
245
- lineHeight: RFValue(20),
246
- },
247
- bottomButton: {
248
- position: 'absolute',
249
- bottom: verticalScale(15),
250
- left: scale(15),
251
- right: scale(15),
252
- },
253
- });