@grupalia/rn-ui-kit 0.10.0 → 0.11.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/lib/commonjs/components/BaseAlert.js +65 -72
- package/lib/commonjs/components/BaseAlert.js.map +1 -1
- package/lib/commonjs/components/BaseBadge.js +2 -1
- package/lib/commonjs/components/BaseBadge.js.map +1 -1
- package/lib/commonjs/components/BaseButton.js +2 -1
- package/lib/commonjs/components/BaseButton.js.map +1 -1
- package/lib/commonjs/components/BaseDateInput.js +5 -4
- package/lib/commonjs/components/BaseDateInput.js.map +1 -1
- package/lib/commonjs/components/BaseHorizontalTabs.js +2 -1
- package/lib/commonjs/components/BaseHorizontalTabs.js.map +1 -1
- package/lib/commonjs/components/BaseRadioGroup.js +3 -2
- package/lib/commonjs/components/BaseRadioGroup.js.map +1 -1
- package/lib/commonjs/components/BaseSelect.js +7 -6
- package/lib/commonjs/components/BaseSelect.js.map +1 -1
- package/lib/commonjs/components/BaseSelectionItem.js +2 -1
- package/lib/commonjs/components/BaseSelectionItem.js.map +1 -1
- package/lib/commonjs/components/BaseStackedList.js +4 -3
- package/lib/commonjs/components/BaseStackedList.js.map +1 -1
- package/lib/commonjs/index.js +9 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/styles/text-colors.js +0 -16
- package/lib/commonjs/styles/text-colors.js.map +1 -1
- package/lib/module/components/BaseAlert.js +67 -74
- package/lib/module/components/BaseAlert.js.map +1 -1
- package/lib/module/components/BaseBadge.js +3 -2
- package/lib/module/components/BaseBadge.js.map +1 -1
- package/lib/module/components/BaseButton.js +3 -2
- package/lib/module/components/BaseButton.js.map +1 -1
- package/lib/module/components/BaseDateInput.js +6 -5
- package/lib/module/components/BaseDateInput.js.map +1 -1
- package/lib/module/components/BaseHorizontalTabs.js +3 -2
- package/lib/module/components/BaseHorizontalTabs.js.map +1 -1
- package/lib/module/components/BaseRadioGroup.js +4 -3
- package/lib/module/components/BaseRadioGroup.js.map +1 -1
- package/lib/module/components/BaseSelect.js +8 -7
- package/lib/module/components/BaseSelect.js.map +1 -1
- package/lib/module/components/BaseSelectionItem.js +3 -2
- package/lib/module/components/BaseSelectionItem.js.map +1 -1
- package/lib/module/components/BaseStackedList.js +5 -4
- package/lib/module/components/BaseStackedList.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/styles/text-colors.js +0 -16
- package/lib/module/styles/text-colors.js.map +1 -1
- package/lib/typescript/commonjs/components/BaseAlert.d.ts +1 -1
- package/lib/typescript/commonjs/components/BaseAlert.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BaseBadge.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BaseButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BaseDateInput.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BaseHorizontalTabs.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BaseRadioGroup.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BaseSelect.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BaseSelectionItem.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BaseStackedList.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +1 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/styles/text-colors.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseAlert.d.ts +1 -1
- package/lib/typescript/module/components/BaseAlert.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseBadge.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseButton.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseDateInput.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseHorizontalTabs.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseRadioGroup.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseSelect.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseSelectionItem.d.ts.map +1 -1
- package/lib/typescript/module/components/BaseStackedList.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +1 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/styles/text-colors.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/components/BaseAlert.tsx +79 -76
- package/src/components/BaseBadge.tsx +3 -2
- package/src/components/BaseButton.tsx +4 -5
- package/src/components/BaseDateInput.tsx +7 -6
- package/src/components/BaseHorizontalTabs.tsx +4 -8
- package/src/components/BaseRadioGroup.tsx +4 -3
- package/src/components/BaseSelect.tsx +11 -14
- package/src/components/BaseSelectionItem.tsx +3 -2
- package/src/components/BaseStackedList.tsx +6 -5
- package/src/styles/text-colors.ts +0 -16
|
@@ -4,62 +4,63 @@ import { InformationCircleIcon as OutlinedInformationCircleIcon } from 'react-na
|
|
|
4
4
|
import {
|
|
5
5
|
ExclamationTriangleIcon,
|
|
6
6
|
CheckCircleIcon,
|
|
7
|
-
InformationCircleIcon,
|
|
8
7
|
XCircleIcon,
|
|
8
|
+
InformationCircleIcon as SolidInformationCircleIcon,
|
|
9
9
|
} from 'react-native-heroicons/solid';
|
|
10
10
|
|
|
11
|
-
import { View
|
|
11
|
+
import { View } from '../hoc-components';
|
|
12
12
|
import BaseIcon from './BaseIcon';
|
|
13
|
+
import BaseText from './BaseText';
|
|
13
14
|
import { useIsAboveBreakpoint } from '../hooks/useIsAboveBreakpoint';
|
|
14
15
|
|
|
15
16
|
interface IconComponentProps {
|
|
16
|
-
type: 'error' | 'success' | 'alert' | '
|
|
17
|
+
type: 'error' | 'success' | 'alert' | 'brand';
|
|
17
18
|
variant?: 'primary' | 'secondary';
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
function IconComponent({ type, variant = 'primary' }: IconComponentProps) {
|
|
21
22
|
const iconColors = {
|
|
23
|
+
brand: {
|
|
24
|
+
primary: 'fg-white',
|
|
25
|
+
secondary: 'fg-brand-primary',
|
|
26
|
+
},
|
|
22
27
|
error: {
|
|
23
|
-
primary: 'fg-
|
|
24
|
-
secondary: 'fg-error-
|
|
28
|
+
primary: 'fg-white',
|
|
29
|
+
secondary: 'fg-error-primary',
|
|
25
30
|
},
|
|
26
31
|
success: {
|
|
27
|
-
primary: 'fg-
|
|
28
|
-
secondary: 'fg-success-
|
|
32
|
+
primary: 'fg-white',
|
|
33
|
+
secondary: 'fg-success-primary',
|
|
29
34
|
},
|
|
30
35
|
alert: {
|
|
31
|
-
primary: 'fg-
|
|
32
|
-
secondary: 'fg-warning-
|
|
33
|
-
},
|
|
34
|
-
info: {
|
|
35
|
-
primary: 'utility-gray-500',
|
|
36
|
-
secondary: 'utility-gray-400',
|
|
37
|
-
},
|
|
38
|
-
notice: {
|
|
39
|
-
primary: 'utility-blue-500',
|
|
40
|
-
secondary: 'utility-blue-400',
|
|
36
|
+
primary: 'fg-white',
|
|
37
|
+
secondary: 'fg-warning-primary',
|
|
41
38
|
},
|
|
42
39
|
} as const;
|
|
43
40
|
|
|
44
41
|
const icons = {
|
|
42
|
+
brand: SolidInformationCircleIcon,
|
|
45
43
|
error: XCircleIcon,
|
|
46
44
|
success: CheckCircleIcon,
|
|
47
45
|
alert: ExclamationTriangleIcon,
|
|
48
|
-
info: OutlinedInformationCircleIcon,
|
|
49
|
-
notice: InformationCircleIcon,
|
|
50
46
|
};
|
|
51
47
|
|
|
48
|
+
if (variant === 'secondary') {
|
|
49
|
+
icons.brand = OutlinedInformationCircleIcon;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
52
|
return (
|
|
53
53
|
<BaseIcon
|
|
54
54
|
icon={icons[type]}
|
|
55
|
-
size={
|
|
55
|
+
size={18}
|
|
56
56
|
color={iconColors[type][variant]}
|
|
57
|
+
className="mr-1"
|
|
57
58
|
/>
|
|
58
59
|
);
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
interface Props extends React.ComponentProps<typeof View> {
|
|
62
|
-
type: '
|
|
63
|
+
type: 'brand' | 'error' | 'success' | 'alert';
|
|
63
64
|
message: string;
|
|
64
65
|
description?: string;
|
|
65
66
|
variant?: 'primary' | 'secondary';
|
|
@@ -75,73 +76,66 @@ function BaseAlert({
|
|
|
75
76
|
}: Props) {
|
|
76
77
|
const largePhone = useIsAboveBreakpoint('xs');
|
|
77
78
|
const alertClasses = () => {
|
|
78
|
-
if (variant === '
|
|
79
|
-
return 'bg-white border';
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
switch (type) {
|
|
83
|
-
case 'error':
|
|
84
|
-
return 'bg-error-secondary';
|
|
85
|
-
case 'success':
|
|
86
|
-
return 'bg-success-secondary';
|
|
87
|
-
case 'alert':
|
|
88
|
-
return 'bg-yellow-50 border-yellow-400';
|
|
89
|
-
case 'info':
|
|
90
|
-
return 'bg-white border border-gray-300';
|
|
91
|
-
case 'notice':
|
|
92
|
-
default:
|
|
93
|
-
return 'bg-blue-100';
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
const textColor = () => {
|
|
98
|
-
if (variant === 'secondary') {
|
|
79
|
+
if (variant === 'primary') {
|
|
99
80
|
switch (type) {
|
|
100
81
|
case 'error':
|
|
101
|
-
return '
|
|
82
|
+
return 'bg-error-solid';
|
|
102
83
|
case 'success':
|
|
103
|
-
return '
|
|
84
|
+
return 'bg-success-solid';
|
|
104
85
|
case 'alert':
|
|
105
|
-
return '
|
|
106
|
-
case '
|
|
107
|
-
case 'notice':
|
|
86
|
+
return 'bg-warning-solid';
|
|
87
|
+
case 'brand':
|
|
108
88
|
default:
|
|
109
|
-
return '
|
|
89
|
+
return 'bg-brand-solid';
|
|
110
90
|
}
|
|
111
91
|
} else {
|
|
112
92
|
switch (type) {
|
|
113
93
|
case 'error':
|
|
114
|
-
return '
|
|
94
|
+
return 'bg-white border border-error';
|
|
115
95
|
case 'success':
|
|
116
|
-
return 'text-green-700';
|
|
117
96
|
case 'alert':
|
|
118
|
-
return '
|
|
119
|
-
case '
|
|
120
|
-
return 'text-gray-500';
|
|
121
|
-
case 'notice':
|
|
97
|
+
return 'bg-white border border-primary';
|
|
98
|
+
case 'brand':
|
|
122
99
|
default:
|
|
123
|
-
return '
|
|
100
|
+
return 'bg-white border border-brand';
|
|
124
101
|
}
|
|
125
102
|
}
|
|
126
103
|
};
|
|
127
104
|
|
|
128
|
-
const
|
|
129
|
-
if (variant === '
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
105
|
+
const messageTextColor = () => {
|
|
106
|
+
if (variant === 'primary') {
|
|
107
|
+
return 'text-white';
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
switch (type) {
|
|
111
|
+
case 'error':
|
|
112
|
+
return 'text-error-primary';
|
|
113
|
+
case 'success':
|
|
114
|
+
return 'text-success-primary';
|
|
115
|
+
case 'alert':
|
|
116
|
+
return 'text-warning-primary';
|
|
117
|
+
case 'brand':
|
|
118
|
+
default:
|
|
119
|
+
return 'text-brand-secondary';
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const descriptionTextColor = () => {
|
|
124
|
+
if (variant === 'primary') {
|
|
125
|
+
return 'text-utility-gray-100';
|
|
142
126
|
}
|
|
143
127
|
|
|
144
|
-
|
|
128
|
+
switch (type) {
|
|
129
|
+
case 'error':
|
|
130
|
+
return 'text-error-primary';
|
|
131
|
+
case 'success':
|
|
132
|
+
return 'text-success-primary';
|
|
133
|
+
case 'alert':
|
|
134
|
+
return 'text-warning-primary';
|
|
135
|
+
case 'brand':
|
|
136
|
+
default:
|
|
137
|
+
return 'text-brand-tertiary';
|
|
138
|
+
}
|
|
145
139
|
};
|
|
146
140
|
|
|
147
141
|
return (
|
|
@@ -149,7 +143,6 @@ function BaseAlert({
|
|
|
149
143
|
className={clsx(
|
|
150
144
|
'flex flex-row rounded-lg',
|
|
151
145
|
alertClasses(),
|
|
152
|
-
borderColor(),
|
|
153
146
|
largePhone ? 'px-2 py-4' : 'px-1 py-2',
|
|
154
147
|
)}
|
|
155
148
|
{...props}
|
|
@@ -160,14 +153,24 @@ function BaseAlert({
|
|
|
160
153
|
variant={variant}
|
|
161
154
|
/>
|
|
162
155
|
</View>
|
|
163
|
-
<View className={clsx('flex flex-1 flex-col', largePhone ? 'ml-3' : 'ml-1')}>
|
|
164
|
-
<
|
|
156
|
+
<View className={clsx('flex flex-1 flex-col pr-2', largePhone ? 'ml-3' : 'ml-1')}>
|
|
157
|
+
<BaseText className={clsx(
|
|
158
|
+
'flex-1 font-semibold',
|
|
159
|
+
messageTextColor(),
|
|
160
|
+
largePhone ? 'text-base' : 'text-sm',
|
|
161
|
+
)}
|
|
162
|
+
>
|
|
165
163
|
{message}
|
|
166
|
-
</
|
|
164
|
+
</BaseText>
|
|
167
165
|
{description && (
|
|
168
|
-
<
|
|
166
|
+
<BaseText className={clsx(
|
|
167
|
+
'flex-1 text-sm',
|
|
168
|
+
descriptionTextColor(),
|
|
169
|
+
largePhone ? 'mt-3' : 'mt-1',
|
|
170
|
+
)}
|
|
171
|
+
>
|
|
169
172
|
{description}
|
|
170
|
-
</
|
|
173
|
+
</BaseText>
|
|
171
174
|
)}
|
|
172
175
|
{children}
|
|
173
176
|
</View>
|
|
@@ -2,8 +2,9 @@ import clsx from 'clsx';
|
|
|
2
2
|
import { styled } from 'nativewind';
|
|
3
3
|
import { ViewProps } from 'react-native';
|
|
4
4
|
|
|
5
|
-
import { View
|
|
5
|
+
import { View } from '../hoc-components';
|
|
6
6
|
import BaseIcon from './BaseIcon';
|
|
7
|
+
import BaseText from './BaseText';
|
|
7
8
|
import { HeroIcon } from '../types/heroicons';
|
|
8
9
|
|
|
9
10
|
export type BadgeVariant =
|
|
@@ -174,7 +175,7 @@ function BaseBadge({
|
|
|
174
175
|
/>
|
|
175
176
|
</View>
|
|
176
177
|
)}
|
|
177
|
-
<
|
|
178
|
+
<BaseText className={textStyles}>{text}</BaseText>
|
|
178
179
|
{rightIcon && (
|
|
179
180
|
<View className={iconSpacingStyles.right}>
|
|
180
181
|
<BaseIcon
|
|
@@ -3,10 +3,9 @@ import { styled } from 'nativewind';
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { GestureResponderEvent } from 'react-native';
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
Text, View, ActivityIndicator,
|
|
8
|
-
} from '../hoc-components';
|
|
6
|
+
import { View, ActivityIndicator } from '../hoc-components';
|
|
9
7
|
import BaseIcon from './BaseIcon';
|
|
8
|
+
import BaseText from './BaseText';
|
|
10
9
|
import PressableOpacity from './PressableOpacity';
|
|
11
10
|
import { Color as ForegroundColor } from '../styles/foreground-colors';
|
|
12
11
|
import { HeroIcon } from '../types/heroicons';
|
|
@@ -289,11 +288,11 @@ function BaseButton({
|
|
|
289
288
|
/>
|
|
290
289
|
)}
|
|
291
290
|
{text && (
|
|
292
|
-
<
|
|
291
|
+
<BaseText className={textStyles}>
|
|
293
292
|
{text}
|
|
294
293
|
{timer > 0 ? ` (${timer})` : ''}
|
|
295
294
|
{debounce > 0 ? ` (${debounce})` : ''}
|
|
296
|
-
</
|
|
295
|
+
</BaseText>
|
|
297
296
|
)}
|
|
298
297
|
{rightIcon && (
|
|
299
298
|
<BaseIcon
|
|
@@ -5,9 +5,10 @@ import { ViewProps } from 'react-native';
|
|
|
5
5
|
import DatePicker, { DatePickerProps } from 'react-native-date-picker';
|
|
6
6
|
import { CalendarIcon } from 'react-native-heroicons/outline';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { View, Pressable } from '../hoc-components';
|
|
9
9
|
import BaseIcon from './BaseIcon';
|
|
10
10
|
import BaseSpinner from './BaseSpinner';
|
|
11
|
+
import BaseText from './BaseText';
|
|
11
12
|
|
|
12
13
|
interface BaseDateInputProps extends Omit<DatePickerProps, 'open' | 'date' | 'onConfirm' | 'onCancel'> {
|
|
13
14
|
value?: Date | null;
|
|
@@ -91,8 +92,8 @@ export default function BaseDateInput({
|
|
|
91
92
|
className={clsx('flex flex-col', className)}
|
|
92
93
|
style={style}
|
|
93
94
|
>
|
|
94
|
-
{label && <
|
|
95
|
-
{description && <
|
|
95
|
+
{label && <BaseText className="mb-2 font-semibold text-secondary">{label}</BaseText>}
|
|
96
|
+
{description && <BaseText className="mb-2 text-tertiary">{description}</BaseText>}
|
|
96
97
|
<Pressable
|
|
97
98
|
onPress={() => {
|
|
98
99
|
if (!disabled) {
|
|
@@ -123,13 +124,13 @@ export default function BaseDateInput({
|
|
|
123
124
|
/>
|
|
124
125
|
)}
|
|
125
126
|
</View>
|
|
126
|
-
<
|
|
127
|
+
<BaseText className={clsx(
|
|
127
128
|
'flex-1',
|
|
128
129
|
formattedDate ? 'text-primary' : 'text-placeholder',
|
|
129
130
|
)}
|
|
130
131
|
>
|
|
131
132
|
{formattedDate || placeholder}
|
|
132
|
-
</
|
|
133
|
+
</BaseText>
|
|
133
134
|
</Pressable>
|
|
134
135
|
<DatePicker
|
|
135
136
|
{...props}
|
|
@@ -142,7 +143,7 @@ export default function BaseDateInput({
|
|
|
142
143
|
}}
|
|
143
144
|
/>
|
|
144
145
|
{touched && error && (
|
|
145
|
-
<
|
|
146
|
+
<BaseText className="text-error-primary">{error}</BaseText>
|
|
146
147
|
)}
|
|
147
148
|
</View>
|
|
148
149
|
);
|
|
@@ -3,14 +3,10 @@ import { styled } from 'nativewind';
|
|
|
3
3
|
import React, { useState } from 'react';
|
|
4
4
|
import { ViewProps } from 'react-native';
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
View,
|
|
8
|
-
Text,
|
|
9
|
-
ScrollView,
|
|
10
|
-
Pressable,
|
|
11
|
-
} from '../hoc-components';
|
|
6
|
+
import { View, ScrollView, Pressable } from '../hoc-components';
|
|
12
7
|
import BaseBadge from './BaseBadge';
|
|
13
8
|
import BaseSelect, { BaseSelectProps, SelectOption } from './BaseSelect';
|
|
9
|
+
import BaseText from './BaseText';
|
|
14
10
|
|
|
15
11
|
export type Variant = 'button-brand' | 'underline' | 'button-gray' | 'button-border' | 'button-minimal';
|
|
16
12
|
|
|
@@ -192,9 +188,9 @@ function BaseHorizontalTabs({
|
|
|
192
188
|
className={getTabStyles(tab.id === selectedTab)}
|
|
193
189
|
>
|
|
194
190
|
<View className="flex-row items-center space-x-2">
|
|
195
|
-
<
|
|
191
|
+
<BaseText className={getTextStyles(tab.id === selectedTab)}>
|
|
196
192
|
{tab.label}
|
|
197
|
-
</
|
|
193
|
+
</BaseText>
|
|
198
194
|
{(tab.badge || tab.badge === 0) && (
|
|
199
195
|
<BaseBadge
|
|
200
196
|
text={String(tab.badge)}
|
|
@@ -2,8 +2,9 @@ import { styled } from 'nativewind';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { ViewProps } from 'react-native';
|
|
4
4
|
|
|
5
|
-
import { View
|
|
5
|
+
import { View } from '../hoc-components';
|
|
6
6
|
import BaseSelectionItem from './BaseSelectionItem';
|
|
7
|
+
import BaseText from './BaseText';
|
|
7
8
|
|
|
8
9
|
export interface RadioOption {
|
|
9
10
|
label?: string;
|
|
@@ -59,13 +60,13 @@ function BaseRadioGroup({
|
|
|
59
60
|
>
|
|
60
61
|
{option.children || (
|
|
61
62
|
<View className="ml-3 flex-1">
|
|
62
|
-
<
|
|
63
|
+
<BaseText className="text-base text-primary">{option.label}</BaseText>
|
|
63
64
|
</View>
|
|
64
65
|
)}
|
|
65
66
|
</BaseSelectionItem>
|
|
66
67
|
))}
|
|
67
68
|
{hasError && (
|
|
68
|
-
<
|
|
69
|
+
<BaseText className="mt-1.5 text-sm text-error-primary">{error}</BaseText>
|
|
69
70
|
)}
|
|
70
71
|
</View>
|
|
71
72
|
);
|
|
@@ -6,14 +6,11 @@ import { ViewStyle, Dimensions } from 'react-native';
|
|
|
6
6
|
import { ChevronDownIcon, CheckIcon } from 'react-native-heroicons/outline';
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
-
GestureScrollView,
|
|
10
|
-
View,
|
|
11
|
-
Text,
|
|
12
|
-
Pressable,
|
|
13
|
-
TouchableOpacity,
|
|
9
|
+
GestureScrollView, View, Pressable, TouchableOpacity,
|
|
14
10
|
} from '../hoc-components';
|
|
15
11
|
import BaseBottomSheetModal from './BaseBottomSheetModal';
|
|
16
12
|
import BaseIcon from './BaseIcon';
|
|
13
|
+
import BaseText from './BaseText';
|
|
17
14
|
|
|
18
15
|
export interface SelectOption {
|
|
19
16
|
value: string;
|
|
@@ -89,7 +86,7 @@ function BaseSelect({
|
|
|
89
86
|
return (
|
|
90
87
|
<View style={style}>
|
|
91
88
|
{label && (
|
|
92
|
-
<
|
|
89
|
+
<BaseText className="mb-1.5 text-sm font-medium text-gray-700">{label}</BaseText>
|
|
93
90
|
)}
|
|
94
91
|
|
|
95
92
|
<Pressable
|
|
@@ -97,12 +94,12 @@ function BaseSelect({
|
|
|
97
94
|
disabled={disabled}
|
|
98
95
|
className={selectClasses}
|
|
99
96
|
>
|
|
100
|
-
<
|
|
97
|
+
<BaseText
|
|
101
98
|
className={textClasses}
|
|
102
99
|
numberOfLines={1}
|
|
103
100
|
>
|
|
104
101
|
{selectedOption?.label || placeholder}
|
|
105
|
-
</
|
|
102
|
+
</BaseText>
|
|
106
103
|
<BaseIcon
|
|
107
104
|
icon={ChevronDownIcon}
|
|
108
105
|
size={20}
|
|
@@ -112,11 +109,11 @@ function BaseSelect({
|
|
|
112
109
|
</Pressable>
|
|
113
110
|
|
|
114
111
|
{helpText && !hasError && (
|
|
115
|
-
<
|
|
112
|
+
<BaseText className="mt-1.5 text-sm text-gray-500">{helpText}</BaseText>
|
|
116
113
|
)}
|
|
117
114
|
|
|
118
115
|
{hasError && (
|
|
119
|
-
<
|
|
116
|
+
<BaseText className="mt-1.5 text-sm text-red-600">{error}</BaseText>
|
|
120
117
|
)}
|
|
121
118
|
|
|
122
119
|
<BaseBottomSheetModal
|
|
@@ -131,9 +128,9 @@ function BaseSelect({
|
|
|
131
128
|
paddingBottom: 16,
|
|
132
129
|
}}
|
|
133
130
|
>
|
|
134
|
-
<
|
|
131
|
+
<BaseText className="mb-4 text-center text-lg font-semibold text-gray-900">
|
|
135
132
|
{bottomSheetTitle || label || placeholder}
|
|
136
|
-
</
|
|
133
|
+
</BaseText>
|
|
137
134
|
{options.map((option, index) => (
|
|
138
135
|
<TouchableOpacity
|
|
139
136
|
key={option.value}
|
|
@@ -147,7 +144,7 @@ function BaseSelect({
|
|
|
147
144
|
},
|
|
148
145
|
)}
|
|
149
146
|
>
|
|
150
|
-
<
|
|
147
|
+
<BaseText
|
|
151
148
|
className={clsx('flex-1 text-base', {
|
|
152
149
|
'text-gray-900': !option.disabled,
|
|
153
150
|
'text-gray-400': option.disabled,
|
|
@@ -155,7 +152,7 @@ function BaseSelect({
|
|
|
155
152
|
})}
|
|
156
153
|
>
|
|
157
154
|
{option.label}
|
|
158
|
-
</
|
|
155
|
+
</BaseText>
|
|
159
156
|
{option.value === value && (
|
|
160
157
|
<CheckIcon
|
|
161
158
|
size={20}
|
|
@@ -4,7 +4,8 @@ import React from 'react';
|
|
|
4
4
|
import { ViewProps } from 'react-native';
|
|
5
5
|
import { CheckIcon } from 'react-native-heroicons/solid';
|
|
6
6
|
|
|
7
|
-
import { View,
|
|
7
|
+
import { View, TouchableOpacity } from '../hoc-components';
|
|
8
|
+
import BaseText from './BaseText';
|
|
8
9
|
|
|
9
10
|
export interface BaseSelectionItemProps extends ViewProps {
|
|
10
11
|
value: unknown;
|
|
@@ -75,7 +76,7 @@ function BaseSelectionItem({
|
|
|
75
76
|
</View>
|
|
76
77
|
</TouchableOpacity>
|
|
77
78
|
{hasError && (
|
|
78
|
-
<
|
|
79
|
+
<BaseText className="mt-1.5 text-sm text-error-primary">{error}</BaseText>
|
|
79
80
|
)}
|
|
80
81
|
</View>
|
|
81
82
|
);
|
|
@@ -4,9 +4,10 @@ import { ViewProps } from 'react-native';
|
|
|
4
4
|
import { InboxIcon } from 'react-native-heroicons/outline';
|
|
5
5
|
import { ArrowLeftIcon, ArrowRightIcon } from 'react-native-heroicons/solid';
|
|
6
6
|
|
|
7
|
-
import { View
|
|
7
|
+
import { View } from '../hoc-components';
|
|
8
8
|
import BaseButton from './BaseButton';
|
|
9
9
|
import BaseSpinner from './BaseSpinner';
|
|
10
|
+
import BaseText from './BaseText';
|
|
10
11
|
import colors from '../styles/colors';
|
|
11
12
|
|
|
12
13
|
export interface BaseStackedListProps<T> extends ViewProps {
|
|
@@ -37,9 +38,9 @@ function EmptyState({ description }: EmptyStateProps) {
|
|
|
37
38
|
color={colors.gray_light[500]}
|
|
38
39
|
/>
|
|
39
40
|
</View>
|
|
40
|
-
<
|
|
41
|
+
<BaseText className="mt-4 text-base font-medium text-primary">No hay nada que mostrar</BaseText>
|
|
41
42
|
{description && (
|
|
42
|
-
<
|
|
43
|
+
<BaseText className="mt-2 text-sm text-tertiary">{description}</BaseText>
|
|
43
44
|
)}
|
|
44
45
|
</View>
|
|
45
46
|
);
|
|
@@ -118,7 +119,7 @@ function BaseStackedList<T>({
|
|
|
118
119
|
leftIcon={ArrowLeftIcon}
|
|
119
120
|
/>
|
|
120
121
|
|
|
121
|
-
<
|
|
122
|
+
<BaseText className="text-sm font-medium text-secondary">
|
|
122
123
|
Página
|
|
123
124
|
{' '}
|
|
124
125
|
{currentPage + 1}
|
|
@@ -126,7 +127,7 @@ function BaseStackedList<T>({
|
|
|
126
127
|
de
|
|
127
128
|
{' '}
|
|
128
129
|
{totalPages}
|
|
129
|
-
</
|
|
130
|
+
</BaseText>
|
|
130
131
|
|
|
131
132
|
<BaseButton
|
|
132
133
|
variant="secondary"
|
|
@@ -87,22 +87,6 @@ const textColors: TextColorsType = {
|
|
|
87
87
|
light: colors.success['600'],
|
|
88
88
|
dark: colors.success['400'],
|
|
89
89
|
},
|
|
90
|
-
'text-brand': {
|
|
91
|
-
light: colors.brand['600'],
|
|
92
|
-
dark: colors.brand['400'],
|
|
93
|
-
},
|
|
94
|
-
'text-brand_alt': {
|
|
95
|
-
light: colors.base.white,
|
|
96
|
-
dark: colors.base.white,
|
|
97
|
-
},
|
|
98
|
-
'text-error': {
|
|
99
|
-
light: colors.error['500'],
|
|
100
|
-
dark: colors.error['400'],
|
|
101
|
-
},
|
|
102
|
-
'text-success': {
|
|
103
|
-
light: colors.success['500'],
|
|
104
|
-
dark: colors.success['400'],
|
|
105
|
-
},
|
|
106
90
|
};
|
|
107
91
|
|
|
108
92
|
Object.entries(utilityColors).forEach(([key, value]) => {
|