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.
Files changed (39) hide show
  1. package/.github/workflows/npm-publish.yml +31 -0
  2. package/README.md +11 -1
  3. package/package.json +1 -1
  4. package/template/src/lib/DateTimePicker/DateTimePicker.tsx +0 -63
  5. package/template/src/lib/Empty/EmptyCard.tsx +0 -67
  6. package/template/src/lib/Error/GlobalErrorBoundary.tsx +0 -111
  7. package/template/src/lib/animate/AniImage.tsx +0 -32
  8. package/template/src/lib/backHeader/BackButton.tsx +0 -62
  9. package/template/src/lib/backHeader/BackWithCoponent.tsx +0 -112
  10. package/template/src/lib/backHeader/BackWithHeader.tsx +0 -46
  11. package/template/src/lib/backHeader/BackWithTitle.tsx +0 -53
  12. package/template/src/lib/buttons/IButton.tsx +0 -69
  13. package/template/src/lib/buttons/IwtButton.tsx +0 -199
  14. package/template/src/lib/buttons/Or.tsx +0 -27
  15. package/template/src/lib/buttons/SimpleButton.tsx +0 -45
  16. package/template/src/lib/buttons/TButton.tsx +0 -70
  17. package/template/src/lib/cards/Card.tsx +0 -175
  18. package/template/src/lib/cards/OptionSelect.tsx +0 -44
  19. package/template/src/lib/cards/SearchCard.tsx +0 -35
  20. package/template/src/lib/editor/TextEditor.tsx +0 -81
  21. package/template/src/lib/expend/ExpendComponent.tsx +0 -36
  22. package/template/src/lib/imageViewer/ImageViwer.tsx +0 -332
  23. package/template/src/lib/imageZoomer/ImageZoomer.tsx +0 -104
  24. package/template/src/lib/inputs/CheckBox.tsx +0 -86
  25. package/template/src/lib/inputs/InputText.tsx +0 -232
  26. package/template/src/lib/loader/GLoading.tsx +0 -26
  27. package/template/src/lib/loading/MLoading.tsx +0 -14
  28. package/template/src/lib/loading/SLoading.tsx +0 -14
  29. package/template/src/lib/modals/ActionModal.tsx +0 -97
  30. package/template/src/lib/modals/BottomModal.tsx +0 -224
  31. package/template/src/lib/modals/ConfrimationModal.tsx +0 -116
  32. package/template/src/lib/modals/DateModal.tsx +0 -152
  33. package/template/src/lib/modals/NormalModal.tsx +0 -73
  34. package/template/src/lib/modals/SideModal.tsx +0 -57
  35. package/template/src/lib/modals/Toaster.tsx +0 -256
  36. package/template/src/lib/payment/PaymentCardForD.tsx +0 -47
  37. package/template/src/lib/progressBar/ProgressBar.tsx +0 -64
  38. package/template/src/lib/tailwind.js +0 -9
  39. 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;