@zezosoft/zezo-ott-react-native-ui-kit 1.0.6 → 1.0.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 (107) hide show
  1. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js +54 -56
  2. package/lib/module/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.js.map +1 -1
  3. package/lib/module/components/Content/Card/components/CardPoster.js +5 -0
  4. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  5. package/lib/module/components/Content/Content.js +22 -7
  6. package/lib/module/components/Content/Content.js.map +1 -1
  7. package/lib/module/components/ContentView/ContentView.js +99 -83
  8. package/lib/module/components/ContentView/ContentView.js.map +1 -1
  9. package/lib/module/components/ContentView/components/AboutSection.js +15 -1
  10. package/lib/module/components/ContentView/components/AboutSection.js.map +1 -1
  11. package/lib/module/components/ContentView/components/CastCard.js +1 -1
  12. package/lib/module/components/ContentView/components/HeroBanner.js +44 -17
  13. package/lib/module/components/ContentView/components/HeroBanner.js.map +1 -1
  14. package/lib/module/components/ContentView/components/MiniInfo.js +136 -0
  15. package/lib/module/components/ContentView/components/MiniInfo.js.map +1 -0
  16. package/lib/module/components/ContentView/components/Title.js +19 -27
  17. package/lib/module/components/ContentView/components/Title.js.map +1 -1
  18. package/lib/module/components/{Content/Card/components → Fallbacks}/NoContentFallback.js +49 -32
  19. package/lib/module/components/Fallbacks/NoContentFallback.js.map +1 -0
  20. package/lib/module/components/Fallbacks/NotFoundFallback.js +79 -0
  21. package/lib/module/components/Fallbacks/NotFoundFallback.js.map +1 -0
  22. package/lib/module/components/Fallbacks/index.js +5 -0
  23. package/lib/module/components/Fallbacks/index.js.map +1 -0
  24. package/lib/module/components/Input/InputOne.js +9 -3
  25. package/lib/module/components/Input/InputOne.js.map +1 -1
  26. package/lib/module/components/Subscription/SubOne.js +13 -6
  27. package/lib/module/components/Subscription/SubOne.js.map +1 -1
  28. package/lib/module/components/Text/Text.js +31 -10
  29. package/lib/module/components/Text/Text.js.map +1 -1
  30. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js +2 -2
  31. package/lib/module/components/User/ProfileUpdate/ProfileUpdate.js.map +1 -1
  32. package/lib/module/components/View/View.js.map +1 -1
  33. package/lib/module/components/index.js +3 -1
  34. package/lib/module/components/index.js.map +1 -1
  35. package/lib/module/store/themeStore.js +26 -29
  36. package/lib/module/store/themeStore.js.map +1 -1
  37. package/lib/module/theme/ThemeProvider.js.map +1 -1
  38. package/lib/module/theme/hook/useInternalTheme.js +36 -25
  39. package/lib/module/theme/hook/useInternalTheme.js.map +1 -1
  40. package/lib/module/theme/themes.js +14 -2
  41. package/lib/module/theme/themes.js.map +1 -1
  42. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.d.ts +7 -6
  43. package/lib/typescript/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.d.ts.map +1 -1
  44. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts +4 -0
  45. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  46. package/lib/typescript/src/components/Content/Content.d.ts +2 -0
  47. package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
  48. package/lib/typescript/src/components/ContentView/ContentView.d.ts +1 -5
  49. package/lib/typescript/src/components/ContentView/ContentView.d.ts.map +1 -1
  50. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts +6 -3
  51. package/lib/typescript/src/components/ContentView/components/AboutSection.d.ts.map +1 -1
  52. package/lib/typescript/src/components/ContentView/components/HeroBanner.d.ts.map +1 -1
  53. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts +22 -0
  54. package/lib/typescript/src/components/ContentView/components/MiniInfo.d.ts.map +1 -0
  55. package/lib/typescript/src/components/Fallbacks/NoContentFallback.d.ts +16 -0
  56. package/lib/typescript/src/components/Fallbacks/NoContentFallback.d.ts.map +1 -0
  57. package/lib/typescript/src/components/Fallbacks/NotFoundFallback.d.ts +19 -0
  58. package/lib/typescript/src/components/Fallbacks/NotFoundFallback.d.ts.map +1 -0
  59. package/lib/typescript/src/components/Fallbacks/index.d.ts +3 -0
  60. package/lib/typescript/src/components/Fallbacks/index.d.ts.map +1 -0
  61. package/lib/typescript/src/components/Input/InputOne.d.ts.map +1 -1
  62. package/lib/typescript/src/components/Text/Text.d.ts +1 -4
  63. package/lib/typescript/src/components/Text/Text.d.ts.map +1 -1
  64. package/lib/typescript/src/components/View/View.d.ts +2 -2
  65. package/lib/typescript/src/components/View/View.d.ts.map +1 -1
  66. package/lib/typescript/src/components/index.d.ts +3 -1
  67. package/lib/typescript/src/components/index.d.ts.map +1 -1
  68. package/lib/typescript/src/store/themeStore.d.ts +19 -1
  69. package/lib/typescript/src/store/themeStore.d.ts.map +1 -1
  70. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
  71. package/lib/typescript/src/theme/hook/useInternalTheme.d.ts +4 -0
  72. package/lib/typescript/src/theme/hook/useInternalTheme.d.ts.map +1 -1
  73. package/lib/typescript/src/theme/themes.d.ts +6 -0
  74. package/lib/typescript/src/theme/themes.d.ts.map +1 -1
  75. package/lib/typescript/src/types/content/content-view.types.d.ts +7 -0
  76. package/lib/typescript/src/types/content/content-view.types.d.ts.map +1 -1
  77. package/lib/typescript/src/types/content/index.d.ts +1 -1
  78. package/lib/typescript/src/types/content/index.d.ts.map +1 -1
  79. package/package.json +1 -1
  80. package/src/components/Auth/SplashScreen/components/SplashVideo/SplashVideo.tsx +64 -79
  81. package/src/components/Content/Card/components/CardPoster.tsx +5 -0
  82. package/src/components/Content/Content.tsx +23 -3
  83. package/src/components/ContentView/ContentView.tsx +110 -86
  84. package/src/components/ContentView/components/AboutSection.tsx +23 -3
  85. package/src/components/ContentView/components/CastCard.tsx +1 -1
  86. package/src/components/ContentView/components/HeroBanner.tsx +45 -17
  87. package/src/components/ContentView/components/MiniInfo.tsx +193 -0
  88. package/src/components/ContentView/components/Title.tsx +17 -26
  89. package/src/components/Fallbacks/NoContentFallback.tsx +172 -0
  90. package/src/components/Fallbacks/NotFoundFallback.tsx +86 -0
  91. package/src/components/Fallbacks/index.ts +2 -0
  92. package/src/components/Input/InputOne.tsx +26 -3
  93. package/src/components/Subscription/SubOne.tsx +9 -5
  94. package/src/components/Text/Text.tsx +21 -11
  95. package/src/components/User/ProfileUpdate/ProfileUpdate.tsx +2 -2
  96. package/src/components/View/View.tsx +2 -1
  97. package/src/components/index.ts +3 -1
  98. package/src/store/themeStore.ts +33 -43
  99. package/src/theme/ThemeProvider.tsx +0 -1
  100. package/src/theme/hook/useInternalTheme.ts +46 -24
  101. package/src/theme/themes.ts +20 -0
  102. package/src/types/content/content-view.types.ts +7 -0
  103. package/src/types/content/index.ts +1 -5
  104. package/lib/module/components/Content/Card/components/NoContentFallback.js.map +0 -1
  105. package/lib/typescript/src/components/Content/Card/components/NoContentFallback.d.ts +0 -17
  106. package/lib/typescript/src/components/Content/Card/components/NoContentFallback.d.ts.map +0 -1
  107. package/src/components/Content/Card/components/NoContentFallback.tsx +0 -147
@@ -62,7 +62,7 @@ const SubscriptionSliderOne = ({
62
62
  subscribeButtonText = 'Subscribe',
63
63
  subscribeLoadingId,
64
64
  plans,
65
- errorMessage,
65
+ errorMessage = 'Something went wrong',
66
66
  isLoading = false,
67
67
  onBackPress = () => {},
68
68
  header,
@@ -201,10 +201,10 @@ const SubscriptionSliderOne = ({
201
201
  {header.subTitle}
202
202
  </Text>
203
203
 
204
- {errorMessage ? (
205
- <Text style={[styles.errorMessage, { color: colors.error }]}>
206
- {errorMessage}
207
- </Text>
204
+ {!plans || (plans.length === 0 && !isLoading && errorMessage) ? (
205
+ <View style={styles.errorMessage}>
206
+ <Text style={{ color: colors.error }}>{errorMessage}</Text>
207
+ </View>
208
208
  ) : (
209
209
  <Carousel
210
210
  width={CAROUSEL_WIDTH}
@@ -276,9 +276,13 @@ const styles = StyleSheet.create({
276
276
  marginHorizontal: scale(16),
277
277
  },
278
278
  errorMessage: {
279
+ height: CAROUSEL_HEIGHT,
279
280
  fontSize: RFValue(13),
280
281
  fontWeight: '600',
281
282
  textAlign: 'center',
283
+ textAlignVertical: 'center',
284
+ justifyContent: 'center',
285
+ alignItems: 'center',
282
286
  marginVertical: verticalScale(12),
283
287
  },
284
288
 
@@ -1,8 +1,3 @@
1
- /**
2
- * @author Naresh Dhamu
3
- * @lastModified Tue 24 Jun 2025 at 04:33 PM
4
- */
5
-
6
1
  import React from 'react';
7
2
  import {
8
3
  Text as RNText,
@@ -15,7 +10,8 @@ import type { ThemeOverride } from '../../theme/themes';
15
10
 
16
11
  export interface TextProps extends RNTextProps {
17
12
  children: React.ReactNode;
18
- size?: number; // base size
13
+ type?: 'title' | 'subtitle' | 'body' | 'caption';
14
+ size?: number;
19
15
  color?: string;
20
16
  weight?: TextStyle['fontWeight'];
21
17
  align?: TextStyle['textAlign'];
@@ -27,9 +23,10 @@ export interface TextProps extends RNTextProps {
27
23
 
28
24
  const Text: React.FC<TextProps> = ({
29
25
  children,
30
- size = 10,
26
+ type = 'body',
27
+ size,
31
28
  color,
32
- weight = '500',
29
+ weight,
33
30
  align = 'left',
34
31
  fontFamily,
35
32
  numberOfLines,
@@ -40,6 +37,19 @@ const Text: React.FC<TextProps> = ({
40
37
  }) => {
41
38
  const { theme } = useInternalTheme(overrideTheme);
42
39
 
40
+ // Define default styles for each type
41
+ const typeStyles: Record<
42
+ string,
43
+ { size: number; weight: TextStyle['fontWeight']; color?: string }
44
+ > = {
45
+ title: { size: 18, weight: '700', color: theme.colors.textPrimary },
46
+ subtitle: { size: 14, weight: '500', color: theme.colors.textSecondary },
47
+ body: { size: 12, weight: '400', color: theme.colors.textPrimary },
48
+ caption: { size: 10, weight: '400', color: theme.colors.textSecondary },
49
+ };
50
+
51
+ const typeStyle = typeStyles[type] || typeStyles.body;
52
+
43
53
  return (
44
54
  <RNText
45
55
  {...rest}
@@ -47,9 +57,9 @@ const Text: React.FC<TextProps> = ({
47
57
  numberOfLines={numberOfLines}
48
58
  style={[
49
59
  {
50
- color: color ?? theme.colors.textPrimary,
51
- fontSize: RFValue(size),
52
- fontWeight: weight,
60
+ color: color ?? typeStyle?.color,
61
+ fontSize: size ? RFValue(size) : RFValue(Number(typeStyle?.size)),
62
+ fontWeight: weight ?? typeStyle?.weight,
53
63
  textAlign: align,
54
64
  fontFamily,
55
65
  },
@@ -135,7 +135,7 @@ export const ProfileUpdate = ({
135
135
  style={[
136
136
  styles.cameraBtn,
137
137
  {
138
- borderColor: colors.button,
138
+ borderColor: colors.primary,
139
139
  backgroundColor: colors.surfaceVariant,
140
140
  shadowColor: colors.shadow || colors.surface,
141
141
  },
@@ -145,7 +145,7 @@ export const ProfileUpdate = ({
145
145
  >
146
146
  <Camera
147
147
  size={moderateScale(13)}
148
- color={colors.button}
148
+ color={colors.primary}
149
149
  strokeWidth={2}
150
150
  />
151
151
  </TouchableOpacity>
@@ -6,11 +6,12 @@ import React from 'react';
6
6
  import {
7
7
  View as RNView,
8
8
  type ViewProps as RNViewProps,
9
+ type StyleProp,
9
10
  type ViewStyle,
10
11
  } from 'react-native';
11
12
 
12
13
  export type ViewProps = RNViewProps & {
13
- style?: ViewStyle;
14
+ style?: StyleProp<ViewStyle> | undefined;
14
15
  backgroundColor?: string;
15
16
  };
16
17
 
@@ -3,7 +3,9 @@
3
3
  * @lastModified Sun 08 Jun 2025 at 03:23 PM
4
4
  */
5
5
 
6
- export * from './Button/PrimaryBtn';
6
+ export * from './Button';
7
+ export * from './Fallbacks';
8
+ export * from './Input/Input';
7
9
  export * from './Loader/Loader';
8
10
  export * from './Headers';
9
11
  export * from './Content/Content';
@@ -1,53 +1,43 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Thu 12 Jun 2025 at 07:57 PM
4
+ */
5
+
1
6
  import { create } from 'zustand';
2
- import { Appearance, type ColorSchemeName } from 'react-native';
7
+ import { persist, createJSONStorage } from 'zustand/middleware';
3
8
  import { MMKV } from 'react-native-mmkv';
4
9
 
5
- const storage = new MMKV({ id: 'theme_store' });
10
+ const storage = new MMKV();
6
11
 
7
12
  interface ThemeState {
8
13
  isDarkMode: boolean;
14
+ themeMode: 'dark' | 'light' | 'system';
15
+ setIsDarkMode: (value: boolean) => void;
9
16
  setTheme: (mode: 'dark' | 'light' | 'system') => void;
10
17
  }
11
18
 
12
- const getInitialIsDarkMode = (): boolean => {
13
- const storedMode = storage.getString('themeMode') as
14
- | 'dark'
15
- | 'light'
16
- | 'system'
17
- | null;
18
- if (storedMode === 'dark') return true;
19
- if (storedMode === 'light') return false;
20
- return Appearance.getColorScheme() === 'dark';
21
- };
22
-
23
- export const useInternalThemeStore = create<ThemeState>((set) => ({
24
- isDarkMode: getInitialIsDarkMode(),
25
-
26
- setTheme: (mode) => {
27
- let isDark: boolean;
28
-
29
- if (mode === 'dark') {
30
- isDark = true;
31
- } else if (mode === 'light') {
32
- isDark = false;
33
- } else {
34
- const systemColorScheme: ColorSchemeName = Appearance.getColorScheme();
35
- isDark = systemColorScheme === 'dark';
19
+ export const useInternalThemeStore = create(
20
+ persist<ThemeState>(
21
+ (set, _get) => ({
22
+ isDarkMode: false,
23
+ themeMode: 'system',
24
+
25
+ setIsDarkMode: (value: boolean) => {
26
+ const mode = value ? 'dark' : 'light';
27
+ set({ isDarkMode: value, themeMode: mode });
28
+ },
29
+
30
+ setTheme: (mode: 'dark' | 'light' | 'system') => {
31
+ set({ themeMode: mode, isDarkMode: mode === 'dark' });
32
+ },
33
+ }),
34
+ {
35
+ name: 'theme-storage',
36
+ storage: createJSONStorage(() => ({
37
+ getItem: (key: string) => storage.getString(key) ?? null,
38
+ setItem: (key: string, value: string) => storage.set(key, value),
39
+ removeItem: (key: string) => storage.delete(key),
40
+ })),
36
41
  }
37
-
38
- storage.set('themeMode', mode);
39
-
40
- set({ isDarkMode: isDark });
41
- },
42
- }));
43
-
44
- Appearance.addChangeListener(() => {
45
- const storedMode = storage.getString('themeMode') as
46
- | 'dark'
47
- | 'light'
48
- | 'system'
49
- | null;
50
- if (!storedMode || storedMode === 'system') {
51
- useInternalThemeStore.getState().setTheme('system');
52
- }
53
- });
42
+ )
43
+ );
@@ -11,7 +11,6 @@ import {
11
11
  } from 'react-native-safe-area-context';
12
12
  import { GestureHandlerRootView } from 'react-native-gesture-handler';
13
13
  import { AppStatusBar } from '../components/common/AppStatusBar';
14
-
15
14
  import { useInternalTheme } from './hook/useInternalTheme';
16
15
  import { type ITheme, type ThemeOverride } from './themes';
17
16
 
@@ -1,8 +1,10 @@
1
+ /* eslint-disable react-hooks/exhaustive-deps */
1
2
  /**
2
3
  * @author Naresh Dhamu
3
- * @lastModified Sun 19 Oct 2025 at 08:29 PM
4
+ * @lastModified Fri 24 Oct 2025 at 10:45 AM
4
5
  */
5
- import { useMemo, useEffect } from 'react';
6
+
7
+ import React from 'react';
6
8
  import {
7
9
  DarkTheme,
8
10
  LightTheme,
@@ -11,51 +13,71 @@ import {
11
13
  type useInternalThemeReturn,
12
14
  } from '../themes';
13
15
  import { useInternalThemeStore } from '../../store/themeStore';
16
+ import { Appearance } from 'react-native';
14
17
 
15
18
  export const useInternalTheme = (
16
19
  override?: ThemeOverride,
17
20
  isDark?: boolean
18
21
  ): useInternalThemeReturn => {
19
- const { isDarkMode: storeDarkMode, setTheme } = useInternalThemeStore();
22
+ const {
23
+ isDarkMode: storeDarkMode,
24
+ setTheme,
25
+ themeMode,
26
+ setIsDarkMode,
27
+ } = useInternalThemeStore();
20
28
 
21
- const isDarkMode = isDark !== undefined ? isDark : storeDarkMode;
29
+ const isDarkMode = isDark ?? storeDarkMode;
22
30
 
23
- useEffect(() => {
31
+ React.useEffect(() => {
24
32
  if (isDark !== undefined) {
25
33
  setTheme(isDark ? 'dark' : 'light');
26
34
  }
27
35
  }, [isDark, setTheme]);
28
36
 
29
- const selectedOverride = useMemo(() => {
30
- if (!override) return {};
31
- const colors = isDarkMode ? override.dark : override.light;
32
- return colors ?? {};
33
- }, [override, isDarkMode]);
34
- const baseTheme = useMemo(
35
- () => (isDarkMode ? DarkTheme : LightTheme),
36
- [isDarkMode]
37
+ React.useEffect(() => {
38
+ if (themeMode !== 'system') return;
39
+ const subscription = Appearance.addChangeListener(({ colorScheme }) => {
40
+ if (colorScheme === 'dark' || colorScheme === 'light') {
41
+ setIsDarkMode(colorScheme === 'dark');
42
+ }
43
+ });
44
+
45
+ return () => subscription.remove();
46
+ }, []);
47
+
48
+ const overrideColors = React.useMemo(
49
+ () => (isDarkMode ? (override?.dark ?? {}) : (override?.light ?? {})),
50
+ [override, isDarkMode]
37
51
  );
38
52
 
39
- const finalTheme = useMemo<ITheme>(() => {
40
- return {
53
+ const baseTheme = isDarkMode ? DarkTheme : LightTheme;
54
+
55
+ const finalTheme = React.useMemo<ITheme>(
56
+ () => ({
41
57
  ...baseTheme,
42
58
  colors: {
43
59
  ...baseTheme.colors,
44
- ...selectedOverride,
60
+ ...overrideColors,
45
61
  },
46
- };
47
- }, [baseTheme, selectedOverride]);
62
+ }),
63
+ [baseTheme, overrideColors]
64
+ );
65
+
66
+ const themeFull = React.useMemo(
67
+ () => ({
68
+ light: (override?.light as ITheme['colors']) ?? LightTheme.colors,
69
+ dark: (override?.dark as ITheme['colors']) ?? DarkTheme.colors,
70
+ }),
71
+ [override]
72
+ );
48
73
 
49
- return useMemo(
74
+ return React.useMemo(
50
75
  () => ({
51
76
  theme: finalTheme,
52
77
  isDarkMode,
53
78
  setTheme,
54
- themeFull: {
55
- light: (override?.light as ITheme['colors']) ?? LightTheme.colors,
56
- dark: (override?.dark as ITheme['colors']) ?? DarkTheme.colors,
57
- },
79
+ themeFull,
58
80
  }),
59
- [finalTheme, isDarkMode, override?.dark, override?.light, setTheme]
81
+ [finalTheme, isDarkMode, setTheme, themeFull]
60
82
  );
61
83
  };
@@ -83,6 +83,12 @@ export type BaseColors = {
83
83
  switchTrackColorDisabled: string;
84
84
  switchThumbColorDisabled: string;
85
85
 
86
+ alert: {
87
+ success: string;
88
+ warning: string;
89
+ info: string;
90
+ error: string;
91
+ };
86
92
  premiumIcon: string;
87
93
  };
88
94
 
@@ -208,6 +214,13 @@ export const LightTheme: ITheme = {
208
214
  switchTrackColorDisabled: '#D5D5D5',
209
215
  switchThumbColorDisabled: 'white',
210
216
  premiumIcon: '#CA091E',
217
+
218
+ alert: {
219
+ success: '#4CAF50',
220
+ error: 'rgba(255, 0, 0, 1)',
221
+ warning: '#FF9800',
222
+ info: '#2196F3',
223
+ },
211
224
  },
212
225
  };
213
226
 
@@ -309,5 +322,12 @@ export const DarkTheme: ITheme = {
309
322
  switchTrackColorDisabled: '#D5D5D5',
310
323
  switchThumbColorDisabled: 'white',
311
324
  premiumIcon: '#CA091E',
325
+
326
+ alert: {
327
+ success: '#4CAF50',
328
+ error: 'rgba(255, 0, 0, 1)',
329
+ warning: '#FF9800',
330
+ info: '#2196F3',
331
+ },
312
332
  },
313
333
  };
@@ -136,6 +136,13 @@ export type HeroBannerProps = {
136
136
  export type ComponentProps = {
137
137
  content: IContentData;
138
138
  seasons?: IContentData['seasons'];
139
+ text?: {
140
+ notFound?: {
141
+ title?: string;
142
+ subtitle?: string;
143
+ buttonText?: string;
144
+ };
145
+ };
139
146
  theme?: ThemeOverride;
140
147
  isLoading?: boolean;
141
148
  seasonsIsLoading?: boolean;
@@ -139,15 +139,13 @@ export interface IContentData {
139
139
  duration: string;
140
140
  rating: number;
141
141
  type: 'series' | 'movie' | 'live_stream';
142
- content_offering_type: 'FREE' | 'PREMIUM' | 'BUY_OR_RENT';
143
-
142
+ content_offering_type: 'FREE' | 'PREMIUM' | 'BUY_OR_RENT' | 'TVOD';
144
143
  source_link: string | null;
145
144
  trailer_source_link: string | null;
146
145
  source_type: 'HLS' | 'MP4' | 'LIVE_STREAM_HLS';
147
146
  trailer_source_type: 'HLS' | 'MP4';
148
147
  source_key_type?: 'USE_PREFIX' | 'USE_CUSTOM';
149
148
  trailer_source_key_type?: 'USE_PREFIX' | 'USE_CUSTOM';
150
-
151
149
  language: IContentLanguage | null;
152
150
  cast: IContentCast[] | null;
153
151
  category: IContentCategory | null;
@@ -179,12 +177,10 @@ export interface IContentData {
179
177
  rent_count?: number;
180
178
  buy_revenue?: number;
181
179
  rent_revenue?: number;
182
-
183
180
  status: 'PUBLIC' | 'PRIVATE' | 'PENDING' | 'REJECTED';
184
181
  trash: boolean;
185
182
  forKids: boolean;
186
183
  forFamily: boolean;
187
-
188
184
  created_by: string;
189
185
  updated_by: string;
190
186
  createdAt: string;
@@ -1 +0,0 @@
1
- {"version":3,"names":["useCallback","TouchableOpacity","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withSpring","scale","verticalScale","Text","useInternalTheme","RFValue","jsx","_jsx","jsxs","_jsxs","NoContentFallback","message","retryText","onRetry","theme","emoji","style","appliedTheme","scaleValue","handlePressIn","value","damping","stiffness","handlePressOut","animatedButtonStyle","transform","View","styles","container","backgroundColor","colors","background","accessibilityLabel","accessibilityHint","children","color","textPrimary","textSecondary","onPress","onPressIn","onPressOut","retryButton","primary","borderColor","outline","accessibilityRole","create","flex","alignItems","justifyContent","paddingHorizontal","paddingVertical","fontSize","marginBottom","textAlign","fontWeight","lineHeight","borderRadius","borderWidth"],"sourceRoot":"../../../../../../src","sources":["components/Content/Card/components/NoContentFallback.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,17 +0,0 @@
1
- /**
2
- * @author Naresh Dhamu
3
- * @lastModified Wed 25 Jun 2025 at 11:59 AM
4
- */
5
- import { type StyleProp, type ViewStyle } from 'react-native';
6
- import type { ThemeOverride } from '../../../../theme/themes';
7
- type NoContentFallbackProps = {
8
- message?: string;
9
- retryText?: string;
10
- onRetry?: () => void;
11
- theme?: ThemeOverride;
12
- emoji?: string;
13
- style?: StyleProp<ViewStyle>;
14
- };
15
- declare const NoContentFallback: ({ message, retryText, onRetry, theme, emoji, style, }: NoContentFallbackProps) => import("react/jsx-runtime").JSX.Element;
16
- export default NoContentFallback;
17
- //# sourceMappingURL=NoContentFallback.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoContentFallback.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Content/Card/components/NoContentFallback.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAStB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAI,uDAOxB,sBAAsB,4CAwExB,CAAC;AAmCF,eAAe,iBAAiB,CAAC"}
@@ -1,147 +0,0 @@
1
- /**
2
- * @author Naresh Dhamu
3
- * @lastModified Wed 25 Jun 2025 at 11:59 AM
4
- */
5
-
6
- import { useCallback } from 'react';
7
- import {
8
- TouchableOpacity,
9
- StyleSheet,
10
- type StyleProp,
11
- type ViewStyle,
12
- } from 'react-native';
13
- import Animated, {
14
- useSharedValue,
15
- useAnimatedStyle,
16
- withSpring,
17
- } from 'react-native-reanimated';
18
- import { scale, verticalScale } from 'react-native-size-matters';
19
- import { Text } from '../../../Text';
20
- import { useInternalTheme } from '../../../../theme/hook/useInternalTheme';
21
- import type { ThemeOverride } from '../../../../theme/themes';
22
- import { RFValue } from 'react-native-responsive-fontsize';
23
-
24
- type NoContentFallbackProps = {
25
- message?: string;
26
- retryText?: string;
27
- onRetry?: () => void;
28
- theme?: ThemeOverride;
29
- emoji?: string;
30
- style?: StyleProp<ViewStyle>;
31
- };
32
-
33
- const NoContentFallback = ({
34
- message = 'No content available right now.\nPlease check back later.',
35
- retryText = 'Try Again',
36
- onRetry,
37
- theme,
38
- emoji = '😔',
39
- style,
40
- }: NoContentFallbackProps) => {
41
- const { theme: appliedTheme } = useInternalTheme(theme);
42
- const scaleValue = useSharedValue(1);
43
-
44
- const handlePressIn = useCallback(() => {
45
- scaleValue.value = withSpring(0.95, { damping: 15, stiffness: 200 });
46
- }, [scaleValue]);
47
-
48
- const handlePressOut = useCallback(() => {
49
- scaleValue.value = withSpring(1, { damping: 15, stiffness: 200 });
50
- }, [scaleValue]);
51
-
52
- const animatedButtonStyle = useAnimatedStyle(() => ({
53
- transform: [{ scale: scaleValue.value }],
54
- }));
55
-
56
- return (
57
- <Animated.View
58
- style={[
59
- styles.container,
60
- style,
61
- { backgroundColor: appliedTheme.colors.background },
62
- ]}
63
- accessibilityLabel="No content available"
64
- accessibilityHint="Check back later or try again"
65
- >
66
- <Animated.Text
67
- style={[styles.emoji, { color: appliedTheme.colors.textPrimary }]}
68
- >
69
- {emoji}
70
- </Animated.Text>
71
- <Text
72
- style={[
73
- styles.message,
74
- {
75
- color: appliedTheme.colors.textSecondary,
76
- },
77
- ]}
78
- >
79
- {message}
80
- </Text>
81
- {onRetry && (
82
- <TouchableOpacity
83
- onPress={onRetry}
84
- onPressIn={handlePressIn}
85
- onPressOut={handlePressOut}
86
- style={[
87
- styles.retryButton,
88
- {
89
- backgroundColor: appliedTheme.colors.primary,
90
- borderColor: appliedTheme.colors.outline,
91
- },
92
- ]}
93
- accessibilityLabel={retryText}
94
- accessibilityRole="button"
95
- >
96
- <Animated.View style={animatedButtonStyle}>
97
- <Text
98
- style={[
99
- styles.retryText,
100
- {
101
- color: appliedTheme.colors.textPrimary,
102
- },
103
- ]}
104
- >
105
- {retryText}
106
- </Text>
107
- </Animated.View>
108
- </TouchableOpacity>
109
- )}
110
- </Animated.View>
111
- );
112
- };
113
-
114
- const styles = StyleSheet.create({
115
- container: {
116
- flex: 1,
117
- alignItems: 'center',
118
- justifyContent: 'center',
119
- paddingHorizontal: scale(20),
120
- paddingVertical: verticalScale(40),
121
- },
122
- emoji: {
123
- fontSize: RFValue(63),
124
- marginBottom: verticalScale(16),
125
- textAlign: 'center',
126
- },
127
- message: {
128
- fontSize: RFValue(15),
129
- textAlign: 'center',
130
- fontWeight: '500',
131
- lineHeight: verticalScale(22),
132
- marginBottom: verticalScale(20),
133
- },
134
- retryButton: {
135
- paddingHorizontal: scale(24),
136
- paddingVertical: verticalScale(12),
137
- borderRadius: scale(8),
138
- borderWidth: scale(1),
139
- },
140
- retryText: {
141
- fontSize: RFValue(13),
142
- fontWeight: '600',
143
- textAlign: 'center',
144
- },
145
- });
146
-
147
- export default NoContentFallback;