app-expo-cli 1.1.1 → 1.1.2
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/.github/workflows/npm-publish.yml +31 -0
- package/README.md +11 -1
- package/package.json +1 -1
- package/template/src/lib/DateTimePicker/DateTimePicker.tsx +0 -63
- package/template/src/lib/Empty/EmptyCard.tsx +0 -67
- package/template/src/lib/Error/GlobalErrorBoundary.tsx +0 -111
- package/template/src/lib/animate/AniImage.tsx +0 -32
- package/template/src/lib/backHeader/BackButton.tsx +0 -62
- package/template/src/lib/backHeader/BackWithCoponent.tsx +0 -112
- package/template/src/lib/backHeader/BackWithHeader.tsx +0 -46
- package/template/src/lib/backHeader/BackWithTitle.tsx +0 -53
- package/template/src/lib/buttons/IButton.tsx +0 -69
- package/template/src/lib/buttons/IwtButton.tsx +0 -199
- package/template/src/lib/buttons/Or.tsx +0 -27
- package/template/src/lib/buttons/SimpleButton.tsx +0 -45
- package/template/src/lib/buttons/TButton.tsx +0 -70
- package/template/src/lib/cards/Card.tsx +0 -175
- package/template/src/lib/cards/OptionSelect.tsx +0 -44
- package/template/src/lib/cards/SearchCard.tsx +0 -35
- package/template/src/lib/editor/TextEditor.tsx +0 -81
- package/template/src/lib/expend/ExpendComponent.tsx +0 -36
- package/template/src/lib/imageViewer/ImageViwer.tsx +0 -332
- package/template/src/lib/imageZoomer/ImageZoomer.tsx +0 -104
- package/template/src/lib/inputs/CheckBox.tsx +0 -86
- package/template/src/lib/inputs/InputText.tsx +0 -232
- package/template/src/lib/loader/GLoading.tsx +0 -26
- package/template/src/lib/loading/MLoading.tsx +0 -14
- package/template/src/lib/loading/SLoading.tsx +0 -14
- package/template/src/lib/modals/ActionModal.tsx +0 -97
- package/template/src/lib/modals/BottomModal.tsx +0 -224
- package/template/src/lib/modals/ConfrimationModal.tsx +0 -116
- package/template/src/lib/modals/DateModal.tsx +0 -152
- package/template/src/lib/modals/NormalModal.tsx +0 -73
- package/template/src/lib/modals/SideModal.tsx +0 -57
- package/template/src/lib/modals/Toaster.tsx +0 -256
- package/template/src/lib/payment/PaymentCardForD.tsx +0 -47
- package/template/src/lib/progressBar/ProgressBar.tsx +0 -64
- package/template/src/lib/tailwind.js +0 -9
- package/template/src/lib/ui/Avatar.tsx +0 -55
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import { ActivityIndicator, Text, TouchableOpacity, View } from "react-native";
|
|
2
|
-
import { SvgProps, SvgXml } from "react-native-svg";
|
|
3
|
-
|
|
4
|
-
import { LinearGradient } from "expo-linear-gradient";
|
|
5
|
-
import React from "react";
|
|
6
|
-
import tw from "../tailwind";
|
|
7
|
-
|
|
8
|
-
interface IButton {
|
|
9
|
-
containerStyle?: {};
|
|
10
|
-
titleStyle?: {};
|
|
11
|
-
icon?: React.ReactNode;
|
|
12
|
-
svg?: string;
|
|
13
|
-
svg2?: string;
|
|
14
|
-
title?: string;
|
|
15
|
-
firstSvgTitleTogether?: boolean;
|
|
16
|
-
onPress?: () => void;
|
|
17
|
-
isLoading?: boolean;
|
|
18
|
-
loadingColor?: string;
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
svgProps?: SvgProps;
|
|
21
|
-
svg2Props?: SvgProps;
|
|
22
|
-
offGradient?: boolean;
|
|
23
|
-
gradinLayoutStyle?: {};
|
|
24
|
-
svgTogether?: boolean;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const IwtButton = ({
|
|
28
|
-
containerStyle,
|
|
29
|
-
icon,
|
|
30
|
-
svg,
|
|
31
|
-
title,
|
|
32
|
-
titleStyle,
|
|
33
|
-
onPress,
|
|
34
|
-
disabled,
|
|
35
|
-
isLoading,
|
|
36
|
-
loadingColor,
|
|
37
|
-
svg2,
|
|
38
|
-
firstSvgTitleTogether,
|
|
39
|
-
svgProps,
|
|
40
|
-
svg2Props,
|
|
41
|
-
offGradient,
|
|
42
|
-
gradinLayoutStyle,
|
|
43
|
-
svgTogether,
|
|
44
|
-
}: IButton) => {
|
|
45
|
-
return (
|
|
46
|
-
<TouchableOpacity
|
|
47
|
-
onPress={onPress}
|
|
48
|
-
disabled={isLoading || disabled}
|
|
49
|
-
activeOpacity={0.5}
|
|
50
|
-
style={[
|
|
51
|
-
tw` h-14 gap-3 rounded-full overflow-hidden ${
|
|
52
|
-
disabled ? "opacity-60" : "opacity-100"
|
|
53
|
-
}`,
|
|
54
|
-
containerStyle,
|
|
55
|
-
]}
|
|
56
|
-
>
|
|
57
|
-
<LinearGradient
|
|
58
|
-
// Background Linear Gradient
|
|
59
|
-
colors={
|
|
60
|
-
offGradient ? ["transparent", "transparent"] : ["#FF8787", "#8578B4"]
|
|
61
|
-
}
|
|
62
|
-
style={[
|
|
63
|
-
tw`w-full h-full flex-row justify-center items-center gap-3 `,
|
|
64
|
-
gradinLayoutStyle,
|
|
65
|
-
]}
|
|
66
|
-
>
|
|
67
|
-
{firstSvgTitleTogether ? (
|
|
68
|
-
<View style={tw`flex-row justify-center items-center gap-2`}>
|
|
69
|
-
{isLoading ? (
|
|
70
|
-
<ActivityIndicator
|
|
71
|
-
color={loadingColor ? loadingColor : "white"}
|
|
72
|
-
/>
|
|
73
|
-
) : (
|
|
74
|
-
<>
|
|
75
|
-
{icon ? (
|
|
76
|
-
icon
|
|
77
|
-
) : svg ? (
|
|
78
|
-
<SvgXml
|
|
79
|
-
xml={
|
|
80
|
-
svg
|
|
81
|
-
? svg
|
|
82
|
-
: `<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
83
|
-
<path d="M15.3337 1.54972e-05L0.666992 0V19.3333C0.666992 19.5896 0.813889 19.8232 1.04487 19.9342C1.27584 20.0452 1.55001 20.014 1.75012 19.8539L8.00033 14.8538L14.2505 19.8539C14.4506 20.014 14.7248 20.0452 14.9558 19.9342C15.1868 19.8232 15.3337 19.5896 15.3337 19.3333V1.54972e-05Z" fill="white"/>
|
|
84
|
-
</svg>
|
|
85
|
-
`
|
|
86
|
-
}
|
|
87
|
-
{...svgProps}
|
|
88
|
-
/>
|
|
89
|
-
) : null}
|
|
90
|
-
{svgTogether && (
|
|
91
|
-
<>
|
|
92
|
-
{svg2 && (
|
|
93
|
-
<SvgXml
|
|
94
|
-
xml={
|
|
95
|
-
svg2
|
|
96
|
-
? svg2
|
|
97
|
-
: `<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
98
|
-
<path d="M15.3337 1.54972e-05L0.666992 0V19.3333C0.666992 19.5896 0.813889 19.8232 1.04487 19.9342C1.27584 20.0452 1.55001 20.014 1.75012 19.8539L8.00033 14.8538L14.2505 19.8539C14.4506 20.014 14.7248 20.0452 14.9558 19.9342C15.1868 19.8232 15.3337 19.5896 15.3337 19.3333V1.54972e-05Z" fill="white"/>
|
|
99
|
-
</svg>
|
|
100
|
-
`
|
|
101
|
-
}
|
|
102
|
-
{...svgProps}
|
|
103
|
-
{...svg2Props}
|
|
104
|
-
/>
|
|
105
|
-
)}
|
|
106
|
-
</>
|
|
107
|
-
)}
|
|
108
|
-
</>
|
|
109
|
-
)}
|
|
110
|
-
|
|
111
|
-
{title && (
|
|
112
|
-
<Text
|
|
113
|
-
style={[
|
|
114
|
-
tw`text-white font-InterSemiBold text-base `,
|
|
115
|
-
titleStyle,
|
|
116
|
-
]}
|
|
117
|
-
>
|
|
118
|
-
{title}
|
|
119
|
-
</Text>
|
|
120
|
-
)}
|
|
121
|
-
</View>
|
|
122
|
-
) : (
|
|
123
|
-
<>
|
|
124
|
-
{isLoading ? (
|
|
125
|
-
<ActivityIndicator
|
|
126
|
-
color={loadingColor ? loadingColor : "white"}
|
|
127
|
-
/>
|
|
128
|
-
) : (
|
|
129
|
-
<>
|
|
130
|
-
{icon ? (
|
|
131
|
-
icon
|
|
132
|
-
) : svg ? (
|
|
133
|
-
<SvgXml
|
|
134
|
-
xml={
|
|
135
|
-
svg
|
|
136
|
-
? svg
|
|
137
|
-
: `<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
138
|
-
<path d="M15.3337 1.54972e-05L0.666992 0V19.3333C0.666992 19.5896 0.813889 19.8232 1.04487 19.9342C1.27584 20.0452 1.55001 20.014 1.75012 19.8539L8.00033 14.8538L14.2505 19.8539C14.4506 20.014 14.7248 20.0452 14.9558 19.9342C15.1868 19.8232 15.3337 19.5896 15.3337 19.3333V1.54972e-05Z" fill="white"/>
|
|
139
|
-
</svg>
|
|
140
|
-
`
|
|
141
|
-
}
|
|
142
|
-
{...svgProps}
|
|
143
|
-
/>
|
|
144
|
-
) : null}
|
|
145
|
-
{svgTogether && (
|
|
146
|
-
<>
|
|
147
|
-
{svg2 && (
|
|
148
|
-
<SvgXml
|
|
149
|
-
xml={
|
|
150
|
-
svg2
|
|
151
|
-
? svg2
|
|
152
|
-
: `<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
153
|
-
<path d="M15.3337 1.54972e-05L0.666992 0V19.3333C0.666992 19.5896 0.813889 19.8232 1.04487 19.9342C1.27584 20.0452 1.55001 20.014 1.75012 19.8539L8.00033 14.8538L14.2505 19.8539C14.4506 20.014 14.7248 20.0452 14.9558 19.9342C15.1868 19.8232 15.3337 19.5896 15.3337 19.3333V1.54972e-05Z" fill="white"/>
|
|
154
|
-
</svg>
|
|
155
|
-
`
|
|
156
|
-
}
|
|
157
|
-
{...svgProps}
|
|
158
|
-
{...svg2Props}
|
|
159
|
-
/>
|
|
160
|
-
)}
|
|
161
|
-
</>
|
|
162
|
-
)}
|
|
163
|
-
</>
|
|
164
|
-
)}
|
|
165
|
-
|
|
166
|
-
{title && (
|
|
167
|
-
<Text
|
|
168
|
-
style={[
|
|
169
|
-
tw`text-white font-InterSemiBold text-base `,
|
|
170
|
-
titleStyle,
|
|
171
|
-
]}
|
|
172
|
-
>
|
|
173
|
-
{title}
|
|
174
|
-
</Text>
|
|
175
|
-
)}
|
|
176
|
-
</>
|
|
177
|
-
)}
|
|
178
|
-
<>
|
|
179
|
-
{svg2 && !svgTogether && (
|
|
180
|
-
<SvgXml
|
|
181
|
-
xml={
|
|
182
|
-
svg2
|
|
183
|
-
? svg2
|
|
184
|
-
: `<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
185
|
-
<path d="M15.3337 1.54972e-05L0.666992 0V19.3333C0.666992 19.5896 0.813889 19.8232 1.04487 19.9342C1.27584 20.0452 1.55001 20.014 1.75012 19.8539L8.00033 14.8538L14.2505 19.8539C14.4506 20.014 14.7248 20.0452 14.9558 19.9342C15.1868 19.8232 15.3337 19.5896 15.3337 19.3333V1.54972e-05Z" fill="white"/>
|
|
186
|
-
</svg>
|
|
187
|
-
`
|
|
188
|
-
}
|
|
189
|
-
{...svgProps}
|
|
190
|
-
{...svg2Props}
|
|
191
|
-
/>
|
|
192
|
-
)}
|
|
193
|
-
</>
|
|
194
|
-
</LinearGradient>
|
|
195
|
-
</TouchableOpacity>
|
|
196
|
-
);
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
export default IwtButton;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Text, View } from "react-native";
|
|
2
|
-
|
|
3
|
-
import React from "react";
|
|
4
|
-
import tw from "../tailwind";
|
|
5
|
-
|
|
6
|
-
interface IOR {
|
|
7
|
-
containerStyle?: {};
|
|
8
|
-
title?: string;
|
|
9
|
-
titleStyle?: {};
|
|
10
|
-
lineStyle?: {};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const Or = ({ containerStyle, title, titleStyle, lineStyle }: IOR) => {
|
|
14
|
-
return (
|
|
15
|
-
<View
|
|
16
|
-
style={[tw`items-center gap-3 justify-center flex-row `, containerStyle]}
|
|
17
|
-
>
|
|
18
|
-
<View style={[tw`border-[.2px] flex-1 border-[#888888]`, lineStyle]} />
|
|
19
|
-
<Text style={[tw`text-xs font-InterRegular text-gray-300`, titleStyle]}>
|
|
20
|
-
{title || "Or"}
|
|
21
|
-
</Text>
|
|
22
|
-
<View style={[tw`border-[.2px] flex-1 border-[#888888]`, lineStyle]} />
|
|
23
|
-
</View>
|
|
24
|
-
);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export default Or;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Text, TouchableOpacity } from "react-native";
|
|
2
|
-
|
|
3
|
-
import React from "react";
|
|
4
|
-
import { SvgXml } from "react-native-svg";
|
|
5
|
-
import tw from "../tailwind";
|
|
6
|
-
|
|
7
|
-
interface SimpleButtonProps {
|
|
8
|
-
onPress?: () => void;
|
|
9
|
-
svgIcon?: any;
|
|
10
|
-
svgHeight?: number;
|
|
11
|
-
svgWidth?: number;
|
|
12
|
-
title?: string;
|
|
13
|
-
titleStyle?: any;
|
|
14
|
-
containerStyle?: any;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const SimpleButton = ({
|
|
18
|
-
containerStyle,
|
|
19
|
-
onPress,
|
|
20
|
-
svgIcon,
|
|
21
|
-
title,
|
|
22
|
-
titleStyle,
|
|
23
|
-
svgHeight = 16,
|
|
24
|
-
svgWidth = 16,
|
|
25
|
-
}: SimpleButtonProps) => {
|
|
26
|
-
return (
|
|
27
|
-
<TouchableOpacity
|
|
28
|
-
onPress={onPress}
|
|
29
|
-
activeOpacity={0.5}
|
|
30
|
-
style={[
|
|
31
|
-
tw`border-2 border-[#E8E8EA] px-3 py-1 flex-row items-center rounded-full`,
|
|
32
|
-
containerStyle,
|
|
33
|
-
]}
|
|
34
|
-
>
|
|
35
|
-
{title && (
|
|
36
|
-
<Text style={[tw`text-primary font-RobotoBold text-xs`, titleStyle]}>
|
|
37
|
-
{title}
|
|
38
|
-
</Text>
|
|
39
|
-
)}
|
|
40
|
-
{svgIcon && <SvgXml height={svgHeight} width={svgWidth} xml={svgIcon} />}
|
|
41
|
-
</TouchableOpacity>
|
|
42
|
-
);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export default SimpleButton;
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { ActivityIndicator, Text, TouchableOpacity } from "react-native";
|
|
2
|
-
|
|
3
|
-
import { LinearGradient } from "expo-linear-gradient";
|
|
4
|
-
import React from "react";
|
|
5
|
-
import tw from "../tailwind";
|
|
6
|
-
|
|
7
|
-
interface IButton {
|
|
8
|
-
containerStyle?: {};
|
|
9
|
-
titleStyle?: {};
|
|
10
|
-
title?: string;
|
|
11
|
-
isLoading?: boolean;
|
|
12
|
-
onPress?: () => void;
|
|
13
|
-
loadingColor?: string;
|
|
14
|
-
disabled?: boolean;
|
|
15
|
-
offGradient?: boolean;
|
|
16
|
-
gradinLayoutStyle?: {};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const TButton = ({
|
|
20
|
-
containerStyle,
|
|
21
|
-
title,
|
|
22
|
-
titleStyle,
|
|
23
|
-
isLoading,
|
|
24
|
-
onPress,
|
|
25
|
-
loadingColor,
|
|
26
|
-
disabled,
|
|
27
|
-
offGradient,
|
|
28
|
-
gradinLayoutStyle,
|
|
29
|
-
}: IButton) => {
|
|
30
|
-
return (
|
|
31
|
-
<TouchableOpacity
|
|
32
|
-
onPress={onPress}
|
|
33
|
-
disabled={isLoading || disabled}
|
|
34
|
-
// activeOpacity={0.5}
|
|
35
|
-
style={[
|
|
36
|
-
tw` h-14 flex-row justify-center items-center gap-3 rounded-full ${
|
|
37
|
-
disabled ? "opacity-60" : "opacity-100"
|
|
38
|
-
}`,
|
|
39
|
-
containerStyle,
|
|
40
|
-
]}
|
|
41
|
-
>
|
|
42
|
-
<LinearGradient
|
|
43
|
-
// Background Linear Gradient
|
|
44
|
-
colors={
|
|
45
|
-
offGradient ? ["transparent", "transparent"] : ["#FF8787", "#8578B4"]
|
|
46
|
-
}
|
|
47
|
-
style={[
|
|
48
|
-
tw`w-full h-full flex-row justify-center items-center gap-3 rounded-full`,
|
|
49
|
-
gradinLayoutStyle,
|
|
50
|
-
]}
|
|
51
|
-
>
|
|
52
|
-
{isLoading && (
|
|
53
|
-
<ActivityIndicator color={loadingColor ? loadingColor : "white"} />
|
|
54
|
-
)}
|
|
55
|
-
{title && (
|
|
56
|
-
<Text
|
|
57
|
-
style={[
|
|
58
|
-
tw`text-white font-InterSemiBold text-base text-center `,
|
|
59
|
-
titleStyle,
|
|
60
|
-
]}
|
|
61
|
-
>
|
|
62
|
-
{title}
|
|
63
|
-
</Text>
|
|
64
|
-
)}
|
|
65
|
-
</LinearGradient>
|
|
66
|
-
</TouchableOpacity>
|
|
67
|
-
);
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export default TButton;
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import { ActivityIndicator, Text, TouchableOpacity, View } from "react-native";
|
|
2
|
-
|
|
3
|
-
import { AnimatedImage } from "react-native-ui-lib";
|
|
4
|
-
import React from "react";
|
|
5
|
-
import { SvgXml } from "react-native-svg";
|
|
6
|
-
import tw from "../tailwind";
|
|
7
|
-
|
|
8
|
-
export interface ICardProps {
|
|
9
|
-
children?: React.ReactNode;
|
|
10
|
-
containerStyle?: any;
|
|
11
|
-
cardStyle?: any;
|
|
12
|
-
component?: React.ReactNode;
|
|
13
|
-
OuterComponent?: React.ReactNode;
|
|
14
|
-
onPress?: () => void;
|
|
15
|
-
|
|
16
|
-
layoutStyle?: any;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const Card = ({
|
|
20
|
-
children,
|
|
21
|
-
cardStyle,
|
|
22
|
-
component,
|
|
23
|
-
containerStyle,
|
|
24
|
-
OuterComponent,
|
|
25
|
-
layoutStyle,
|
|
26
|
-
onPress,
|
|
27
|
-
}: ICardProps) => {
|
|
28
|
-
return (
|
|
29
|
-
<View style={[tw`flex-row items-center justify-between`, layoutStyle]}>
|
|
30
|
-
<TouchableOpacity
|
|
31
|
-
activeOpacity={0.6}
|
|
32
|
-
disabled={!onPress}
|
|
33
|
-
onPress={onPress}
|
|
34
|
-
style={[
|
|
35
|
-
tw`bg-primary600 p-2 rounded-md flex-row justify-between items-center flex-1`,
|
|
36
|
-
cardStyle,
|
|
37
|
-
]}
|
|
38
|
-
>
|
|
39
|
-
<View style={[tw``, containerStyle]}>{children}</View>
|
|
40
|
-
{component && <View>{component}</View>}
|
|
41
|
-
</TouchableOpacity>
|
|
42
|
-
{OuterComponent && <View>{OuterComponent}</View>}
|
|
43
|
-
</View>
|
|
44
|
-
);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export interface ICardImageProps {
|
|
48
|
-
source: { uri: string };
|
|
49
|
-
containerStyle?: any;
|
|
50
|
-
imageStyle?: any;
|
|
51
|
-
children?: React.ReactNode;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
Card.Image = ({
|
|
55
|
-
source,
|
|
56
|
-
containerStyle,
|
|
57
|
-
imageStyle,
|
|
58
|
-
children,
|
|
59
|
-
}: ICardImageProps) => {
|
|
60
|
-
return (
|
|
61
|
-
<>
|
|
62
|
-
{children ? (
|
|
63
|
-
children
|
|
64
|
-
) : (
|
|
65
|
-
<>
|
|
66
|
-
<AnimatedImage
|
|
67
|
-
containerStyle={[
|
|
68
|
-
tw`aspect-square items-center rounded-md`,
|
|
69
|
-
containerStyle,
|
|
70
|
-
]}
|
|
71
|
-
errorSource={source}
|
|
72
|
-
// onError={e => console.log(e)}
|
|
73
|
-
animationDuration={500}
|
|
74
|
-
style={[tw`aspect-square rounded-md`, imageStyle]}
|
|
75
|
-
loader={<ActivityIndicator color="white" size={"small"} />}
|
|
76
|
-
source={
|
|
77
|
-
source?.uri
|
|
78
|
-
? source
|
|
79
|
-
: require("../../assets/images/icons/no_image.png")
|
|
80
|
-
}
|
|
81
|
-
/>
|
|
82
|
-
</>
|
|
83
|
-
)}
|
|
84
|
-
</>
|
|
85
|
-
);
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export interface ICardDetailsProps {
|
|
89
|
-
children?: React.ReactNode;
|
|
90
|
-
containerStyle?: any;
|
|
91
|
-
detailsContainerStyle?: any;
|
|
92
|
-
svgStyle?: any;
|
|
93
|
-
textStyle?: any;
|
|
94
|
-
data?: Array<{
|
|
95
|
-
title?: string;
|
|
96
|
-
icons?: React.ReactNode;
|
|
97
|
-
titleStyle?: any;
|
|
98
|
-
}>;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
Card.Details = ({
|
|
102
|
-
children,
|
|
103
|
-
data,
|
|
104
|
-
containerStyle,
|
|
105
|
-
detailsContainerStyle,
|
|
106
|
-
svgStyle,
|
|
107
|
-
textStyle,
|
|
108
|
-
}: ICardDetailsProps) => {
|
|
109
|
-
return (
|
|
110
|
-
<>
|
|
111
|
-
{children ? (
|
|
112
|
-
children
|
|
113
|
-
) : (
|
|
114
|
-
<View style={[tw`justify-start gap-1 `, containerStyle]}>
|
|
115
|
-
{data?.map((item, index) => {
|
|
116
|
-
return (
|
|
117
|
-
<View
|
|
118
|
-
key={index}
|
|
119
|
-
style={[
|
|
120
|
-
tw`flex-row items-center gap-1.5`,
|
|
121
|
-
detailsContainerStyle,
|
|
122
|
-
]}
|
|
123
|
-
>
|
|
124
|
-
{item?.icons && <SvgXml xml={item.icons} {...svgStyle} />}
|
|
125
|
-
{item?.title && (
|
|
126
|
-
<Text
|
|
127
|
-
numberOfLines={1}
|
|
128
|
-
style={[
|
|
129
|
-
tw`text-white font-DegularDisplayRegular text-sm `,
|
|
130
|
-
item.titleStyle,
|
|
131
|
-
]}
|
|
132
|
-
>
|
|
133
|
-
{item.title}
|
|
134
|
-
</Text>
|
|
135
|
-
)}
|
|
136
|
-
</View>
|
|
137
|
-
);
|
|
138
|
-
})}
|
|
139
|
-
</View>
|
|
140
|
-
)}
|
|
141
|
-
</>
|
|
142
|
-
);
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
interface CardButtonProps {
|
|
146
|
-
total: number;
|
|
147
|
-
checkedIn: number;
|
|
148
|
-
onPress?: () => void;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
Card.Button = ({ checkedIn, total, onPress }: CardButtonProps) => {
|
|
152
|
-
return (
|
|
153
|
-
<>
|
|
154
|
-
<TouchableOpacity
|
|
155
|
-
activeOpacity={0.6}
|
|
156
|
-
disabled={total == 0}
|
|
157
|
-
onPress={onPress}
|
|
158
|
-
style={tw`px-2 ${
|
|
159
|
-
total == 0 ? "bg-green-900" : "bg-green-600"
|
|
160
|
-
} rounded-lg h-10 items-center justify-center`}
|
|
161
|
-
>
|
|
162
|
-
<Text
|
|
163
|
-
style={tw` ${
|
|
164
|
-
// checkedIn === total ? 'text-white400' : 'text-white50'
|
|
165
|
-
"text-white50"
|
|
166
|
-
} font-RobotoBlack`}
|
|
167
|
-
>
|
|
168
|
-
Checked in {checkedIn}/{total}
|
|
169
|
-
</Text>
|
|
170
|
-
</TouchableOpacity>
|
|
171
|
-
</>
|
|
172
|
-
);
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
export default Card;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import React, { Dispatch, SetStateAction } from "react";
|
|
2
|
-
import { Text, TouchableOpacity, View } from "react-native";
|
|
3
|
-
|
|
4
|
-
import tw from "../tailwind";
|
|
5
|
-
|
|
6
|
-
interface IOptionSelectProps {
|
|
7
|
-
setSelectOption: Dispatch<SetStateAction<string>>;
|
|
8
|
-
data: Array<string>;
|
|
9
|
-
selectOption: string;
|
|
10
|
-
containerStyle?: any;
|
|
11
|
-
selectStyle?: any;
|
|
12
|
-
textstyle?: any;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const OptionSelect = ({
|
|
16
|
-
data,
|
|
17
|
-
selectOption,
|
|
18
|
-
setSelectOption,
|
|
19
|
-
containerStyle,
|
|
20
|
-
selectStyle,
|
|
21
|
-
textstyle,
|
|
22
|
-
}: IOptionSelectProps) => {
|
|
23
|
-
return (
|
|
24
|
-
<View style={[tw`flex-row justify-between gap-2`, containerStyle]}>
|
|
25
|
-
{data.map((item, index) => (
|
|
26
|
-
<TouchableOpacity
|
|
27
|
-
key={index}
|
|
28
|
-
style={[
|
|
29
|
-
tw`p-2 rounded-lg items-center justify-center flex-1`,
|
|
30
|
-
selectStyle,
|
|
31
|
-
selectOption === item && tw`bg-primary40`,
|
|
32
|
-
]}
|
|
33
|
-
onPress={() => setSelectOption(item)}
|
|
34
|
-
>
|
|
35
|
-
<Text style={[tw`text-white50 text-xs font-RobotoBold`, textstyle]}>
|
|
36
|
-
{item}
|
|
37
|
-
</Text>
|
|
38
|
-
</TouchableOpacity>
|
|
39
|
-
))}
|
|
40
|
-
</View>
|
|
41
|
-
);
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export default OptionSelect;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { IconSearchGray } from "@/icons/icons";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { View } from "react-native";
|
|
4
|
-
import InputText from "../inputs/InputText";
|
|
5
|
-
import tw from "../tailwind";
|
|
6
|
-
|
|
7
|
-
interface SearchCardProps {
|
|
8
|
-
setSearch?: React.Dispatch<React.SetStateAction<string>>;
|
|
9
|
-
search?: string;
|
|
10
|
-
placeholder?: string;
|
|
11
|
-
containerStyle?: any;
|
|
12
|
-
fieldStyle?: any;
|
|
13
|
-
focusSTyle?: any;
|
|
14
|
-
Component?: React.ReactNode;
|
|
15
|
-
ref?: any;
|
|
16
|
-
label?: string;
|
|
17
|
-
onPress?: () => void;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const SearchCard = ({ search, setSearch }: SearchCardProps) => {
|
|
21
|
-
return (
|
|
22
|
-
<View style={tw`h-12 px-2`}>
|
|
23
|
-
<InputText
|
|
24
|
-
svgFirstIcon={IconSearchGray}
|
|
25
|
-
value={search}
|
|
26
|
-
onChangeText={(text) => setSearch && setSearch(text)}
|
|
27
|
-
placeholder="Search"
|
|
28
|
-
style={tw`text-black`}
|
|
29
|
-
containerStyle={tw` border border-gray-500 rounded-full h-12 flex-1`}
|
|
30
|
-
/>
|
|
31
|
-
</View>
|
|
32
|
-
);
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export default SearchCard;
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
KeyboardAvoidingView,
|
|
3
|
-
Platform,
|
|
4
|
-
SafeAreaView,
|
|
5
|
-
ScrollView,
|
|
6
|
-
Text,
|
|
7
|
-
} from "react-native";
|
|
8
|
-
import {
|
|
9
|
-
RichEditor,
|
|
10
|
-
RichToolbar,
|
|
11
|
-
actions,
|
|
12
|
-
} from "react-native-pell-rich-editor";
|
|
13
|
-
|
|
14
|
-
import { _HIGHT } from "@/src/utils/utils";
|
|
15
|
-
import React from "react";
|
|
16
|
-
import tw from "../tailwind";
|
|
17
|
-
|
|
18
|
-
const handleHead = ({ tintColor }: any) => (
|
|
19
|
-
<Text style={{ color: tintColor }}>H1</Text>
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
const handleLink = ({ tintColor }: any) => (
|
|
23
|
-
<Text style={{ color: tintColor }}>Link</Text>
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
interface TextEditorProps {
|
|
27
|
-
onChange?: (descriptionText: string) => void;
|
|
28
|
-
onFocus?: (isEditing: boolean) => void;
|
|
29
|
-
value?: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const TextEditor = ({ onChange, onFocus, value }: TextEditorProps) => {
|
|
33
|
-
const richText = React.useRef<null>(null);
|
|
34
|
-
return (
|
|
35
|
-
<SafeAreaView>
|
|
36
|
-
<ScrollView>
|
|
37
|
-
<KeyboardAvoidingView
|
|
38
|
-
behavior={Platform.OS === "ios" ? "padding" : "height"}
|
|
39
|
-
style={{ flex: 1 }}
|
|
40
|
-
>
|
|
41
|
-
<RichToolbar
|
|
42
|
-
style={tw`bg-transparent border border-secondary rounded-t-md`}
|
|
43
|
-
editor={richText}
|
|
44
|
-
actions={[
|
|
45
|
-
actions.setBold,
|
|
46
|
-
actions.setItalic,
|
|
47
|
-
actions.setUnderline,
|
|
48
|
-
actions.heading1,
|
|
49
|
-
actions.insertBulletsList,
|
|
50
|
-
actions.insertOrderedList,
|
|
51
|
-
actions.insertLink,
|
|
52
|
-
]}
|
|
53
|
-
iconMap={{
|
|
54
|
-
[actions.heading1]: handleHead,
|
|
55
|
-
[actions.insertLink]: handleLink,
|
|
56
|
-
}}
|
|
57
|
-
/>
|
|
58
|
-
<RichEditor
|
|
59
|
-
initialHeight={_HIGHT * 0.3}
|
|
60
|
-
initialContentHTML={value}
|
|
61
|
-
placeholder="Write your caption"
|
|
62
|
-
style={tw`bg-transparent border border-t-0 border-secondary rounded-b-md p-2 text-white`}
|
|
63
|
-
editorStyle={tw`bg-transparent border border-secondary rounded-md p-2 text-white`}
|
|
64
|
-
ref={richText}
|
|
65
|
-
onChange={(text) => {
|
|
66
|
-
onChange && onChange(text);
|
|
67
|
-
}}
|
|
68
|
-
onFocus={() => {
|
|
69
|
-
onFocus && onFocus(true);
|
|
70
|
-
}}
|
|
71
|
-
onBlur={() => {
|
|
72
|
-
onFocus && onFocus(false);
|
|
73
|
-
}}
|
|
74
|
-
/>
|
|
75
|
-
</KeyboardAvoidingView>
|
|
76
|
-
</ScrollView>
|
|
77
|
-
</SafeAreaView>
|
|
78
|
-
);
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
export default TextEditor;
|