@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.
- package/LICENSE +20 -0
- package/README.md +32 -0
- package/lib/module/assets/animations/135037-payment-processing-error.json +1 -0
- package/lib/module/assets/animations/7227-vui-animation.json +1 -0
- package/lib/module/assets/animations/succesfull-payment.json +1 -0
- package/lib/module/assets/animations/voice-icon.json +1 -0
- package/lib/module/assets/img/back.png +0 -0
- package/lib/module/assets/img/bottom-panel.png +0 -0
- package/lib/module/assets/img/camera.png +0 -0
- package/lib/module/assets/img/camera2.png +0 -0
- package/lib/module/assets/img/h.svg +4 -0
- package/lib/module/assets/img/home.png +0 -0
- package/lib/module/assets/img/lock.png +0 -0
- package/lib/module/assets/img/play.png +0 -0
- package/lib/module/assets/img/profile.png +0 -0
- package/lib/module/assets/img/qr-code.png +0 -0
- package/lib/module/assets/img/shadow.png +0 -0
- package/lib/module/assets/img/shadow2.png +0 -0
- package/lib/module/assets/img/user.png +0 -0
- package/lib/module/assets/svg/content-error.svg +28 -0
- package/lib/module/assets/svg/download.svg +3 -0
- package/lib/module/assets/svg/favorites.svg +3 -0
- package/lib/module/assets/svg/home.svg +5 -0
- package/lib/module/assets/svg/menu-bar.svg +4 -0
- package/lib/module/assets/svg/my-space.svg +14 -0
- package/lib/module/assets/svg/play-icon-with-bg.svg +5 -0
- package/lib/module/assets/svg/search.svg +5 -0
- package/lib/module/assets/svg/server-error.svg +139 -0
- package/lib/module/components/Button/Button.js +22 -0
- package/lib/module/components/Button/Button.js.map +1 -0
- package/lib/module/components/Button/styles.js +23 -0
- package/lib/module/components/Button/styles.js.map +1 -0
- package/lib/module/components/Headers/One.js +101 -0
- package/lib/module/components/Headers/One.js.map +1 -0
- package/lib/module/components/Headers/Three.js +62 -0
- package/lib/module/components/Headers/Three.js.map +1 -0
- package/lib/module/components/Headers/Two.js +77 -0
- package/lib/module/components/Headers/Two.js.map +1 -0
- package/lib/module/components/Headers/index.js +17 -0
- package/lib/module/components/Headers/index.js.map +1 -0
- package/lib/module/components/Icons/AlertIcon.js +33 -0
- package/lib/module/components/Icons/AlertIcon.js.map +1 -0
- package/lib/module/components/Icons/DeviceIcon.js +25 -0
- package/lib/module/components/Icons/DeviceIcon.js.map +1 -0
- package/lib/module/components/Icons/DoneIcon/DoneIcon.js +23 -0
- package/lib/module/components/Icons/DoneIcon/DoneIcon.js.map +1 -0
- package/lib/module/components/Icons/ForgotPasswordMessageIcon.js +65 -0
- package/lib/module/components/Icons/ForgotPasswordMessageIcon.js.map +1 -0
- package/lib/module/components/Icons/ForgotPasswordMessageIconTwo.js +56 -0
- package/lib/module/components/Icons/ForgotPasswordMessageIconTwo.js.map +1 -0
- package/lib/module/components/Icons/NewIndex.js +24 -0
- package/lib/module/components/Icons/NewIndex.js.map +1 -0
- package/lib/module/components/Icons/ResendOTP.js +21 -0
- package/lib/module/components/Icons/ResendOTP.js.map +1 -0
- package/lib/module/components/Loader/Loader.js +35 -0
- package/lib/module/components/Loader/Loader.js.map +1 -0
- package/lib/module/components/Logo/Logo.js +41 -0
- package/lib/module/components/Logo/Logo.js.map +1 -0
- package/lib/module/components/Section/Card/Sliders/Styles/One.js +123 -0
- package/lib/module/components/Section/Card/Sliders/Styles/One.js.map +1 -0
- package/lib/module/components/Section/Card/Sliders/index.js +14 -0
- package/lib/module/components/Section/Card/Sliders/index.js.map +1 -0
- package/lib/module/components/Section/Card/Styles/One.js +92 -0
- package/lib/module/components/Section/Card/Styles/One.js.map +1 -0
- package/lib/module/components/Section/Card/index.js +14 -0
- package/lib/module/components/Section/Card/index.js.map +1 -0
- package/lib/module/components/Section/SectionType.js +98 -0
- package/lib/module/components/Section/SectionType.js.map +1 -0
- package/lib/module/components/Section/Sections.js +72 -0
- package/lib/module/components/Section/Sections.js.map +1 -0
- package/lib/module/components/index.js +13 -0
- package/lib/module/components/index.js.map +1 -0
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/sample.test.js +8 -0
- package/lib/module/sample.test.js.map +1 -0
- package/lib/module/theme/themes.js +118 -0
- package/lib/module/theme/themes.js.map +1 -0
- package/lib/module/theme/useAppTheme.js +14 -0
- package/lib/module/theme/useAppTheme.js.map +1 -0
- package/lib/module/types/content.types.js +2 -0
- package/lib/module/types/content.types.js.map +1 -0
- package/lib/module/types/index.js +5 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/types/sections.types.js +4 -0
- package/lib/module/types/sections.types.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/components/Button/Button.d.ts +9 -0
- package/lib/typescript/src/components/Button/Button.d.ts.map +1 -0
- package/lib/typescript/src/components/Button/styles.d.ts +20 -0
- package/lib/typescript/src/components/Button/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Headers/One.d.ts +25 -0
- package/lib/typescript/src/components/Headers/One.d.ts.map +1 -0
- package/lib/typescript/src/components/Headers/Three.d.ts +14 -0
- package/lib/typescript/src/components/Headers/Three.d.ts.map +1 -0
- package/lib/typescript/src/components/Headers/Two.d.ts +19 -0
- package/lib/typescript/src/components/Headers/Two.d.ts.map +1 -0
- package/lib/typescript/src/components/Headers/index.d.ts +11 -0
- package/lib/typescript/src/components/Headers/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Icons/AlertIcon.d.ts +7 -0
- package/lib/typescript/src/components/Icons/AlertIcon.d.ts.map +1 -0
- package/lib/typescript/src/components/Icons/DeviceIcon.d.ts +7 -0
- package/lib/typescript/src/components/Icons/DeviceIcon.d.ts.map +1 -0
- package/lib/typescript/src/components/Icons/DoneIcon/DoneIcon.d.ts +6 -0
- package/lib/typescript/src/components/Icons/DoneIcon/DoneIcon.d.ts.map +1 -0
- package/lib/typescript/src/components/Icons/ForgotPasswordMessageIcon.d.ts +3 -0
- package/lib/typescript/src/components/Icons/ForgotPasswordMessageIcon.d.ts.map +1 -0
- package/lib/typescript/src/components/Icons/ForgotPasswordMessageIconTwo.d.ts +3 -0
- package/lib/typescript/src/components/Icons/ForgotPasswordMessageIconTwo.d.ts.map +1 -0
- package/lib/typescript/src/components/Icons/NewIndex.d.ts +13 -0
- package/lib/typescript/src/components/Icons/NewIndex.d.ts.map +1 -0
- package/lib/typescript/src/components/Icons/ResendOTP.d.ts +7 -0
- package/lib/typescript/src/components/Icons/ResendOTP.d.ts.map +1 -0
- package/lib/typescript/src/components/Loader/Loader.d.ts +11 -0
- package/lib/typescript/src/components/Loader/Loader.d.ts.map +1 -0
- package/lib/typescript/src/components/Logo/Logo.d.ts +19 -0
- package/lib/typescript/src/components/Logo/Logo.d.ts.map +1 -0
- package/lib/typescript/src/components/Section/Card/Sliders/Styles/One.d.ts +18 -0
- package/lib/typescript/src/components/Section/Card/Sliders/Styles/One.d.ts.map +1 -0
- package/lib/typescript/src/components/Section/Card/Sliders/index.d.ts +7 -0
- package/lib/typescript/src/components/Section/Card/Sliders/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Section/Card/Styles/One.d.ts +19 -0
- package/lib/typescript/src/components/Section/Card/Styles/One.d.ts.map +1 -0
- package/lib/typescript/src/components/Section/Card/index.d.ts +7 -0
- package/lib/typescript/src/components/Section/Card/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Section/SectionType.d.ts +26 -0
- package/lib/typescript/src/components/Section/SectionType.d.ts.map +1 -0
- package/lib/typescript/src/components/Section/Sections.d.ts +27 -0
- package/lib/typescript/src/components/Section/Sections.d.ts.map +1 -0
- package/lib/typescript/src/components/index.d.ts +10 -0
- package/lib/typescript/src/components/index.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/sample.test.d.ts +1 -0
- package/lib/typescript/src/sample.test.d.ts.map +1 -0
- package/lib/typescript/src/theme/themes.d.ts +57 -0
- package/lib/typescript/src/theme/themes.d.ts.map +1 -0
- package/lib/typescript/src/theme/useAppTheme.d.ts +46 -0
- package/lib/typescript/src/theme/useAppTheme.d.ts.map +1 -0
- package/lib/typescript/src/types/content.types.d.ts +154 -0
- package/lib/typescript/src/types/content.types.d.ts.map +1 -0
- package/lib/typescript/src/types/index.d.ts +3 -0
- package/lib/typescript/src/types/index.d.ts.map +1 -0
- package/lib/typescript/src/types/sections.types.d.ts +41 -0
- package/lib/typescript/src/types/sections.types.d.ts.map +1 -0
- package/package.json +168 -0
- package/src/assets/animations/135037-payment-processing-error.json +1 -0
- package/src/assets/animations/7227-vui-animation.json +1 -0
- package/src/assets/animations/succesfull-payment.json +1 -0
- package/src/assets/animations/voice-icon.json +1 -0
- 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/h.svg +4 -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.png +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/content-error.svg +28 -0
- package/src/assets/svg/download.svg +3 -0
- package/src/assets/svg/favorites.svg +3 -0
- package/src/assets/svg/home.svg +5 -0
- package/src/assets/svg/menu-bar.svg +4 -0
- package/src/assets/svg/my-space.svg +14 -0
- package/src/assets/svg/play-icon-with-bg.svg +5 -0
- package/src/assets/svg/search.svg +5 -0
- package/src/assets/svg/server-error.svg +139 -0
- package/src/components/Button/Button.tsx +32 -0
- package/src/components/Button/styles.ts +21 -0
- package/src/components/Headers/One.tsx +100 -0
- package/src/components/Headers/Three.tsx +63 -0
- package/src/components/Headers/Two.tsx +75 -0
- package/src/components/Headers/index.ts +16 -0
- package/src/components/Icons/AlertIcon.tsx +29 -0
- package/src/components/Icons/DeviceIcon.tsx +24 -0
- package/src/components/Icons/DoneIcon/DoneIcon.tsx +17 -0
- package/src/components/Icons/ForgotPasswordMessageIcon.tsx +55 -0
- package/src/components/Icons/ForgotPasswordMessageIconTwo.tsx +46 -0
- package/src/components/Icons/NewIndex.ts +23 -0
- package/src/components/Icons/ResendOTP.tsx +23 -0
- package/src/components/Loader/Loader.tsx +33 -0
- package/src/components/Logo/Logo.tsx +60 -0
- package/src/components/Section/Card/Sliders/Styles/One.tsx +147 -0
- package/src/components/Section/Card/Sliders/index.ts +13 -0
- package/src/components/Section/Card/Styles/One.tsx +112 -0
- package/src/components/Section/Card/index.ts +13 -0
- package/src/components/Section/SectionType.tsx +127 -0
- package/src/components/Section/Sections.tsx +120 -0
- package/src/components/index.ts +10 -0
- package/src/index.ts +6 -0
- package/src/sample.test.ts +5 -0
- package/src/theme/themes.ts +198 -0
- package/src/theme/useAppTheme.ts +13 -0
- package/src/types/content.types.ts +167 -0
- package/src/types/index.ts +2 -0
- 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
|
+
});
|