@momo-kits/foundation 0.75.1-beta.10

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 (76) hide show
  1. package/Assets/header-background.png +0 -0
  2. package/Assets/icon.json +3947 -0
  3. package/Button/index.tsx +278 -0
  4. package/Button/styles.ts +41 -0
  5. package/CheckBox/index.tsx +61 -0
  6. package/CheckBox/styles.ts +15 -0
  7. package/CheckBox/types.ts +38 -0
  8. package/Consts/colors+spacing+radius.ts +214 -0
  9. package/Consts/index.ts +4 -0
  10. package/Consts/styles.ts +78 -0
  11. package/Consts/theme.ts +121 -0
  12. package/Divider/index.tsx +19 -0
  13. package/Icon/index.tsx +37 -0
  14. package/Icon/types.ts +27 -0
  15. package/IconButton/index.tsx +140 -0
  16. package/IconButton/styles.ts +19 -0
  17. package/Image/index.tsx +80 -0
  18. package/Image/styles.ts +13 -0
  19. package/Image/types.ts +3 -0
  20. package/Input/Input.tsx +136 -0
  21. package/Input/InputMoney.tsx +132 -0
  22. package/Input/InputSearch.tsx +161 -0
  23. package/Input/InputTextArea.tsx +152 -0
  24. package/Input/common.tsx +118 -0
  25. package/Input/index.tsx +96 -0
  26. package/Input/styles.ts +122 -0
  27. package/Input/utils.ts +69 -0
  28. package/Layout/Card.tsx +141 -0
  29. package/Layout/GridSystem.tsx +124 -0
  30. package/Layout/Item.tsx +60 -0
  31. package/Layout/ScreenContainer.tsx +121 -0
  32. package/Layout/Section.tsx +141 -0
  33. package/Layout/index.ts +17 -0
  34. package/Layout/types.ts +59 -0
  35. package/Layout/utils.ts +60 -0
  36. package/Navigation/BottomTab.tsx +39 -0
  37. package/Navigation/Components.tsx +365 -0
  38. package/Navigation/ModalScreen.tsx +226 -0
  39. package/Navigation/Navigation.ts +44 -0
  40. package/Navigation/NavigationButton.tsx +54 -0
  41. package/Navigation/NavigationContainer.tsx +77 -0
  42. package/Navigation/Navigator.ts +82 -0
  43. package/Navigation/StackScreen.tsx +27 -0
  44. package/Navigation/index.ts +14 -0
  45. package/Navigation/types.ts +158 -0
  46. package/Navigation/utils.tsx +138 -0
  47. package/Pagination/Dot.tsx +16 -0
  48. package/Pagination/PaginationDot.tsx +33 -0
  49. package/Pagination/PaginationNumber.tsx +23 -0
  50. package/Pagination/PaginationScroll.tsx +88 -0
  51. package/Pagination/PaginationWhiteDot.tsx +32 -0
  52. package/Pagination/index.tsx +25 -0
  53. package/Pagination/styles.ts +47 -0
  54. package/Pagination/types.ts +38 -0
  55. package/Popup/PopupNotify.tsx +215 -0
  56. package/Popup/PopupPromotion.tsx +77 -0
  57. package/Popup/index.tsx +4 -0
  58. package/Popup/types.ts +70 -0
  59. package/Radio/index.tsx +65 -0
  60. package/Radio/styles.ts +11 -0
  61. package/Radio/types.ts +38 -0
  62. package/Skeleton/index.tsx +72 -0
  63. package/Skeleton/styles.ts +5 -0
  64. package/Skeleton/types.ts +3 -0
  65. package/Switch/index.tsx +40 -0
  66. package/Switch/styles.ts +23 -0
  67. package/Switch/types.ts +26 -0
  68. package/Tag/index.tsx +79 -0
  69. package/Tag/styles.ts +24 -0
  70. package/Tag/types.ts +36 -0
  71. package/Text/index.tsx +123 -0
  72. package/Text/styles.ts +35 -0
  73. package/Text/types.ts +40 -0
  74. package/index.ts +38 -0
  75. package/package.json +41 -0
  76. package/publish.sh +26 -0
@@ -0,0 +1,138 @@
1
+ import React from 'react';
2
+ import {
3
+ StackNavigationOptions,
4
+ TransitionPresets,
5
+ } from '@react-navigation/stack';
6
+ import {
7
+ HeaderBackground,
8
+ HeaderCustom,
9
+ HeaderLeft,
10
+ HeaderTitle,
11
+ HeaderToolkitAction,
12
+ } from './Components';
13
+ import {NavigationOptions, Theme} from './types';
14
+ import {Colors} from '../Consts';
15
+
16
+ const getTintColor = (theme: Theme): any => {
17
+ if (theme.assets?.headerBackground) {
18
+ return {
19
+ headerTintColor: Colors.black_01,
20
+ };
21
+ }
22
+ return {
23
+ headerTintColor: theme.colors.text.default,
24
+ };
25
+ };
26
+
27
+ const getStackOptions = (theme: Theme): StackNavigationOptions => {
28
+ return {
29
+ headerTitleAlign: 'center',
30
+ headerTitle: HeaderTitle,
31
+ headerBackground: HeaderBackground,
32
+ headerLeft: (props: any) => <HeaderLeft {...props} />,
33
+ headerRight: (props: any) => <HeaderToolkitAction {...props} />,
34
+ ...getTintColor(theme),
35
+ };
36
+ };
37
+
38
+ const getDialogOptions = (theme: Theme): StackNavigationOptions => {
39
+ return {
40
+ headerTitleAlign: 'center',
41
+ headerTitle: HeaderTitle,
42
+ headerLeft: (props: any) => <HeaderLeft {...props} />,
43
+ headerBackground: HeaderBackground,
44
+ ...getTintColor(theme),
45
+ ...TransitionPresets.ModalTransition,
46
+ };
47
+ };
48
+
49
+ const getModalOptions = (): StackNavigationOptions => {
50
+ return {
51
+ headerShown: false,
52
+ headerBackground: undefined,
53
+ cardStyle: {backgroundColor: 'transparent'},
54
+ cardOverlayEnabled: true,
55
+ animationEnabled: false,
56
+ cardStyleInterpolator: ({current: {progress}}) => ({
57
+ cardStyle: {
58
+ opacity: progress.interpolate({
59
+ inputRange: [0, 0.5, 0.9, 1],
60
+ outputRange: [0, 0.25, 0.7, 1],
61
+ }),
62
+ },
63
+ overlayStyle: {
64
+ opacity: progress.interpolate({
65
+ inputRange: [0, 0.5, 0.9, 1],
66
+ outputRange: [0, 0.2, 0.4, 0.6],
67
+ extrapolate: 'clamp',
68
+ }),
69
+ },
70
+ }),
71
+ };
72
+ };
73
+
74
+ const getOptions = (params: NavigationOptions, theme: Theme) => {
75
+ let backgroundProps = {};
76
+ let titleProps = {};
77
+ let options = {};
78
+
79
+ if (params.preventBack) {
80
+ options = {
81
+ ...options,
82
+ headerLeft: (props: any) => (
83
+ <HeaderLeft {...props} preventBack={params.preventBack} />
84
+ ),
85
+ };
86
+ }
87
+ if (params.surface == true) {
88
+ options = {
89
+ ...options,
90
+ ...getTintColor({
91
+ ...theme,
92
+ assets: {...theme.assets, headerBackground: undefined},
93
+ }),
94
+ };
95
+ backgroundProps = {
96
+ ...backgroundProps,
97
+ image: null,
98
+ backgroundColor: theme.colors.background.surface,
99
+ useBorder: true,
100
+ };
101
+ } else {
102
+ backgroundProps = {};
103
+ options = {...options, ...getTintColor(theme)};
104
+ }
105
+
106
+ if (params.animatedValue) {
107
+ backgroundProps = {...backgroundProps, animatedValue: params.animatedValue};
108
+ titleProps = {...titleProps, animatedValue: params.animatedValue};
109
+ options = {...options, headerTransparent: true};
110
+ } else {
111
+ options = {...options, headerTransparent: false};
112
+ }
113
+
114
+ if (params.customTitle) {
115
+ options = {
116
+ ...options,
117
+ headerTitleAlign: 'left',
118
+ headerTitle: (props: any) => {
119
+ return <HeaderCustom {...params.customTitle} {...props} />;
120
+ },
121
+ };
122
+ } else {
123
+ options = {
124
+ ...options,
125
+ headerTitle: (props: any) => {
126
+ return <HeaderTitle {...titleProps} {...props} />;
127
+ },
128
+ };
129
+ }
130
+
131
+ return {
132
+ ...params,
133
+ ...options,
134
+ headerBackground: () => <HeaderBackground {...backgroundProps} />,
135
+ };
136
+ };
137
+
138
+ export {getStackOptions, getDialogOptions, getModalOptions, getOptions};
@@ -0,0 +1,16 @@
1
+ import React, {FC, useContext} from 'react';
2
+ import {Animated} from 'react-native';
3
+ import styles from './styles';
4
+ import {DotProps} from './types';
5
+ import {ApplicationContext} from '../Navigation';
6
+
7
+ const Dot: FC<DotProps> = ({active, style}) => {
8
+ const {theme} = useContext(ApplicationContext);
9
+ const dotStyle = active
10
+ ? [styles.activeDot]
11
+ : [styles.inactiveDot, {backgroundColor: theme.colors.background.pressed}];
12
+
13
+ return <Animated.View style={[style, dotStyle]} />;
14
+ };
15
+
16
+ export default Dot;
@@ -0,0 +1,33 @@
1
+ import React, {FC, useContext} from 'react';
2
+ import {View} from 'react-native';
3
+ import {ChildPaginationProps} from './types';
4
+ import Dot from './Dot';
5
+ import styles from './styles';
6
+ import {Spacing} from '../Consts';
7
+ import {ApplicationContext} from '../Navigation';
8
+
9
+ const PaginationDot: FC<ChildPaginationProps> = ({
10
+ dataLength = 2,
11
+ activeIndex = 0,
12
+ }) => {
13
+ const {theme} = useContext(ApplicationContext);
14
+ const renderDots = () => {
15
+ const dots = [];
16
+ for (let i = 0; i < dataLength; i++) {
17
+ dots.push(
18
+ <Dot
19
+ key={`Dot${i}`}
20
+ style={[
21
+ i !== dataLength - 1 ? {marginRight: Spacing.XS} : {},
22
+ {backgroundColor: theme.colors.primary},
23
+ ]}
24
+ active={activeIndex === i}
25
+ />,
26
+ );
27
+ }
28
+ return dots;
29
+ };
30
+ return <View style={styles.paginationPinkContainer}>{renderDots()}</View>;
31
+ };
32
+
33
+ export default PaginationDot;
@@ -0,0 +1,23 @@
1
+ import React, {FC, useContext} from 'react';
2
+ import {View} from 'react-native';
3
+ import {ChildPaginationProps} from './types';
4
+ import styles from './styles';
5
+ import {Text} from '../Text';
6
+ import {ApplicationContext} from '../Navigation';
7
+ import {Colors} from '../Consts';
8
+
9
+ const PaginationNumber: FC<ChildPaginationProps> = ({
10
+ activeIndex = 0,
11
+ dataLength = 2,
12
+ }) => {
13
+ const {theme} = useContext(ApplicationContext);
14
+ return (
15
+ <View style={[styles.paginationNumberContainer]}>
16
+ <Text color={Colors.black_01} typography={'label_default'}>{`${
17
+ activeIndex + 1
18
+ }/${dataLength}`}</Text>
19
+ </View>
20
+ );
21
+ };
22
+
23
+ export default PaginationNumber;
@@ -0,0 +1,88 @@
1
+ import React, {FC, useContext, useRef, useState} from 'react';
2
+ import {Animated, View} from 'react-native';
3
+ import {ScrollIndicatorProps} from './types';
4
+ import styles from './styles';
5
+ import {ApplicationContext} from '../Navigation';
6
+
7
+ const INDICATOR_WIDTH = 24;
8
+ const INDICATOR_CONTAINER_WIDTH = 72;
9
+ const PaginationScroll: FC<ScrollIndicatorProps> = ({
10
+ style,
11
+ children,
12
+ scrollViewRef,
13
+ }) => {
14
+ const {theme} = useContext(ApplicationContext);
15
+ const left = useRef(new Animated.Value(0)).current;
16
+ const [scrollViewWidth, setScrollViewWidth] = useState(0);
17
+ const [scrollContentWidth, setScrollContentWidth] = useState(0);
18
+
19
+ const translateX = () => {
20
+ if (scrollViewWidth && scrollContentWidth) {
21
+ const value = left.interpolate({
22
+ inputRange: [0, scrollContentWidth - scrollViewWidth],
23
+ outputRange: [0, INDICATOR_CONTAINER_WIDTH - INDICATOR_WIDTH],
24
+ extrapolate: 'clamp',
25
+ });
26
+ return {transform: [{translateX: value}]};
27
+ }
28
+ return {};
29
+ };
30
+
31
+ const renderScrollView = () => {
32
+ return (
33
+ <Animated.ScrollView
34
+ ref={scrollViewRef}
35
+ onScroll={Animated.event(
36
+ [
37
+ {
38
+ nativeEvent: {
39
+ contentOffset: {
40
+ x: left,
41
+ },
42
+ },
43
+ },
44
+ ],
45
+ {useNativeDriver: true},
46
+ )}
47
+ alwaysBounceHorizontal={false}
48
+ showsHorizontalScrollIndicator={false}
49
+ horizontal
50
+ style={styles.scrollView}
51
+ onContentSizeChange={width => {
52
+ setScrollContentWidth(width);
53
+ }}
54
+ onLayout={e => {
55
+ setScrollViewWidth(e.nativeEvent.layout.width);
56
+ }}>
57
+ {children}
58
+ </Animated.ScrollView>
59
+ );
60
+ };
61
+ const renderIndicator = () => {
62
+ return (
63
+ <View
64
+ style={[
65
+ styles.indicatorContainer,
66
+ {backgroundColor: theme.colors.background.pressed},
67
+ ]}>
68
+ <Animated.View
69
+ style={[
70
+ styles.indicator,
71
+ {
72
+ backgroundColor: theme.colors.primary,
73
+ },
74
+ translateX(),
75
+ ]}
76
+ />
77
+ </View>
78
+ );
79
+ };
80
+ return (
81
+ <View style={[style, styles.scrollContainer]}>
82
+ {renderScrollView()}
83
+ {renderIndicator()}
84
+ </View>
85
+ );
86
+ };
87
+
88
+ export default PaginationScroll;
@@ -0,0 +1,32 @@
1
+ import React, {FC, useContext} from 'react';
2
+ import {View} from 'react-native';
3
+ import {ChildPaginationProps} from './types';
4
+ import styles from './styles';
5
+ import Dot from './Dot';
6
+ import {Colors, Spacing} from '../Consts';
7
+ import {ApplicationContext} from '../Navigation';
8
+
9
+ const PaginationWhiteDot: FC<ChildPaginationProps> = ({
10
+ dataLength = 2,
11
+ activeIndex = 0,
12
+ }) => {
13
+ const {theme} = useContext(ApplicationContext);
14
+ const renderDots = () => {
15
+ const dots = [];
16
+ for (let i = 0; i < dataLength; i++) {
17
+ dots.push(
18
+ <Dot
19
+ style={[
20
+ i !== dataLength - 1 ? {marginRight: Spacing.XS} : {},
21
+ {backgroundColor: Colors.black_01},
22
+ ]}
23
+ active={activeIndex === i}
24
+ />,
25
+ );
26
+ }
27
+ return dots;
28
+ };
29
+ return <View style={[styles.paginationWhiteContainer]}>{renderDots()}</View>;
30
+ };
31
+
32
+ export default PaginationWhiteDot;
@@ -0,0 +1,25 @@
1
+ import React, {FC} from 'react';
2
+ import {PaginationProps} from './types';
3
+ import PaginationWhiteDot from './PaginationWhiteDot';
4
+ import PaginationDot from './PaginationDot';
5
+ import PaginationNumber from './PaginationNumber';
6
+ import PaginationScroll from './PaginationScroll';
7
+
8
+ const Pagination: FC<PaginationProps> = props => {
9
+ const {type} = props;
10
+
11
+ const getComponent = (): any => {
12
+ switch (type) {
13
+ case 'black_white':
14
+ return <PaginationWhiteDot {...props} />;
15
+ case 'number':
16
+ return <PaginationNumber {...props} />;
17
+ default:
18
+ return <PaginationDot {...props} />;
19
+ }
20
+ };
21
+
22
+ return getComponent();
23
+ };
24
+
25
+ export {Pagination, PaginationScroll};
@@ -0,0 +1,47 @@
1
+ import {StyleSheet} from 'react-native';
2
+ import {Colors, Radius, Spacing} from '../Consts';
3
+
4
+ export default StyleSheet.create({
5
+ activeDot: {
6
+ height: 4,
7
+ width: 12,
8
+ borderRadius: Radius.XS,
9
+ },
10
+ inactiveDot: {
11
+ height: 4,
12
+ width: 4,
13
+ borderRadius: Radius.XS,
14
+ },
15
+ paginationPinkContainer: {
16
+ flexDirection: 'row',
17
+ },
18
+ paginationWhiteContainer: {
19
+ flexDirection: 'row',
20
+ padding: Spacing.XS,
21
+ borderRadius: Radius.S,
22
+ backgroundColor: Colors.black_20 + '33',
23
+ },
24
+ paginationNumberContainer: {
25
+ paddingHorizontal: Spacing.S,
26
+ borderRadius: Radius.L,
27
+ backgroundColor: Colors.black_20 + '33',
28
+ },
29
+ scrollContainer: {
30
+ alignItems: 'center',
31
+ width: '100%',
32
+ },
33
+ scrollView: {
34
+ marginBottom: Spacing.L,
35
+ },
36
+
37
+ indicator: {
38
+ width: 24,
39
+ height: 4,
40
+ borderRadius: Radius.XS,
41
+ },
42
+ indicatorContainer: {
43
+ width: 72,
44
+ height: 4,
45
+ borderRadius: Radius.XS,
46
+ },
47
+ });
@@ -0,0 +1,38 @@
1
+ import {ScrollView, ScrollViewProps, ViewStyle} from 'react-native';
2
+ import {Ref} from 'react';
3
+
4
+ export type PaginationProps = {
5
+ /**
6
+ * Optional. Defines the visual style of the Pagination component.
7
+ * - 'default': Represents the default style.
8
+ * - 'black_white': Represents a pagination that have black background.
9
+ * - 'number': Represents a style where pages are represented by numbers.
10
+ * - 'scroll': Represents a scrollable style.
11
+ */
12
+ type?: 'default' | 'black_white' | 'number' | 'scroll';
13
+
14
+ /**
15
+ * Represents the currently active (selected) index in the Pagination component.
16
+ */
17
+ activeIndex: number;
18
+
19
+ /**
20
+ * Represents the total number of items (pages) in the Pagination component.
21
+ */
22
+ dataLength: number;
23
+ };
24
+
25
+ export type DotProps = {
26
+ active: boolean;
27
+ style: ViewStyle | ViewStyle[];
28
+ };
29
+
30
+ export interface ScrollIndicatorProps extends ScrollViewProps {
31
+ /**
32
+ * Optional. Represents a reference to the ScrollView component.
33
+ * It can be used to access the instance methods of the ScrollView.
34
+ */
35
+ scrollViewRef?: Ref<ScrollView>;
36
+ }
37
+
38
+ export type ChildPaginationProps = Omit<PaginationProps, 'type'>;
@@ -0,0 +1,215 @@
1
+ import React, {useContext} from 'react';
2
+ import {StyleSheet, TouchableOpacity, View} from 'react-native';
3
+ import {PopupNotifyProps} from './types';
4
+ import {Radius, Spacing, Styles} from '../Consts';
5
+ import {Image} from '../Image';
6
+ import {Text} from '../Text';
7
+ import {ApplicationContext} from '../Navigation';
8
+ import {Button} from '../Button';
9
+ import {Icon} from '../Icon';
10
+
11
+ const PopupNotify: React.FC<PopupNotifyProps> = ({
12
+ image,
13
+ title,
14
+ description,
15
+ information,
16
+ secondary,
17
+ primary,
18
+ buttonDirection = 'row',
19
+ onIconClose,
20
+ }) => {
21
+ const {theme, navigator} = useContext(ApplicationContext);
22
+
23
+ /**
24
+ * on action popup
25
+ * @param callback
26
+ */
27
+ const onAction = (callback?: () => void) => {
28
+ navigator?.pop();
29
+ callback?.();
30
+ };
31
+
32
+ /**
33
+ * build main action of popup
34
+ */
35
+ const buildAction = () => {
36
+ const renderRow = () => {
37
+ return (
38
+ <View style={Styles.row}>
39
+ {!!secondary?.title && (
40
+ <>
41
+ <View style={Styles.flex}>
42
+ <Button
43
+ title={secondary?.title}
44
+ type="text"
45
+ size="medium"
46
+ onPress={() => {
47
+ onAction(secondary?.onPress);
48
+ }}
49
+ />
50
+ </View>
51
+ <View style={styles.buttonSpace} />
52
+ </>
53
+ )}
54
+ <View style={Styles.flex}>
55
+ <Button
56
+ title={primary.title}
57
+ size="medium"
58
+ onPress={() => {
59
+ onAction(primary.onPress);
60
+ }}
61
+ />
62
+ </View>
63
+ </View>
64
+ );
65
+ };
66
+ const renderColumn = () => {
67
+ return (
68
+ <View style={Styles.columnCenter}>
69
+ <Button
70
+ title={primary.title}
71
+ size="medium"
72
+ onPress={() => {
73
+ onAction(primary.onPress);
74
+ }}
75
+ />
76
+ {!!secondary?.title && (
77
+ <>
78
+ <View style={styles.buttonSpace} />
79
+ <Button
80
+ title={secondary?.title}
81
+ type="text"
82
+ size="medium"
83
+ onPress={() => {
84
+ onAction(secondary?.onPress);
85
+ }}
86
+ />
87
+ </>
88
+ )}
89
+ </View>
90
+ );
91
+ };
92
+
93
+ if (buttonDirection == 'auto') {
94
+ if (
95
+ secondary?.title &&
96
+ (secondary.title.length > 12 || primary.title.length > 12)
97
+ ) {
98
+ return renderColumn();
99
+ }
100
+ return renderRow();
101
+ }
102
+ if (buttonDirection == 'row') {
103
+ return renderRow();
104
+ }
105
+ return renderColumn();
106
+ };
107
+
108
+ /**
109
+ * build close action
110
+ */
111
+ const buildCloseIcon = () => {
112
+ return (
113
+ <View style={styles.iconCloseContainer}>
114
+ <TouchableOpacity
115
+ onPress={() => onAction(onIconClose)}
116
+ style={[
117
+ styles.iconClose,
118
+ {
119
+ backgroundColor: theme.colors.text.default,
120
+ borderColor: theme.colors.background.surface,
121
+ },
122
+ ]}>
123
+ <Icon
124
+ source="navigation_close"
125
+ color={theme.colors.background.surface}
126
+ size={14}
127
+ />
128
+ </TouchableOpacity>
129
+ </View>
130
+ );
131
+ };
132
+
133
+ return (
134
+ <View
135
+ accessibilityLabel={'PopupNotify'}
136
+ style={[
137
+ styles.container,
138
+ {backgroundColor: theme.colors.background.surface},
139
+ ]}>
140
+ {!!image && <Image source={{uri: image}} style={styles.image} />}
141
+ <View style={styles.content}>
142
+ <Text typography={'title_xs'} numberOfLines={1}>
143
+ {title}
144
+ </Text>
145
+ <View style={styles.description}>
146
+ <Text typography={'paragraph_default'} numberOfLines={3}>
147
+ {description}
148
+ </Text>
149
+ </View>
150
+ {!!information && (
151
+ <View style={styles.information}>
152
+ <Text
153
+ typography={'description_xs'}
154
+ color={theme.colors.text.hint}
155
+ numberOfLines={1}>
156
+ {information}
157
+ </Text>
158
+ </View>
159
+ )}
160
+ </View>
161
+ <View style={styles.contentAction}>{buildAction()}</View>
162
+ {buildCloseIcon()}
163
+ </View>
164
+ );
165
+ };
166
+
167
+ const styles = StyleSheet.create({
168
+ container: {
169
+ borderRadius: Radius.L,
170
+ minWidth: '100%',
171
+ },
172
+ image: {
173
+ borderTopLeftRadius: Radius.L,
174
+ borderTopRightRadius: Radius.L,
175
+ aspectRatio: 1.7777,
176
+ },
177
+ content: {padding: Spacing.XL},
178
+ description: {
179
+ marginTop: Spacing.S,
180
+ },
181
+ information: {
182
+ marginTop: Spacing.S,
183
+ },
184
+ contentAction: {
185
+ paddingHorizontal: Spacing.XL,
186
+ paddingBottom: Spacing.XL,
187
+ },
188
+ buttonSpace: {
189
+ width: Spacing.S,
190
+ height: Spacing.S,
191
+ },
192
+ iconCloseContainer: {
193
+ position: 'absolute',
194
+ top: -Spacing.S,
195
+ right: -Spacing.S,
196
+ },
197
+ iconClose: {
198
+ width: 20,
199
+ height: 20,
200
+ alignItems: 'center',
201
+ justifyContent: 'center',
202
+ borderRadius: Radius.M,
203
+ borderWidth: 2,
204
+ },
205
+ });
206
+
207
+ PopupNotify.defaultProps = {
208
+ title: 'Title',
209
+ primary: {
210
+ title: 'Primary',
211
+ onPress: () => {},
212
+ },
213
+ };
214
+
215
+ export default PopupNotify;