@zezosoft/zezo-ott-react-native-ui-kit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +32 -0
  3. package/lib/module/assets/animations/135037-payment-processing-error.json +1 -0
  4. package/lib/module/assets/animations/7227-vui-animation.json +1 -0
  5. package/lib/module/assets/animations/succesfull-payment.json +1 -0
  6. package/lib/module/assets/animations/voice-icon.json +1 -0
  7. package/lib/module/assets/img/back.png +0 -0
  8. package/lib/module/assets/img/bottom-panel.png +0 -0
  9. package/lib/module/assets/img/camera.png +0 -0
  10. package/lib/module/assets/img/camera2.png +0 -0
  11. package/lib/module/assets/img/h.svg +4 -0
  12. package/lib/module/assets/img/home.png +0 -0
  13. package/lib/module/assets/img/lock.png +0 -0
  14. package/lib/module/assets/img/play.png +0 -0
  15. package/lib/module/assets/img/profile.png +0 -0
  16. package/lib/module/assets/img/qr-code.png +0 -0
  17. package/lib/module/assets/img/shadow.png +0 -0
  18. package/lib/module/assets/img/shadow2.png +0 -0
  19. package/lib/module/assets/img/user.png +0 -0
  20. package/lib/module/assets/svg/content-error.svg +28 -0
  21. package/lib/module/assets/svg/download.svg +3 -0
  22. package/lib/module/assets/svg/favorites.svg +3 -0
  23. package/lib/module/assets/svg/home.svg +5 -0
  24. package/lib/module/assets/svg/menu-bar.svg +4 -0
  25. package/lib/module/assets/svg/my-space.svg +14 -0
  26. package/lib/module/assets/svg/play-icon-with-bg.svg +5 -0
  27. package/lib/module/assets/svg/search.svg +5 -0
  28. package/lib/module/assets/svg/server-error.svg +139 -0
  29. package/lib/module/components/Button/Button.js +22 -0
  30. package/lib/module/components/Button/Button.js.map +1 -0
  31. package/lib/module/components/Button/styles.js +23 -0
  32. package/lib/module/components/Button/styles.js.map +1 -0
  33. package/lib/module/components/Headers/One.js +101 -0
  34. package/lib/module/components/Headers/One.js.map +1 -0
  35. package/lib/module/components/Headers/Three.js +62 -0
  36. package/lib/module/components/Headers/Three.js.map +1 -0
  37. package/lib/module/components/Headers/Two.js +77 -0
  38. package/lib/module/components/Headers/Two.js.map +1 -0
  39. package/lib/module/components/Headers/index.js +17 -0
  40. package/lib/module/components/Headers/index.js.map +1 -0
  41. package/lib/module/components/Icons/AlertIcon.js +33 -0
  42. package/lib/module/components/Icons/AlertIcon.js.map +1 -0
  43. package/lib/module/components/Icons/DeviceIcon.js +25 -0
  44. package/lib/module/components/Icons/DeviceIcon.js.map +1 -0
  45. package/lib/module/components/Icons/DoneIcon/DoneIcon.js +23 -0
  46. package/lib/module/components/Icons/DoneIcon/DoneIcon.js.map +1 -0
  47. package/lib/module/components/Icons/ForgotPasswordMessageIcon.js +65 -0
  48. package/lib/module/components/Icons/ForgotPasswordMessageIcon.js.map +1 -0
  49. package/lib/module/components/Icons/ForgotPasswordMessageIconTwo.js +56 -0
  50. package/lib/module/components/Icons/ForgotPasswordMessageIconTwo.js.map +1 -0
  51. package/lib/module/components/Icons/NewIndex.js +24 -0
  52. package/lib/module/components/Icons/NewIndex.js.map +1 -0
  53. package/lib/module/components/Icons/ResendOTP.js +21 -0
  54. package/lib/module/components/Icons/ResendOTP.js.map +1 -0
  55. package/lib/module/components/Loader/Loader.js +35 -0
  56. package/lib/module/components/Loader/Loader.js.map +1 -0
  57. package/lib/module/components/Logo/Logo.js +41 -0
  58. package/lib/module/components/Logo/Logo.js.map +1 -0
  59. package/lib/module/components/Section/Card/Sliders/Styles/One.js +123 -0
  60. package/lib/module/components/Section/Card/Sliders/Styles/One.js.map +1 -0
  61. package/lib/module/components/Section/Card/Sliders/index.js +14 -0
  62. package/lib/module/components/Section/Card/Sliders/index.js.map +1 -0
  63. package/lib/module/components/Section/Card/Styles/One.js +92 -0
  64. package/lib/module/components/Section/Card/Styles/One.js.map +1 -0
  65. package/lib/module/components/Section/Card/index.js +14 -0
  66. package/lib/module/components/Section/Card/index.js.map +1 -0
  67. package/lib/module/components/Section/SectionType.js +98 -0
  68. package/lib/module/components/Section/SectionType.js.map +1 -0
  69. package/lib/module/components/Section/Sections.js +72 -0
  70. package/lib/module/components/Section/Sections.js.map +1 -0
  71. package/lib/module/components/index.js +13 -0
  72. package/lib/module/components/index.js.map +1 -0
  73. package/lib/module/index.js +9 -0
  74. package/lib/module/index.js.map +1 -0
  75. package/lib/module/package.json +1 -0
  76. package/lib/module/sample.test.js +8 -0
  77. package/lib/module/sample.test.js.map +1 -0
  78. package/lib/module/theme/themes.js +118 -0
  79. package/lib/module/theme/themes.js.map +1 -0
  80. package/lib/module/theme/useAppTheme.js +14 -0
  81. package/lib/module/theme/useAppTheme.js.map +1 -0
  82. package/lib/module/types/content.types.js +2 -0
  83. package/lib/module/types/content.types.js.map +1 -0
  84. package/lib/module/types/index.js +5 -0
  85. package/lib/module/types/index.js.map +1 -0
  86. package/lib/module/types/sections.types.js +4 -0
  87. package/lib/module/types/sections.types.js.map +1 -0
  88. package/lib/typescript/package.json +1 -0
  89. package/lib/typescript/src/components/Button/Button.d.ts +9 -0
  90. package/lib/typescript/src/components/Button/Button.d.ts.map +1 -0
  91. package/lib/typescript/src/components/Button/styles.d.ts +20 -0
  92. package/lib/typescript/src/components/Button/styles.d.ts.map +1 -0
  93. package/lib/typescript/src/components/Headers/One.d.ts +25 -0
  94. package/lib/typescript/src/components/Headers/One.d.ts.map +1 -0
  95. package/lib/typescript/src/components/Headers/Three.d.ts +14 -0
  96. package/lib/typescript/src/components/Headers/Three.d.ts.map +1 -0
  97. package/lib/typescript/src/components/Headers/Two.d.ts +19 -0
  98. package/lib/typescript/src/components/Headers/Two.d.ts.map +1 -0
  99. package/lib/typescript/src/components/Headers/index.d.ts +11 -0
  100. package/lib/typescript/src/components/Headers/index.d.ts.map +1 -0
  101. package/lib/typescript/src/components/Icons/AlertIcon.d.ts +7 -0
  102. package/lib/typescript/src/components/Icons/AlertIcon.d.ts.map +1 -0
  103. package/lib/typescript/src/components/Icons/DeviceIcon.d.ts +7 -0
  104. package/lib/typescript/src/components/Icons/DeviceIcon.d.ts.map +1 -0
  105. package/lib/typescript/src/components/Icons/DoneIcon/DoneIcon.d.ts +6 -0
  106. package/lib/typescript/src/components/Icons/DoneIcon/DoneIcon.d.ts.map +1 -0
  107. package/lib/typescript/src/components/Icons/ForgotPasswordMessageIcon.d.ts +3 -0
  108. package/lib/typescript/src/components/Icons/ForgotPasswordMessageIcon.d.ts.map +1 -0
  109. package/lib/typescript/src/components/Icons/ForgotPasswordMessageIconTwo.d.ts +3 -0
  110. package/lib/typescript/src/components/Icons/ForgotPasswordMessageIconTwo.d.ts.map +1 -0
  111. package/lib/typescript/src/components/Icons/NewIndex.d.ts +13 -0
  112. package/lib/typescript/src/components/Icons/NewIndex.d.ts.map +1 -0
  113. package/lib/typescript/src/components/Icons/ResendOTP.d.ts +7 -0
  114. package/lib/typescript/src/components/Icons/ResendOTP.d.ts.map +1 -0
  115. package/lib/typescript/src/components/Loader/Loader.d.ts +11 -0
  116. package/lib/typescript/src/components/Loader/Loader.d.ts.map +1 -0
  117. package/lib/typescript/src/components/Logo/Logo.d.ts +19 -0
  118. package/lib/typescript/src/components/Logo/Logo.d.ts.map +1 -0
  119. package/lib/typescript/src/components/Section/Card/Sliders/Styles/One.d.ts +18 -0
  120. package/lib/typescript/src/components/Section/Card/Sliders/Styles/One.d.ts.map +1 -0
  121. package/lib/typescript/src/components/Section/Card/Sliders/index.d.ts +7 -0
  122. package/lib/typescript/src/components/Section/Card/Sliders/index.d.ts.map +1 -0
  123. package/lib/typescript/src/components/Section/Card/Styles/One.d.ts +19 -0
  124. package/lib/typescript/src/components/Section/Card/Styles/One.d.ts.map +1 -0
  125. package/lib/typescript/src/components/Section/Card/index.d.ts +7 -0
  126. package/lib/typescript/src/components/Section/Card/index.d.ts.map +1 -0
  127. package/lib/typescript/src/components/Section/SectionType.d.ts +26 -0
  128. package/lib/typescript/src/components/Section/SectionType.d.ts.map +1 -0
  129. package/lib/typescript/src/components/Section/Sections.d.ts +27 -0
  130. package/lib/typescript/src/components/Section/Sections.d.ts.map +1 -0
  131. package/lib/typescript/src/components/index.d.ts +10 -0
  132. package/lib/typescript/src/components/index.d.ts.map +1 -0
  133. package/lib/typescript/src/index.d.ts +7 -0
  134. package/lib/typescript/src/index.d.ts.map +1 -0
  135. package/lib/typescript/src/sample.test.d.ts +1 -0
  136. package/lib/typescript/src/sample.test.d.ts.map +1 -0
  137. package/lib/typescript/src/theme/themes.d.ts +57 -0
  138. package/lib/typescript/src/theme/themes.d.ts.map +1 -0
  139. package/lib/typescript/src/theme/useAppTheme.d.ts +46 -0
  140. package/lib/typescript/src/theme/useAppTheme.d.ts.map +1 -0
  141. package/lib/typescript/src/types/content.types.d.ts +154 -0
  142. package/lib/typescript/src/types/content.types.d.ts.map +1 -0
  143. package/lib/typescript/src/types/index.d.ts +3 -0
  144. package/lib/typescript/src/types/index.d.ts.map +1 -0
  145. package/lib/typescript/src/types/sections.types.d.ts +41 -0
  146. package/lib/typescript/src/types/sections.types.d.ts.map +1 -0
  147. package/package.json +168 -0
  148. package/src/assets/animations/135037-payment-processing-error.json +1 -0
  149. package/src/assets/animations/7227-vui-animation.json +1 -0
  150. package/src/assets/animations/succesfull-payment.json +1 -0
  151. package/src/assets/animations/voice-icon.json +1 -0
  152. package/src/assets/img/back.png +0 -0
  153. package/src/assets/img/bottom-panel.png +0 -0
  154. package/src/assets/img/camera.png +0 -0
  155. package/src/assets/img/camera2.png +0 -0
  156. package/src/assets/img/h.svg +4 -0
  157. package/src/assets/img/home.png +0 -0
  158. package/src/assets/img/lock.png +0 -0
  159. package/src/assets/img/play.png +0 -0
  160. package/src/assets/img/profile.png +0 -0
  161. package/src/assets/img/qr-code.png +0 -0
  162. package/src/assets/img/shadow.png +0 -0
  163. package/src/assets/img/shadow2.png +0 -0
  164. package/src/assets/img/user.png +0 -0
  165. package/src/assets/svg/content-error.svg +28 -0
  166. package/src/assets/svg/download.svg +3 -0
  167. package/src/assets/svg/favorites.svg +3 -0
  168. package/src/assets/svg/home.svg +5 -0
  169. package/src/assets/svg/menu-bar.svg +4 -0
  170. package/src/assets/svg/my-space.svg +14 -0
  171. package/src/assets/svg/play-icon-with-bg.svg +5 -0
  172. package/src/assets/svg/search.svg +5 -0
  173. package/src/assets/svg/server-error.svg +139 -0
  174. package/src/components/Button/Button.tsx +32 -0
  175. package/src/components/Button/styles.ts +21 -0
  176. package/src/components/Headers/One.tsx +100 -0
  177. package/src/components/Headers/Three.tsx +63 -0
  178. package/src/components/Headers/Two.tsx +75 -0
  179. package/src/components/Headers/index.ts +16 -0
  180. package/src/components/Icons/AlertIcon.tsx +29 -0
  181. package/src/components/Icons/DeviceIcon.tsx +24 -0
  182. package/src/components/Icons/DoneIcon/DoneIcon.tsx +17 -0
  183. package/src/components/Icons/ForgotPasswordMessageIcon.tsx +55 -0
  184. package/src/components/Icons/ForgotPasswordMessageIconTwo.tsx +46 -0
  185. package/src/components/Icons/NewIndex.ts +23 -0
  186. package/src/components/Icons/ResendOTP.tsx +23 -0
  187. package/src/components/Loader/Loader.tsx +33 -0
  188. package/src/components/Logo/Logo.tsx +60 -0
  189. package/src/components/Section/Card/Sliders/Styles/One.tsx +147 -0
  190. package/src/components/Section/Card/Sliders/index.ts +13 -0
  191. package/src/components/Section/Card/Styles/One.tsx +112 -0
  192. package/src/components/Section/Card/index.ts +13 -0
  193. package/src/components/Section/SectionType.tsx +127 -0
  194. package/src/components/Section/Sections.tsx +120 -0
  195. package/src/components/index.ts +10 -0
  196. package/src/index.ts +6 -0
  197. package/src/sample.test.ts +5 -0
  198. package/src/theme/themes.ts +198 -0
  199. package/src/theme/useAppTheme.ts +13 -0
  200. package/src/types/content.types.ts +167 -0
  201. package/src/types/index.ts +2 -0
  202. package/src/types/sections.types.ts +56 -0
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Mon 09 Jun 2025 at 03:11 PM
4
+ */
5
+ import React from 'react';
6
+ import { Platform, StyleSheet, View } from 'react-native';
7
+ import { scale, verticalScale } from 'react-native-size-matters';
8
+ import { Logo } from '../Logo/Logo';
9
+ import type { ITheme } from '../../theme/themes';
10
+ import { useAppTheme } from '../../theme/useAppTheme'; // import your hook
11
+
12
+ export interface HeaderThreeProps {
13
+ logoUri: string;
14
+ category?: React.ReactNode;
15
+ theme?: ITheme;
16
+ }
17
+
18
+ const HeaderThree: React.FC<HeaderThreeProps> = ({
19
+ logoUri,
20
+ category,
21
+ theme,
22
+ }) => {
23
+ const { colors } = useAppTheme(theme);
24
+
25
+ return (
26
+ <View
27
+ style={[styles.headerContainer, { backgroundColor: colors.background }]}
28
+ >
29
+ <View style={styles.leftContainer}>
30
+ <View style={styles.logo}>
31
+ <Logo width={scale(55)} height={scale(50)} logoUri={logoUri} />
32
+ </View>
33
+ {category || null}
34
+ </View>
35
+ </View>
36
+ );
37
+ };
38
+
39
+ export default HeaderThree;
40
+
41
+ const styles = StyleSheet.create({
42
+ headerContainer: {
43
+ flexDirection: 'row',
44
+ justifyContent: 'space-between',
45
+ alignItems: 'center',
46
+ paddingHorizontal: scale(8),
47
+ height: verticalScale(40),
48
+ position: 'absolute',
49
+ top: 0,
50
+ left: 0,
51
+ right: 0,
52
+ zIndex: 100,
53
+ },
54
+ leftContainer: {
55
+ flexDirection: 'row',
56
+ alignItems: 'center',
57
+ gap: scale(10),
58
+ },
59
+ logo: {
60
+ alignItems: 'center',
61
+ marginVertical: Platform.OS === 'ios' ? verticalScale(0) : verticalScale(5),
62
+ },
63
+ });
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Mon 09 Jun 2025 at 03:11 PM
4
+ */
5
+ import React from 'react';
6
+ import { Platform, Pressable, StyleSheet, View } from 'react-native';
7
+ import { scale, verticalScale } from 'react-native-size-matters';
8
+ import { Logo } from '../Logo/Logo';
9
+ import DefaultIcons from '../Icons/NewIndex';
10
+ import type { ITheme } from '../../theme/themes';
11
+ import { useAppTheme } from '../../theme/useAppTheme';
12
+
13
+ export interface HeaderTwoProps {
14
+ theme?: ITheme;
15
+ logoUri: string;
16
+ MenuIcon?: React.FC<{ width: number; height: number; color?: string }>;
17
+ onMenuPress?: () => void;
18
+ }
19
+
20
+ const HeaderTwo: React.FC<HeaderTwoProps> = ({
21
+ theme,
22
+ logoUri,
23
+ MenuIcon,
24
+ onMenuPress,
25
+ }) => {
26
+ const { colors } = useAppTheme(theme);
27
+
28
+ const Menu = MenuIcon || DefaultIcons.MenuBar;
29
+
30
+ const rippleColor = colors.surfaceVariant + '33';
31
+ const pressedBackgroundColor = colors.backdrop;
32
+
33
+ return (
34
+ <View style={styles.headerContainer}>
35
+ <Pressable
36
+ onPress={onMenuPress}
37
+ android_ripple={{ color: rippleColor, borderless: true }}
38
+ style={({ pressed }) => [
39
+ styles.iconPressable,
40
+ pressed && { backgroundColor: pressedBackgroundColor },
41
+ ]}
42
+ >
43
+ <Menu width={scale(28)} height={scale(28)} />
44
+ </Pressable>
45
+ <View style={styles.logo}>
46
+ <Logo width={scale(100)} height={scale(80)} logoUri={logoUri} />
47
+ </View>
48
+ <View style={styles.placeholder} />
49
+ </View>
50
+ );
51
+ };
52
+
53
+ export default HeaderTwo;
54
+
55
+ const styles = StyleSheet.create({
56
+ headerContainer: {
57
+ flexDirection: 'row',
58
+ justifyContent: 'space-between',
59
+ alignItems: 'center',
60
+ paddingHorizontal: scale(8),
61
+ height: verticalScale(40),
62
+ },
63
+ logo: {
64
+ flex: 1,
65
+ alignItems: 'center',
66
+ marginVertical: Platform.OS === 'ios' ? verticalScale(0) : verticalScale(5),
67
+ },
68
+ iconPressable: {
69
+ padding: scale(6),
70
+ borderRadius: scale(20),
71
+ },
72
+ placeholder: {
73
+ width: scale(28 + 12),
74
+ },
75
+ });
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Sun 08 Jun 2025 at 03:16 PM
4
+ */
5
+
6
+ import HeaderOne from './One';
7
+ import HeaderThree from './Three';
8
+ import HeaderTwo from './Two';
9
+
10
+ const Header = {
11
+ One: HeaderOne,
12
+ Two: HeaderTwo,
13
+ Three: HeaderThree,
14
+ };
15
+
16
+ export { Header };
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { scale } from 'react-native-size-matters';
3
+ import Svg, { Path, Circle } from 'react-native-svg';
4
+
5
+ export function AlertIcon({
6
+ size = scale(213),
7
+ strokeColor = '#DF1212',
8
+ bgColor = '#D9D9D9',
9
+ }) {
10
+ return (
11
+ <Svg width={size} height={size} viewBox="0 0 213 214" fill="none">
12
+ <Circle
13
+ cx={106.268}
14
+ cy={106.923}
15
+ r={103.018}
16
+ fill={bgColor}
17
+ stroke={strokeColor}
18
+ strokeWidth={6.49971}
19
+ />
20
+ <Path
21
+ d="M99.01 73.857l-33.936 56.655a8.01 8.01 0 002.876 10.913 8.016 8.016 0 003.975 1.107h67.873a8.017 8.017 0 007.926-8.036 8.018 8.018 0 00-1.074-3.984l-33.937-56.655a8.012 8.012 0 00-13.703 0zM106 94.452v16.027M106 126.505h.041"
22
+ stroke={strokeColor}
23
+ strokeWidth={8.01335}
24
+ strokeLinecap="round"
25
+ strokeLinejoin="round"
26
+ />
27
+ </Svg>
28
+ );
29
+ }
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import Svg, { Path } from 'react-native-svg';
3
+
4
+ function DeviceIcon({
5
+ size = 25,
6
+ color = '#FFF',
7
+ }: {
8
+ size?: number;
9
+ color?: string;
10
+ }) {
11
+ return (
12
+ <Svg width={size} height={size} viewBox="0 0 18 24" fill="none">
13
+ <Path
14
+ d="M14.43 1.428H3.803a2.126 2.126 0 00-2.126 2.126v17.004c0 1.174.952 2.126 2.126 2.126H14.43a2.126 2.126 0 002.126-2.126V3.554a2.126 2.126 0 00-2.126-2.126zM9.116 18.433h.01"
15
+ stroke={color}
16
+ strokeWidth={2.12558}
17
+ strokeLinecap="round"
18
+ strokeLinejoin="round"
19
+ />
20
+ </Svg>
21
+ );
22
+ }
23
+
24
+ export default DeviceIcon;
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import Svg, { Path } from 'react-native-svg';
3
+
4
+ function DoneIcon({ size = 25 }: { size?: number }) {
5
+ return (
6
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
7
+ <Path
8
+ fillRule="evenodd"
9
+ clipRule="evenodd"
10
+ d="M8.682 19.731l15-14-1.364-1.462-14.294 13.34-5.317-5.316-1.414 1.414 6 6a1 1 0 001.39.024z"
11
+ fill="#FFF"
12
+ />
13
+ </Svg>
14
+ );
15
+ }
16
+
17
+ export default DoneIcon;
@@ -0,0 +1,55 @@
1
+ import * as React from 'react';
2
+ import Svg, { G, Rect, Path, Circle, Defs } from 'react-native-svg';
3
+
4
+ export function ForgotPasswordMessageIcon(props: any) {
5
+ return (
6
+ <Svg
7
+ width={109}
8
+ height={109}
9
+ viewBox="0 0 109 109"
10
+ fill="none"
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ {...props}
13
+ >
14
+ <G filter="url(#filter0_d_972_1083)">
15
+ <G filter="url(#filter1_d_972_1083)">
16
+ <Rect
17
+ x={6.73749}
18
+ y={5.68115}
19
+ width={96.1664}
20
+ height={96.1664}
21
+ rx={17.31}
22
+ fill="#000"
23
+ />
24
+ <Rect
25
+ x={7.3786}
26
+ y={6.32226}
27
+ width={94.8842}
28
+ height={94.8842}
29
+ rx={16.6688}
30
+ stroke="#34353A"
31
+ strokeWidth={1.28222}
32
+ />
33
+ </G>
34
+ <Path
35
+ fillRule="evenodd"
36
+ clipRule="evenodd"
37
+ d="M41.867 31.195a9.617 9.617 0 00-9.617 9.616v19.364a9.617 9.617 0 009.617 9.617h6.19l5.604 6.732a1.282 1.282 0 001.923.054l6.326-6.786h6.517a9.617 9.617 0 009.616-9.617V40.811a9.617 9.617 0 00-9.616-9.616h-26.56z"
38
+ fill="#fff"
39
+ />
40
+ <Circle cx={45.9888} cy={52.1289} r={2.61677} fill="#000" />
41
+ <Circle cx={55.1472} cy={52.1289} r={2.61677} fill="#000" />
42
+ <Circle cx={64.3064} cy={52.1289} r={2.61677} fill="#000" />
43
+ <Circle
44
+ cx={73.4644}
45
+ cy={35.7741}
46
+ r={7.55593}
47
+ fill="#fff"
48
+ stroke="#000"
49
+ strokeWidth={3.20555}
50
+ />
51
+ </G>
52
+ <Defs />
53
+ </Svg>
54
+ );
55
+ }
@@ -0,0 +1,46 @@
1
+ import * as React from 'react';
2
+ import Svg, { G, Rect, Path, Circle, Defs } from 'react-native-svg';
3
+
4
+ export function ForgotPasswordMessageIconTwo(props: any) {
5
+ return (
6
+ <Svg
7
+ width={115}
8
+ height={114}
9
+ viewBox="0 0 115 114"
10
+ fill="none"
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ {...props}
13
+ >
14
+ <G filter="url(#filter0_d_972_1131)">
15
+ <Rect
16
+ x={10.3786}
17
+ y={7.32275}
18
+ width={94.8842}
19
+ height={94.8842}
20
+ rx={16.6688}
21
+ fill="#fff"
22
+ stroke="#D9D9D9"
23
+ strokeWidth={1.28222}
24
+ />
25
+ <Path
26
+ fillRule="evenodd"
27
+ clipRule="evenodd"
28
+ d="M44.867 32.195a9.617 9.617 0 00-9.617 9.617v19.364a9.617 9.617 0 009.617 9.617h6.19l5.604 6.731a1.282 1.282 0 001.923.055l6.326-6.786h6.517a9.617 9.617 0 009.616-9.617V41.812a9.617 9.617 0 00-9.616-9.617h-26.56z"
29
+ fill="#000"
30
+ />
31
+ <Circle cx={48.9888} cy={53.1295} r={2.61677} fill="#fff" />
32
+ <Circle cx={58.1472} cy={53.1295} r={2.61677} fill="#fff" />
33
+ <Circle cx={67.3064} cy={53.1295} r={2.61677} fill="#fff" />
34
+ <Circle
35
+ cx={76.4643}
36
+ cy={36.7749}
37
+ r={7.55593}
38
+ fill="#000"
39
+ stroke="#fff"
40
+ strokeWidth={3.20555}
41
+ />
42
+ </G>
43
+ <Defs />
44
+ </Svg>
45
+ );
46
+ }
@@ -0,0 +1,23 @@
1
+ import MenuBarICon from '../../assets/svg/menu-bar.svg';
2
+ import NewSearchIcon from '../../assets/svg/search.svg';
3
+ import HomeIcon from '../../assets/svg/home.svg';
4
+ import DownloadIcon from '../../assets/svg/download.svg';
5
+ import MySpaceIcon from '../../assets/svg/my-space.svg';
6
+ import FavoritesIcon from '../../assets/svg/favorites.svg';
7
+ import PlayIconWithBg from '../../assets/svg/play-icon-with-bg.svg';
8
+ import ContentErrorIcon from '../../assets/svg/content-error.svg';
9
+ import ServerErrorIcon from '../../assets/svg/server-error.svg';
10
+
11
+ const Icons = {
12
+ MenuBar: MenuBarICon,
13
+ Search: NewSearchIcon,
14
+ Home: HomeIcon,
15
+ Download: DownloadIcon,
16
+ MySpace: MySpaceIcon,
17
+ Favorites: FavoritesIcon,
18
+ PlayIconWithBg: PlayIconWithBg,
19
+ ContentError: ContentErrorIcon,
20
+ ServerError: ServerErrorIcon,
21
+ };
22
+
23
+ export default Icons;
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import Svg, { Path } from 'react-native-svg';
3
+ export function ResendOTP(props: {
4
+ width?: number;
5
+ height?: number;
6
+ stroke?: string;
7
+ }) {
8
+ return (
9
+ <Svg
10
+ width={props.width || 14}
11
+ height={props.height || 13}
12
+ stroke={props.stroke}
13
+ viewBox="0 0 14 13"
14
+ fill="none"
15
+ >
16
+ <Path
17
+ d="M7.452 9.998v-.532H2.13A1.597 1.597 0 01.531 7.869v-5.74c0-.882.715-1.597 1.597-1.597h9.582c.882 0 1.597.715 1.597 1.597v5.74c0 .882-.715 1.597-1.597 1.597H10.38c-.3 0-.59.108-.816.305l-2.112 1.836V9.998z"
18
+ // stroke="#74798F"
19
+ strokeWidth={1.06462}
20
+ />
21
+ </Svg>
22
+ );
23
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Sun 08 Jun 2025 at 03:30 PM
4
+ */
5
+ import React from 'react';
6
+ import { StyleSheet, View } from 'react-native';
7
+ import { ActivityIndicator } from 'react-native-paper';
8
+
9
+ interface LoaderProps {
10
+ color?: string;
11
+ }
12
+
13
+ export const Loader: React.FC<LoaderProps> = ({ color }) => {
14
+ return (
15
+ <View style={styles.root}>
16
+ <ActivityIndicator size="large" color={color} />
17
+ </View>
18
+ );
19
+ };
20
+
21
+ const styles = StyleSheet.create({
22
+ root: {
23
+ position: 'absolute',
24
+ top: 0,
25
+ left: 0,
26
+ right: 0,
27
+ bottom: 0,
28
+ justifyContent: 'center',
29
+ alignItems: 'center',
30
+ zIndex: 999,
31
+ backgroundColor: 'rgba(255,255,255,0.4)', // optional semi-transparent backdrop
32
+ },
33
+ });
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Sun 08 Jun 2025 at 03:23 PM
4
+ */
5
+ import React from 'react';
6
+ import {
7
+ Image,
8
+ View,
9
+ type StyleProp,
10
+ type ImageStyle,
11
+ type ViewStyle,
12
+ } from 'react-native';
13
+ import { moderateScale } from 'react-native-size-matters';
14
+
15
+ interface ILogoProps {
16
+ width?: number;
17
+ height?: number;
18
+ resizeMode?: 'contain' | 'cover' | 'stretch';
19
+ logoUri: string;
20
+ imageStyle?: StyleProp<ImageStyle>;
21
+ containerStyle?: StyleProp<ViewStyle>;
22
+ aspectRatio?: number;
23
+ fallbackUri?: string;
24
+ }
25
+
26
+ export const Logo: React.FC<ILogoProps> = ({
27
+ width = 200,
28
+ height = 50,
29
+ resizeMode = 'contain',
30
+ logoUri,
31
+ imageStyle,
32
+ containerStyle,
33
+ aspectRatio,
34
+ fallbackUri,
35
+ }) => {
36
+ const finalSource = logoUri?.startsWith('http')
37
+ ? { uri: logoUri }
38
+ : fallbackUri
39
+ ? { uri: fallbackUri }
40
+ : undefined;
41
+
42
+ return (
43
+ <View style={containerStyle}>
44
+ {finalSource && (
45
+ <Image
46
+ source={finalSource}
47
+ resizeMode={resizeMode}
48
+ style={[
49
+ {
50
+ width: moderateScale(width),
51
+ height: moderateScale(height),
52
+ ...(aspectRatio ? { aspectRatio } : {}),
53
+ },
54
+ imageStyle,
55
+ ]}
56
+ />
57
+ )}
58
+ </View>
59
+ );
60
+ };
@@ -0,0 +1,147 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Mon 09 Jun 2025 at 03:12 PM
4
+ */
5
+ import React, { FunctionComponent, memo } from 'react';
6
+ import {
7
+ Platform,
8
+ StyleSheet,
9
+ TouchableOpacity,
10
+ View,
11
+ Dimensions,
12
+ } from 'react-native';
13
+ import Carousel from 'react-native-reanimated-carousel';
14
+ import { scale, verticalScale } from 'react-native-size-matters';
15
+ import FastImage from 'react-native-fast-image';
16
+ import LinearGradient from 'react-native-linear-gradient';
17
+ import { IContentData, IGetSectionMeta } from '../../../../../types';
18
+ import { useAppTheme } from '../../../../../theme/useAppTheme';
19
+ import { AppTheme } from '../../../../../theme/themes';
20
+
21
+ export interface IProps {
22
+ theme?: AppTheme; // theme optional now, hook use करेंगे
23
+ data: {
24
+ data: IContentData[];
25
+ meta: IGetSectionMeta;
26
+ };
27
+ index: number;
28
+ }
29
+
30
+ const Display = {
31
+ fullWidth: Dimensions.get('window').width,
32
+ fullHeight: Dimensions.get('window').height,
33
+ };
34
+
35
+ const SliderOne: FunctionComponent<IProps> = ({
36
+ index,
37
+ data,
38
+ theme,
39
+ }): React.ReactElement => {
40
+ const ContentData = data?.data;
41
+ const [activeIndex, setActiveIndex] = React.useState<number>(0);
42
+
43
+ const { colors, isDarkMode } = useAppTheme(theme);
44
+
45
+ const LENGTH = ContentData.length || 0;
46
+
47
+ const gradientColors = isDarkMode
48
+ ? [colors.primaryContainer, colors.primary]
49
+ : [colors.primary, colors.secondary];
50
+
51
+ return (
52
+ <>
53
+ {ContentData && ContentData.length > 0 && (
54
+ <Carousel
55
+ width={Display.fullWidth}
56
+ height={verticalScale(180)}
57
+ autoPlay
58
+ data={ContentData}
59
+ scrollAnimationDuration={1000}
60
+ autoPlayInterval={1000}
61
+ mode="parallax"
62
+ modeConfig={{
63
+ parallaxScrollingOffset: 48,
64
+ parallaxScrollingScale: 0.9,
65
+ }}
66
+ onSnapToItem={(i) => setActiveIndex(i)}
67
+ renderItem={({ item }) => (
68
+ <View style={[styles.sliderContainer]}>
69
+ <TouchableOpacity activeOpacity={0.8}>
70
+ <FastImage
71
+ source={{
72
+ uri: item.thumbnail,
73
+ priority: FastImage.priority.normal,
74
+ }}
75
+ style={styles.sliderImage}
76
+ />
77
+ </TouchableOpacity>
78
+ </View>
79
+ )}
80
+ />
81
+ )}
82
+
83
+ {index === 0 && (
84
+ <View style={styles.indicatorContainer}>
85
+ <View style={styles.indicator}>
86
+ {new Array(LENGTH).fill(0).map((_, i) => {
87
+ return i === activeIndex ? (
88
+ <LinearGradient
89
+ start={{ x: 0, y: 0 }}
90
+ end={{ x: 1, y: 0 }}
91
+ colors={gradientColors}
92
+ key={i}
93
+ style={{
94
+ width: scale(18),
95
+ height: scale(8),
96
+ borderRadius: scale(50),
97
+ }}
98
+ />
99
+ ) : (
100
+ <View
101
+ key={i}
102
+ style={{
103
+ width: scale(8),
104
+ height: scale(8),
105
+ backgroundColor: colors.onSurface,
106
+ borderRadius: scale(50),
107
+ }}
108
+ />
109
+ );
110
+ })}
111
+ </View>
112
+ </View>
113
+ )}
114
+ </>
115
+ );
116
+ };
117
+
118
+ export default memo(SliderOne);
119
+
120
+ const styles = StyleSheet.create({
121
+ sliderContainer: {
122
+ flex: 1,
123
+ justifyContent: 'center',
124
+ borderRadius: scale(10),
125
+ overflow: 'hidden',
126
+ marginTop: Platform.OS === 'ios' ? verticalScale(-30) : verticalScale(-15),
127
+ },
128
+ sliderImage: {
129
+ width: '100%',
130
+ height: undefined,
131
+ borderRadius: scale(10),
132
+ aspectRatio: 16 / 9,
133
+ },
134
+ indicatorContainer: {
135
+ bottom: 0,
136
+ flex: 1,
137
+ alignItems: 'center',
138
+ justifyContent: 'center',
139
+ width: '100%',
140
+ },
141
+ indicator: {
142
+ flexDirection: 'row',
143
+ alignItems: 'center',
144
+ marginTop: Platform.OS === 'ios' ? verticalScale(-25) : verticalScale(-7),
145
+ gap: scale(5),
146
+ },
147
+ });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Mon 09 Jun 2025 at 03:12 PM
4
+ */
5
+ import SliderOne from './Styles/One';
6
+
7
+ const Sliders = {
8
+ Styles: {
9
+ One: SliderOne,
10
+ },
11
+ };
12
+
13
+ export default Sliders;