@bigbinary/neetoui-rn 0.0.220 → 0.0.222

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 (44) hide show
  1. package/index.d.ts +49 -5
  2. package/lib/components/Accordion.js +1 -1
  3. package/lib/components/AnimatedImage.js +1 -1
  4. package/lib/components/BottomSheet.js +1 -1
  5. package/lib/components/Button.js +1 -1
  6. package/lib/components/ButtonGroup.js +1 -1
  7. package/lib/components/Calendar.js +1 -1
  8. package/lib/components/Chip.js +1 -1
  9. package/lib/components/FAB.js +1 -1
  10. package/lib/components/Input.js +1 -1
  11. package/lib/components/Loader.js +1 -0
  12. package/lib/components/MultiSelect.js +1 -1
  13. package/lib/components/NotificationPreferenceList.js +1 -1
  14. package/lib/components/OrganizationItem.js +1 -1
  15. package/lib/components/RichTextEditor.js +1 -1
  16. package/lib/components/SearchBar.js +1 -1
  17. package/lib/components/SegmentedTopBar.js +1 -1
  18. package/lib/components/Select.js +1 -1
  19. package/lib/components/SocialButton.js +1 -1
  20. package/lib/components/Touchable.js +1 -1
  21. package/lib/components/index.js +1 -1
  22. package/lib/theme/index.js +1 -1
  23. package/package.json +1 -1
  24. package/src/components/Accordion.js +98 -93
  25. package/src/components/AnimatedImage.js +2 -6
  26. package/src/components/BottomSheet.js +9 -11
  27. package/src/components/Button.js +19 -18
  28. package/src/components/ButtonGroup.js +6 -4
  29. package/src/components/Calendar.js +1 -2
  30. package/src/components/Chip.js +6 -3
  31. package/src/components/FAB.js +9 -0
  32. package/src/components/Input.js +17 -18
  33. package/src/components/Loader.js +119 -0
  34. package/src/components/MultiSelect.js +4 -76
  35. package/src/components/NotificationPreferenceList.js +8 -10
  36. package/src/components/OrganizationItem.js +10 -11
  37. package/src/components/RichTextEditor.js +2 -0
  38. package/src/components/SearchBar.js +13 -11
  39. package/src/components/SegmentedTopBar.js +5 -10
  40. package/src/components/Select.js +11 -14
  41. package/src/components/SocialButton.js +13 -5
  42. package/src/components/Touchable.js +1 -0
  43. package/src/components/index.js +1 -0
  44. package/src/theme/index.js +1 -0
@@ -3,9 +3,8 @@ import React, { useContext } from "react";
3
3
  import propTypes from "@styled-system/prop-types";
4
4
  import PropTypes from "prop-types";
5
5
  import { ThemeContext } from "styled-components/native";
6
- import { ActivityIndicator } from "react-native";
7
6
 
8
- import { Typography, Touchable, Container } from "@components";
7
+ import { Typography, Touchable, Container, Loader } from "@components";
9
8
 
10
9
  export const BUTTON_VARIANTS = Object.freeze({
11
10
  SOLID: "solid",
@@ -68,21 +67,20 @@ export const BUTTON_VARIANTS = Object.freeze({
68
67
  *
69
68
  */
70
69
 
71
- export const Button = props => {
72
- const {
73
- variant,
74
- label,
75
- labelStyle,
76
- RightIcon,
77
- LeftIcon,
78
- disabled,
79
- isLoading,
80
- loadingText,
81
- fontFamily,
82
- color,
83
- fontSize,
84
- ...rest
85
- } = props;
70
+ export const Button = ({
71
+ variant,
72
+ label,
73
+ labelStyle,
74
+ RightIcon,
75
+ LeftIcon,
76
+ disabled,
77
+ isLoading,
78
+ loadingText,
79
+ fontFamily,
80
+ color,
81
+ fontSize,
82
+ ...rest
83
+ }) => {
86
84
  const theme = useContext(ThemeContext);
87
85
  const width = variant === "text" || variant === "danger-text" ? null : "100%";
88
86
 
@@ -169,7 +167,7 @@ export const Button = props => {
169
167
  >
170
168
  {isLoading ? (
171
169
  <Container flexDirection="row">
172
- <ActivityIndicator color={getButtonColors().color} />
170
+ <Loader color={getButtonColors().color} />
173
171
  {!!loadingText && (
174
172
  <Typography
175
173
  textAlign="center"
@@ -254,4 +252,7 @@ Button.propTypes = {
254
252
  * To show loading text along with the loading indicator on the button.
255
253
  */
256
254
  loadingText: PropTypes.string,
255
+ fontFamily: PropTypes.string,
256
+ color: PropTypes.string,
257
+ fontSize: PropTypes.string,
257
258
  };
@@ -36,7 +36,9 @@ export const ButtonGroup = ({
36
36
  buttonItems,
37
37
  onPress,
38
38
  currentActiveBtn,
39
- ...rest
39
+ wrapperStyle,
40
+ buttonStyle,
41
+ buttonTextStyle,
40
42
  }) => {
41
43
  return (
42
44
  <Container
@@ -47,7 +49,7 @@ export const ButtonGroup = ({
47
49
  flexDirection="row"
48
50
  justifyContent="space-between"
49
51
  alignSelf="center"
50
- {...rest.wrapperStyle}
52
+ {...wrapperStyle}
51
53
  >
52
54
  {buttonItems.map(item => {
53
55
  return (
@@ -61,11 +63,11 @@ export const ButtonGroup = ({
61
63
  onPress(item);
62
64
  }
63
65
  }}
64
- {...rest.buttonStyle}
66
+ {...buttonStyle}
65
67
  >
66
68
  <Typography
67
69
  color={item === currentActiveBtn ? inActiveColor : activeColor}
68
- {...rest.buttonTextStyle}
70
+ {...buttonTextStyle}
69
71
  >
70
72
  {item}
71
73
  </Typography>
@@ -32,8 +32,7 @@ import { Calendar as RNCalender } from "react-native-calendars";
32
32
  * Checkout <a href=" https://www.npmjs.com/package/react-native-calendars">react-native-calendars</a> package for all the available props
33
33
  */
34
34
 
35
- export const Calendar = props => {
36
- const { selectedDate, ...rest } = props;
35
+ export const Calendar = ({ selectedDate, ...rest }) => {
37
36
  delete rest.markedDates;
38
37
  const theme = useContext(ThemeContext);
39
38
  const isCurrentDay = dayjs(selectedDate).isSame(dayjs(), "D");
@@ -61,7 +61,8 @@ export const Chip = ({
61
61
  isDisabled,
62
62
  closeIconSize,
63
63
  closeIcon,
64
- ...rest
64
+ containerStyle,
65
+ closeIconContainerStyle,
65
66
  }) => {
66
67
  return (
67
68
  <Touchable
@@ -73,7 +74,7 @@ export const Chip = ({
73
74
  disabled={!onChipPress || isDisabled}
74
75
  {...(variant && variantStyleObj[variant])}
75
76
  {...(isDisabled && { opacity: 0.5 })}
76
- {...rest.containerStyle}
77
+ {...containerStyle}
77
78
  >
78
79
  {LeftIcon && <LeftIcon />}
79
80
  <Typography mx={2} fontFamily="sf400" color={labelColor}>
@@ -85,7 +86,7 @@ export const Chip = ({
85
86
  borderRadius={10}
86
87
  disabled={isDisabled}
87
88
  onPress={onClose}
88
- {...rest.closeIconContainerStyle}
89
+ {...closeIconContainerStyle}
89
90
  >
90
91
  <Icon name={closeIcon} size={closeIconSize} color={closeIconColor} />
91
92
  </Touchable>
@@ -149,4 +150,6 @@ Chip.propTypes = {
149
150
  * Whether the chip is disabled. A disabled chip has a overlay and onPress is not called on touch.
150
151
  */
151
152
  isDisabled: PropTypes.bool,
153
+ containerStyle: PropTypes.object,
154
+ closeIconContainerStyle: PropTypes.object,
152
155
  };
@@ -99,4 +99,13 @@ FAB.propTypes = {
99
99
  * Function to execute on press.
100
100
  */
101
101
  onPress: PropTypes.func.isRequired,
102
+ /**
103
+ * String to set background color.
104
+ */
105
+ bg: PropTypes.string,
106
+ /**
107
+ * Boolean to disable button.
108
+ */
109
+ disabled: PropTypes.bool,
110
+ variant: PropTypes.string,
102
111
  };
@@ -94,23 +94,22 @@ const AnimatedLabel = Animated.createAnimatedComponent(Typography);
94
94
  *
95
95
  */
96
96
 
97
- export const Input = props => {
98
- const {
99
- label,
100
- value = "",
101
- onChangeText = () => {},
102
- onBlur = () => {},
103
- errorMessage = null,
104
- PrefixIcon,
105
- SuffixIcon,
106
- autoFocus = false,
107
- disabled = false,
108
- noBorder = false,
109
- showInputAccessoryView = true,
110
- textAlignVertical = "top",
111
- ...rest
112
- } = props;
113
-
97
+ export const Input = ({
98
+ label,
99
+ value = "",
100
+ onChangeText = () => {},
101
+ onBlur = () => {},
102
+ errorMessage = null,
103
+ PrefixIcon,
104
+ SuffixIcon,
105
+ autoFocus = false,
106
+ disabled = false,
107
+ noBorder = false,
108
+ showInputAccessoryView = true,
109
+ textAlignVertical = "top",
110
+ containerProps,
111
+ ...rest
112
+ }) => {
114
113
  const { width } = useWindowDimensions();
115
114
  const colors = useContext(ThemeContext).colors;
116
115
  const inputRef = useRef();
@@ -203,7 +202,7 @@ export const Input = props => {
203
202
  justifyContent="space-between"
204
203
  {...(!rest.inputProps?.multiline && { height: 58 })}
205
204
  overflow="hidden"
206
- {...rest.containerProps}
205
+ {...containerProps}
207
206
  >
208
207
  {!!PrefixIcon && (
209
208
  <View pl={2}>
@@ -0,0 +1,119 @@
1
+ /* eslint-disable @bigbinary/neeto/no-dangling-constants */
2
+ /* eslint-disable react-hooks/exhaustive-deps */
3
+ import React, { useEffect } from "react";
4
+ import Animated, {
5
+ useSharedValue,
6
+ withTiming,
7
+ useAnimatedProps,
8
+ withRepeat,
9
+ Easing,
10
+ useAnimatedStyle,
11
+ interpolate,
12
+ } from "react-native-reanimated";
13
+ import Svg, { Circle } from "react-native-svg";
14
+ import PropTypes from "prop-types";
15
+ import { theme } from "@theme";
16
+ import { Container } from "@components";
17
+
18
+ const LOADER_WIDTH = {
19
+ s: 24,
20
+ m: 36,
21
+ l: 48,
22
+ };
23
+
24
+ const AnimatedCircle = Animated.createAnimatedComponent(Circle);
25
+
26
+ /**
27
+ ** Component is used to show a loading indication to user.
28
+ *
29
+ * * <div class="screenshots">
30
+ * <img src="screenshots/loaders/loaders.png" />
31
+ * </div>
32
+ *
33
+ * ## Usage
34
+ * ```js
35
+ * import * as React from 'react';
36
+ * import { Container, Loader } from '@bigbinary/neetoui-rn';
37
+ * export default function Main() {
38
+ * return (
39
+ * <Container>
40
+ * <Loader size='l'/>
41
+ * </Container>
42
+ * )
43
+ * }
44
+ * ```
45
+ *
46
+ */
47
+
48
+ export const Loader = ({ color, size }) => {
49
+ const progress = useSharedValue(0);
50
+ const width = LOADER_WIDTH[size];
51
+ const stroke_width = width * 0.15;
52
+ const radius = (width - stroke_width) / 2;
53
+ const circumference = 2 * Math.PI * radius;
54
+
55
+ useEffect(() => {
56
+ progress.value = withRepeat(
57
+ withTiming(2, {
58
+ duration: 1500,
59
+ easing: Easing.linear,
60
+ }),
61
+ -1,
62
+ false
63
+ );
64
+ }, []);
65
+
66
+ const animatedProps = useAnimatedProps(() => ({
67
+ strokeDashoffset: -interpolate(
68
+ progress.value,
69
+ [0, 1, 2],
70
+ [0, circumference, circumference * 2]
71
+ ),
72
+ }));
73
+
74
+ const animatedStyles = useAnimatedStyle(() => {
75
+ const scale = interpolate(progress.value, [0, 2], [0, 420]);
76
+ return {
77
+ width: width,
78
+ height: width,
79
+ alignItems: "center",
80
+ justifyContent: "center",
81
+ transform: [{ rotate: scale + "deg" }],
82
+ };
83
+ });
84
+
85
+ return (
86
+ <Container alignItems="center" justifyContent="center">
87
+ <Animated.View style={animatedStyles}>
88
+ <Svg width={width} height={width}>
89
+ <AnimatedCircle
90
+ cx={width / 2}
91
+ cy={width / 2}
92
+ r={radius}
93
+ strokeWidth={stroke_width}
94
+ stroke={color}
95
+ strokeDasharray={circumference}
96
+ animatedProps={animatedProps}
97
+ strokeLinecap="round"
98
+ />
99
+ </Svg>
100
+ </Animated.View>
101
+ </Container>
102
+ );
103
+ };
104
+
105
+ Loader.propTypes = {
106
+ /**
107
+ * Size variant to select the width of the loader.
108
+ */
109
+ size: PropTypes.oneOf(["s", "m", "l"]),
110
+ /**
111
+ * Color variant to select the color from the available options.
112
+ */
113
+ color: PropTypes.string,
114
+ };
115
+
116
+ Loader.defaultProps = {
117
+ size: "s",
118
+ color: theme.colors.background.lightBlue400,
119
+ };
@@ -1,10 +1,7 @@
1
+ /* eslint-disable react-native/no-inline-styles */
1
2
  import React, { useContext, useEffect, useState } from "react";
2
3
  import PropTypes from "prop-types";
3
- import {
4
- ActivityIndicator,
5
- Keyboard,
6
- TouchableWithoutFeedback,
7
- } from "react-native";
4
+ import { Keyboard, TouchableWithoutFeedback } from "react-native";
8
5
  import Animated, {
9
6
  interpolate,
10
7
  useAnimatedStyle,
@@ -24,13 +21,7 @@ import {
24
21
  position,
25
22
  } from "styled-system";
26
23
 
27
- import {
28
- BottomSheet,
29
- CheckBox,
30
- Container,
31
- Touchable,
32
- Alert,
33
- } from "@components";
24
+ import { BottomSheet, CheckBox, Container, Alert, Loader } from "@components";
34
25
 
35
26
  const Typography = styled.Text`
36
27
  ${textStyle}
@@ -133,41 +124,6 @@ MultiSelectItem.propTypes = {
133
124
  confirmationAlertObj: PropTypes.object,
134
125
  };
135
126
 
136
- const DropdownItem = ({
137
- label,
138
- onPress,
139
- defaultDropdownItemHeight,
140
- itemContainerStyle,
141
- itemLabelStyle,
142
- }) => {
143
- return (
144
- <Touchable bg="background.white" onPress={onPress}>
145
- <Container
146
- height={defaultDropdownItemHeight}
147
- p={2}
148
- {...itemContainerStyle}
149
- >
150
- <Typography
151
- fontFamily="sf400"
152
- fontSize="s"
153
- color="font.grey"
154
- {...itemLabelStyle}
155
- >
156
- {label}
157
- </Typography>
158
- </Container>
159
- </Touchable>
160
- );
161
- };
162
-
163
- DropdownItem.propTypes = {
164
- label: PropTypes.string,
165
- onPress: PropTypes.func,
166
- defaultDropdownItemHeight: PropTypes.number,
167
- itemContainerStyle: PropTypes.object,
168
- itemLabelStyle: PropTypes.object,
169
- };
170
-
171
127
  const AnimatedLabel = Animated.createAnimatedComponent(Typography);
172
128
 
173
129
  /**
@@ -459,10 +415,7 @@ export const MultiSelect = ({
459
415
  )}
460
416
  <Container mt={10}>
461
417
  {isLoading ? (
462
- <ActivityIndicator
463
- size="small"
464
- color={theme.colors.background.base}
465
- />
418
+ <Loader color={theme.colors.background.base} />
466
419
  ) : (
467
420
  <Icon
468
421
  name={`arrow-${showDropdown ? "up" : "down"}-s-line`}
@@ -564,10 +517,6 @@ MultiSelect.propTypes = {
564
517
  * Show loader while creating a searched option not present in the options list
565
518
  */
566
519
  showCreateOptionLoader: PropTypes.bool,
567
- /**
568
- * Custom label for creating searched option not present in the options list
569
- */
570
- createOptionLabel: PropTypes.string,
571
520
  /**
572
521
  * Callback when create searched option is pressed
573
522
  */
@@ -592,10 +541,6 @@ MultiSelect.propTypes = {
592
541
  * To customise dropdown item container styles.
593
542
  */
594
543
  itemContainerStyle: PropTypes.object,
595
- /**
596
- * To customise dropdown item text styles.
597
- */
598
- itemLabelStyle: PropTypes.object,
599
544
  /**
600
545
  * To customise item container styles for multi selected items.
601
546
  */
@@ -608,22 +553,6 @@ MultiSelect.propTypes = {
608
553
  * To customise confirmation alert popup.
609
554
  */
610
555
  confirmationAlertObj: PropTypes.object,
611
- /**
612
- * To customise search input container style.
613
- */
614
- searchInputContainerStyle: PropTypes.object,
615
- /**
616
- * To customise search input style.
617
- */
618
- searchInputStyle: PropTypes.object,
619
- /**
620
- * To customise empty options placeholder container style.
621
- */
622
- emptyOptionsContainerStyle: PropTypes.object,
623
- /**
624
- * To customise empty options placeholder text style.
625
- */
626
- emptyOptionsLabelStyle: PropTypes.object,
627
556
  /**
628
557
  * To customise empty options placeholder container style.
629
558
  */
@@ -694,7 +623,6 @@ MultiSelect.defaultProps = {
694
623
  isSearchable: false,
695
624
  showCreateOption: false,
696
625
  showCreateOptionLoader: false,
697
- createOptionLabel: null,
698
626
  onPressCreateOption: () => {},
699
627
  onDonePress: () => {},
700
628
  maxItemSize: 5,
@@ -74,16 +74,14 @@ import { Container, Typography, Divider, ToggleSwitch } from "@components";
74
74
  *
75
75
  */
76
76
 
77
- export const NotificationPreferenceList = props => {
78
- const {
79
- data,
80
- itemWrapperProps,
81
- itemContainerProps,
82
- labelContainerProps,
83
- labelProps,
84
- ...rest
85
- } = props;
86
-
77
+ export const NotificationPreferenceList = ({
78
+ data,
79
+ itemWrapperProps,
80
+ itemContainerProps,
81
+ labelContainerProps,
82
+ labelProps,
83
+ ...rest
84
+ }) => {
87
85
  return (
88
86
  <Container bg="background.secondary" borderRadius={8} {...rest}>
89
87
  {data?.map((item, index) => {
@@ -27,17 +27,16 @@ import { ThemeContext } from "styled-components/native";
27
27
  *
28
28
  */
29
29
 
30
- export const OrganizationItem = props => {
31
- const {
32
- label,
33
- labelContainerProps,
34
- iconContainerProps,
35
- iconProps,
36
- labelProps,
37
- name,
38
- nameProps,
39
- ...rest
40
- } = props;
30
+ export const OrganizationItem = ({
31
+ label,
32
+ labelContainerProps,
33
+ iconContainerProps,
34
+ iconProps,
35
+ labelProps,
36
+ name,
37
+ nameProps,
38
+ ...rest
39
+ }) => {
41
40
  const theme = useContext(ThemeContext);
42
41
  return (
43
42
  <Container
@@ -158,4 +158,6 @@ RichTextEditor.propTypes = {
158
158
  * Object which can be used to pass other supported props by the RichToolbar.
159
159
  */
160
160
  toolBarProps: PropTypes.object,
161
+ editorWrapperStyle: PropTypes.object,
162
+ toolbarWrapperStyle: PropTypes.object,
161
163
  };
@@ -1,3 +1,4 @@
1
+ /* eslint-disable react-native/no-inline-styles */
1
2
  import React, { useEffect, useRef, useState } from "react";
2
3
  import { Animated, TouchableWithoutFeedback } from "react-native";
3
4
  import {
@@ -47,15 +48,15 @@ const TextInput = styled.TextInput`
47
48
  * ```
48
49
  */
49
50
 
50
- export const SearchBar = props => {
51
- const {
52
- placeholder = "Search",
53
- onChangeText = () => {},
54
- onCancel = () => {},
55
- debounceDelay = 1000,
56
- showCancelButton = true,
57
- ...rest
58
- } = props;
51
+ export const SearchBar = ({
52
+ placeholder = "Search",
53
+ onChangeText = () => {},
54
+ onCancel = () => {},
55
+ debounceDelay = 1000,
56
+ showCancelButton = true,
57
+ containerProps,
58
+ searchbarProps,
59
+ }) => {
59
60
  const inputRef = useRef();
60
61
  const [searchText, setSearchText] = useState("");
61
62
  const debouncedSearchTextValue = useDebounce(
@@ -113,7 +114,7 @@ export const SearchBar = props => {
113
114
  borderRadius={8}
114
115
  flexDirection="row"
115
116
  alignItems="center"
116
- {...rest.containerProps}
117
+ {...containerProps}
117
118
  >
118
119
  <Container px={10}>
119
120
  <Icon
@@ -139,7 +140,7 @@ export const SearchBar = props => {
139
140
  color="font.primary"
140
141
  autoCapitalize="none"
141
142
  returnKeyType="search"
142
- {...rest.searchbarProps}
143
+ {...searchbarProps}
143
144
  />
144
145
  </Container>
145
146
  </TouchableWithoutFeedback>
@@ -190,4 +191,5 @@ SearchBar.propTypes = {
190
191
  * option to hide the cancel button. Default is true
191
192
  */
192
193
  showCancelButton: PropTypes.bool,
194
+ containerProps: PropTypes.object,
193
195
  };
@@ -18,7 +18,6 @@ const defaultShadowStyle = {
18
18
  },
19
19
  shadowOpacity: 0.23,
20
20
  shadowRadius: 2.62,
21
-
22
21
  elevation: 4,
23
22
  };
24
23
 
@@ -87,7 +86,6 @@ export const SegmentedTopBar = ({
87
86
  }) => {
88
87
  const translateValue = (width - 4) / routes?.length;
89
88
  const tabTranslateValue = useSharedValue(0);
90
-
91
89
  useEffect(() => {
92
90
  tabTranslateValue.value = withSpring(
93
91
  index * (translateValue * 1),
@@ -113,7 +111,7 @@ export const SegmentedTopBar = ({
113
111
  defaultShadowStyle,
114
112
  StyleSheet.absoluteFill,
115
113
  {
116
- width: width / routes?.length,
114
+ width: (width - 4) / routes?.length,
117
115
  },
118
116
  tabTranslateAnimatedStyles,
119
117
  ]}
@@ -184,14 +182,9 @@ const styles = StyleSheet.create({
184
182
 
185
183
  SegmentedTopBar.propTypes = {
186
184
  /**
187
- * Array of texts for the labels of each Segment/Tab.
185
+ * Navigation routes and additional data.
188
186
  */
189
- tabs: PropTypes.arrayOf(
190
- PropTypes.shape({
191
- name: PropTypes.string,
192
- Component: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
193
- })
194
- ).isRequired,
187
+ state: PropTypes.object,
195
188
  /**
196
189
  * To change the inactive segment container style.
197
190
  */
@@ -209,6 +202,8 @@ SegmentedTopBar.propTypes = {
209
202
  */
210
203
  activeTextStyle: PropTypes.object,
211
204
  height: PropTypes.number,
205
+ navigation: PropTypes.object,
206
+ descriptors: PropTypes.object,
212
207
  };
213
208
 
214
209
  SegmentedTopBar.defaultProps = {
@@ -8,15 +8,18 @@ import Animated, {
8
8
  Easing,
9
9
  runOnJS,
10
10
  } from "react-native-reanimated";
11
- import {
12
- ActivityIndicator,
13
- TouchableWithoutFeedback,
14
- Keyboard,
15
- } from "react-native";
11
+ import { TouchableWithoutFeedback, Keyboard } from "react-native";
16
12
  import { ThemeContext } from "styled-components/native";
17
13
  import { ScrollView } from "react-native-gesture-handler";
18
14
 
19
- import { Card, Container, Input, Touchable, Typography } from "@components";
15
+ import {
16
+ Card,
17
+ Container,
18
+ Input,
19
+ Touchable,
20
+ Typography,
21
+ Loader,
22
+ } from "@components";
20
23
 
21
24
  const DropdownItem = ({
22
25
  label,
@@ -241,10 +244,7 @@ export const Select = ({
241
244
  {selectedOptionLabel || placeholder}
242
245
  </Typography>
243
246
  {isLoading ? (
244
- <ActivityIndicator
245
- size="small"
246
- color={theme.colors.background.base}
247
- />
247
+ <Loader color={theme.colors.background.base} />
248
248
  ) : (
249
249
  <Icon
250
250
  name={`arrow-${showDropdown ? "up" : "down"}-s-line`}
@@ -305,10 +305,7 @@ export const Select = ({
305
305
  {...createSearchedOptionContainerStyle}
306
306
  >
307
307
  {showCreateOptionLoader ? (
308
- <ActivityIndicator
309
- size="small"
310
- color={theme.colors.background.base}
311
- />
308
+ <Loader size="s" color={theme.colors.background.base} />
312
309
  ) : (
313
310
  <Typography
314
311
  fontFamily="sf400"