@retray-dev/ui-kit 1.8.0 → 2.5.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/COMPONENTS.md +150 -43
- package/dist/index.d.mts +80 -44
- package/dist/index.d.ts +80 -44
- package/dist/index.js +627 -457
- package/dist/index.mjs +626 -457
- package/package.json +8 -2
- package/src/components/Accordion/Accordion.tsx +4 -6
- package/src/components/Alert/Alert.tsx +3 -3
- package/src/components/AlertBanner/AlertBanner.tsx +85 -0
- package/src/components/{Alert → AlertBanner}/index.ts +2 -2
- package/src/components/Avatar/Avatar.tsx +1 -0
- package/src/components/Badge/Badge.tsx +45 -9
- package/src/components/Button/Button.tsx +5 -5
- package/src/components/Card/Card.tsx +90 -18
- package/src/components/Checkbox/Checkbox.tsx +4 -4
- package/src/components/Chip/Chip.tsx +36 -5
- package/src/components/CurrencyInput/CurrencyInput.tsx +9 -1
- package/src/components/EmptyState/EmptyState.tsx +2 -1
- package/src/components/Input/Input.tsx +107 -26
- package/src/components/ListItem/ListItem.tsx +157 -21
- package/src/components/MonthPicker/MonthPicker.tsx +3 -6
- package/src/components/RadioGroup/RadioGroup.tsx +2 -2
- package/src/components/Select/Select.tsx +200 -132
- package/src/components/Slider/Slider.tsx +64 -100
- package/src/components/Switch/Switch.tsx +22 -20
- package/src/components/Textarea/Textarea.tsx +16 -7
- package/src/components/Toast/Toast.tsx +23 -18
- package/src/components/Toggle/Toggle.tsx +36 -49
- package/src/index.ts +3 -2
- package/src/theme/ThemeProvider.tsx +11 -8
- package/src/theme/colors.ts +19 -18
- package/src/theme/types.ts +2 -0
- package/src/components/CurrencyInputLarge/CurrencyInputLarge.tsx +0 -66
- package/src/components/CurrencyInputLarge/index.ts +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import React23, { createContext, useMemo, useContext, useRef, useState, useEffect, useCallback } from 'react';
|
|
2
|
-
import { Platform, StyleSheet, useColorScheme, Animated, TouchableOpacity, ActivityIndicator, Text, View, TextInput, Image, Easing,
|
|
3
|
-
import * as
|
|
2
|
+
import { Platform, StyleSheet, useColorScheme, Animated, TouchableOpacity, ActivityIndicator, Text, View, TextInput, Image, Easing, Modal } from 'react-native';
|
|
3
|
+
import * as Haptics12 from 'expo-haptics';
|
|
4
|
+
import { AntDesign, Entypo, FontAwesome5, MaterialIcons } from '@expo/vector-icons';
|
|
4
5
|
import { LinearGradient } from 'expo-linear-gradient';
|
|
5
6
|
import ReanimatedAnimated, { useSharedValue, useAnimatedStyle, withTiming, Easing as Easing$1, withSpring } from 'react-native-reanimated';
|
|
7
|
+
import RNSlider from '@react-native-community/slider';
|
|
6
8
|
import { BottomSheetModal, BottomSheetView, BottomSheetBackdrop } from '@gorhom/bottom-sheet';
|
|
7
9
|
export { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
|
|
10
|
+
import { Picker } from '@react-native-picker/picker';
|
|
8
11
|
import { scheduleOnRN } from 'react-native-worklets';
|
|
9
12
|
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
10
13
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
@@ -18,41 +21,41 @@ var defaultLight = {
|
|
|
18
21
|
card: "#ffffff",
|
|
19
22
|
cardForeground: "#171717",
|
|
20
23
|
primary: "#1a1a1a",
|
|
21
|
-
primaryForeground: "#
|
|
22
|
-
secondary: "#
|
|
23
|
-
secondaryForeground: "#
|
|
24
|
-
muted: "#
|
|
25
|
-
mutedForeground: "#
|
|
26
|
-
accent: "#
|
|
27
|
-
accentForeground: "#
|
|
24
|
+
primaryForeground: "#ffffff",
|
|
25
|
+
secondary: "#f1f1f1",
|
|
26
|
+
secondaryForeground: "#171717",
|
|
27
|
+
muted: "#f1f1f1",
|
|
28
|
+
mutedForeground: "#a2a2a2",
|
|
29
|
+
accent: "#e4e4e4",
|
|
30
|
+
accentForeground: "#171717",
|
|
28
31
|
destructive: "#ef4444",
|
|
29
|
-
destructiveForeground: "#
|
|
32
|
+
destructiveForeground: "#1a1a1a",
|
|
30
33
|
border: "#e5e5e5",
|
|
31
34
|
input: "#e5e5e5",
|
|
32
|
-
ring: "#
|
|
35
|
+
ring: "#1a1a1a",
|
|
33
36
|
success: "#16a34a",
|
|
34
|
-
successForeground: "#
|
|
37
|
+
successForeground: "#1a1a1a"
|
|
35
38
|
};
|
|
36
39
|
var defaultDark = {
|
|
37
40
|
background: "#171717",
|
|
38
41
|
foreground: "#fafafa",
|
|
39
|
-
card: "#
|
|
42
|
+
card: "#222222",
|
|
40
43
|
cardForeground: "#fafafa",
|
|
41
44
|
primary: "#fafafa",
|
|
42
45
|
primaryForeground: "#1a1a1a",
|
|
43
|
-
secondary: "#
|
|
46
|
+
secondary: "#323232",
|
|
44
47
|
secondaryForeground: "#fafafa",
|
|
45
|
-
muted: "#
|
|
46
|
-
mutedForeground: "#
|
|
47
|
-
accent: "#
|
|
48
|
+
muted: "#323232",
|
|
49
|
+
mutedForeground: "#888888",
|
|
50
|
+
accent: "#323232",
|
|
48
51
|
accentForeground: "#fafafa",
|
|
49
52
|
destructive: "#dc2626",
|
|
50
|
-
destructiveForeground: "#
|
|
53
|
+
destructiveForeground: "#1a1a1a",
|
|
51
54
|
border: "#2a2a2a",
|
|
52
55
|
input: "#2a2a2a",
|
|
53
|
-
ring: "#
|
|
56
|
+
ring: "#fafafa",
|
|
54
57
|
success: "#22c55e",
|
|
55
|
-
successForeground: "#
|
|
58
|
+
successForeground: "#1a1a1a"
|
|
56
59
|
};
|
|
57
60
|
|
|
58
61
|
// src/theme/ThemeProvider.tsx
|
|
@@ -65,19 +68,23 @@ function ThemeProvider({ children, theme, colorScheme = "system" }) {
|
|
|
65
68
|
const resolvedScheme = colorScheme === "system" ? systemScheme : colorScheme;
|
|
66
69
|
const colors = useMemo(() => {
|
|
67
70
|
const base = resolvedScheme === "dark" ? defaultDark : defaultLight;
|
|
68
|
-
const
|
|
69
|
-
return { ...base, ...
|
|
71
|
+
const override = resolvedScheme === "dark" ? theme?.dark : theme?.light;
|
|
72
|
+
return override ? { ...base, ...override } : base;
|
|
70
73
|
}, [resolvedScheme, theme]);
|
|
71
74
|
return /* @__PURE__ */ React23.createElement(ThemeContext.Provider, { value: { colors, colorScheme: resolvedScheme } }, children);
|
|
72
75
|
}
|
|
73
76
|
function useTheme() {
|
|
74
|
-
|
|
77
|
+
const context = useContext(ThemeContext);
|
|
78
|
+
if (!context) {
|
|
79
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
80
|
+
}
|
|
81
|
+
return context;
|
|
75
82
|
}
|
|
76
83
|
var nativeDriver = Platform.OS !== "web";
|
|
77
84
|
var containerSizeStyles = {
|
|
78
|
-
sm: { paddingHorizontal: 20, paddingVertical:
|
|
79
|
-
md: { paddingHorizontal: 24, paddingVertical:
|
|
80
|
-
lg: { paddingHorizontal: 32, paddingVertical:
|
|
85
|
+
sm: { paddingHorizontal: 20, paddingVertical: 10 },
|
|
86
|
+
md: { paddingHorizontal: 24, paddingVertical: 14 },
|
|
87
|
+
lg: { paddingHorizontal: 32, paddingVertical: 18 }
|
|
81
88
|
};
|
|
82
89
|
var labelSizeStyles = {
|
|
83
90
|
sm: { fontSize: 15 },
|
|
@@ -113,7 +120,7 @@ function Button({
|
|
|
113
120
|
Animated.spring(scale, { toValue: 1, useNativeDriver: nativeDriver, speed: 40, bounciness: 4 }).start();
|
|
114
121
|
};
|
|
115
122
|
const handlePress = (e) => {
|
|
116
|
-
|
|
123
|
+
Haptics12.impactAsync(Haptics12.ImpactFeedbackStyle.Light);
|
|
117
124
|
onPress?.(e);
|
|
118
125
|
};
|
|
119
126
|
const containerVariantStyle = {
|
|
@@ -164,13 +171,13 @@ var styles = StyleSheet.create({
|
|
|
164
171
|
width: "100%"
|
|
165
172
|
},
|
|
166
173
|
disabled: {
|
|
167
|
-
opacity: 0.
|
|
174
|
+
opacity: 0.5
|
|
168
175
|
},
|
|
169
176
|
label: {
|
|
170
177
|
fontWeight: "600"
|
|
171
178
|
},
|
|
172
179
|
labelWithIcon: {
|
|
173
|
-
marginHorizontal:
|
|
180
|
+
marginHorizontal: 8
|
|
174
181
|
}
|
|
175
182
|
});
|
|
176
183
|
var variantStyles = {
|
|
@@ -194,56 +201,112 @@ function Text2({ variant = "body", color, style, children, ...props }) {
|
|
|
194
201
|
children
|
|
195
202
|
);
|
|
196
203
|
}
|
|
197
|
-
|
|
204
|
+
var webInputResetStyle = Platform.OS === "web" ? { outlineStyle: "none", outlineWidth: 0, outlineColor: "transparent", boxShadow: "none" } : {};
|
|
205
|
+
function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, type = "text", containerStyle, style, onFocus, onBlur, secureTextEntry, ...props }) {
|
|
198
206
|
const { colors } = useTheme();
|
|
199
207
|
const [focused, setFocused] = useState(false);
|
|
208
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
209
|
+
const isPassword = type === "password";
|
|
210
|
+
const effectiveSecure = isPassword ? !showPassword : secureTextEntry;
|
|
211
|
+
const effectiveSuffix = isPassword && !suffix ? /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles2.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React23.createElement(AntDesign, { name: showPassword ? "eye" : "eye-invisible", size: 20, color: colors.mutedForeground })) : suffix;
|
|
200
212
|
return /* @__PURE__ */ React23.createElement(View, { style: [styles2.container, containerStyle] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React23.createElement(
|
|
201
|
-
|
|
213
|
+
View,
|
|
202
214
|
{
|
|
203
215
|
style: [
|
|
204
|
-
styles2.
|
|
216
|
+
styles2.inputWrapper,
|
|
205
217
|
{
|
|
206
|
-
borderColor: error ? colors.destructive : focused ? colors.ring : colors.border,
|
|
207
|
-
color: colors.foreground,
|
|
218
|
+
borderColor: error ? colors.destructive : focused ? colors.ring ?? colors.primary : colors.border,
|
|
208
219
|
backgroundColor: colors.background
|
|
220
|
+
}
|
|
221
|
+
]
|
|
222
|
+
},
|
|
223
|
+
prefix ? typeof prefix === "string" ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.prefixText, { color: colors.mutedForeground }, prefixStyle], allowFontScaling: true }, prefix) : /* @__PURE__ */ React23.createElement(View, { style: styles2.prefixContainer }, prefix) : null,
|
|
224
|
+
/* @__PURE__ */ React23.createElement(
|
|
225
|
+
TextInput,
|
|
226
|
+
{
|
|
227
|
+
style: [
|
|
228
|
+
styles2.input,
|
|
229
|
+
{
|
|
230
|
+
color: colors.foreground
|
|
231
|
+
},
|
|
232
|
+
webInputResetStyle,
|
|
233
|
+
style
|
|
234
|
+
],
|
|
235
|
+
onFocus: (e) => {
|
|
236
|
+
setFocused(true);
|
|
237
|
+
onFocus?.(e);
|
|
209
238
|
},
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
allowFontScaling: true,
|
|
222
|
-
...props
|
|
223
|
-
}
|
|
239
|
+
onBlur: (e) => {
|
|
240
|
+
setFocused(false);
|
|
241
|
+
onBlur?.(e);
|
|
242
|
+
},
|
|
243
|
+
placeholderTextColor: colors.mutedForeground,
|
|
244
|
+
allowFontScaling: true,
|
|
245
|
+
secureTextEntry: effectiveSecure,
|
|
246
|
+
...props
|
|
247
|
+
}
|
|
248
|
+
),
|
|
249
|
+
effectiveSuffix ? typeof effectiveSuffix === "string" ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.suffixText, { color: colors.mutedForeground }, suffixStyle], allowFontScaling: true }, effectiveSuffix) : /* @__PURE__ */ React23.createElement(View, { style: styles2.suffixContainer }, effectiveSuffix) : null
|
|
224
250
|
), error ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
|
|
225
251
|
}
|
|
226
252
|
var styles2 = StyleSheet.create({
|
|
227
253
|
container: {
|
|
228
|
-
gap:
|
|
254
|
+
gap: 8
|
|
229
255
|
},
|
|
230
256
|
label: {
|
|
231
257
|
fontSize: 15,
|
|
232
|
-
fontWeight: "500"
|
|
233
|
-
marginBottom: 6
|
|
258
|
+
fontWeight: "500"
|
|
234
259
|
},
|
|
235
|
-
|
|
260
|
+
inputWrapper: {
|
|
261
|
+
flexDirection: "row",
|
|
262
|
+
alignItems: "center",
|
|
236
263
|
borderWidth: 1.5,
|
|
237
|
-
borderRadius:
|
|
238
|
-
paddingHorizontal:
|
|
239
|
-
paddingVertical:
|
|
240
|
-
|
|
264
|
+
borderRadius: 8,
|
|
265
|
+
paddingHorizontal: 16,
|
|
266
|
+
paddingVertical: 14
|
|
267
|
+
},
|
|
268
|
+
input: {
|
|
269
|
+
flex: 1,
|
|
270
|
+
fontSize: 17,
|
|
271
|
+
paddingVertical: 0
|
|
272
|
+
},
|
|
273
|
+
prefixContainer: {
|
|
274
|
+
marginRight: 8
|
|
275
|
+
},
|
|
276
|
+
prefixText: {
|
|
277
|
+
fontSize: 17,
|
|
278
|
+
marginRight: 8
|
|
279
|
+
},
|
|
280
|
+
suffixContainer: {
|
|
281
|
+
marginLeft: 8
|
|
282
|
+
},
|
|
283
|
+
suffixText: {
|
|
284
|
+
fontSize: 17,
|
|
285
|
+
marginLeft: 8
|
|
286
|
+
},
|
|
287
|
+
passwordToggle: {
|
|
288
|
+
padding: 4
|
|
241
289
|
},
|
|
242
290
|
helperText: {
|
|
243
291
|
fontSize: 13
|
|
244
292
|
}
|
|
245
293
|
});
|
|
246
|
-
|
|
294
|
+
var sizePadding = {
|
|
295
|
+
sm: { paddingHorizontal: 8, paddingVertical: 2 },
|
|
296
|
+
md: { paddingHorizontal: 10, paddingVertical: 4 },
|
|
297
|
+
lg: { paddingHorizontal: 12, paddingVertical: 6 }
|
|
298
|
+
};
|
|
299
|
+
var sizeFontSize = {
|
|
300
|
+
sm: { fontSize: 11 },
|
|
301
|
+
md: { fontSize: 13 },
|
|
302
|
+
lg: { fontSize: 15 }
|
|
303
|
+
};
|
|
304
|
+
var sizeIconGap = {
|
|
305
|
+
sm: 4,
|
|
306
|
+
md: 6,
|
|
307
|
+
lg: 6
|
|
308
|
+
};
|
|
309
|
+
function Badge({ label, children, variant = "default", size = "md", icon, style }) {
|
|
247
310
|
const { colors } = useTheme();
|
|
248
311
|
const containerStyle = {
|
|
249
312
|
default: { backgroundColor: colors.primary },
|
|
@@ -257,40 +320,100 @@ function Badge({ label, variant = "default", style }) {
|
|
|
257
320
|
destructive: colors.destructiveForeground,
|
|
258
321
|
outline: colors.foreground
|
|
259
322
|
}[variant];
|
|
260
|
-
|
|
323
|
+
const content = children ?? label;
|
|
324
|
+
return /* @__PURE__ */ React23.createElement(View, { style: [styles3.container, containerStyle, sizePadding[size], { gap: sizeIconGap[size] }, style] }, icon ? /* @__PURE__ */ React23.createElement(View, { style: styles3.iconContainer }, icon) : null, typeof content === "string" ? /* @__PURE__ */ React23.createElement(Text, { style: [styles3.label, { color: textColor }, sizeFontSize[size]], allowFontScaling: true }, content) : content);
|
|
261
325
|
}
|
|
262
326
|
var styles3 = StyleSheet.create({
|
|
263
327
|
container: {
|
|
264
|
-
borderRadius:
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
328
|
+
borderRadius: 6,
|
|
329
|
+
alignSelf: "flex-start",
|
|
330
|
+
flexDirection: "row",
|
|
331
|
+
alignItems: "center"
|
|
332
|
+
},
|
|
333
|
+
iconContainer: {
|
|
334
|
+
justifyContent: "center",
|
|
335
|
+
alignItems: "center"
|
|
268
336
|
},
|
|
269
337
|
label: {
|
|
270
|
-
fontSize: 13,
|
|
271
338
|
fontWeight: "500"
|
|
272
339
|
}
|
|
273
340
|
});
|
|
274
|
-
|
|
341
|
+
var nativeDriver2 = Platform.OS !== "web";
|
|
342
|
+
function Card({ children, variant = "elevated", onPress, style }) {
|
|
275
343
|
const { colors } = useTheme();
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
344
|
+
const scale = useRef(new Animated.Value(1)).current;
|
|
345
|
+
const handlePressIn = () => {
|
|
346
|
+
if (!onPress) return;
|
|
347
|
+
Animated.spring(scale, {
|
|
348
|
+
toValue: 0.98,
|
|
349
|
+
useNativeDriver: nativeDriver2,
|
|
350
|
+
speed: 40,
|
|
351
|
+
bounciness: 0
|
|
352
|
+
}).start();
|
|
353
|
+
};
|
|
354
|
+
const handlePressOut = () => {
|
|
355
|
+
if (!onPress) return;
|
|
356
|
+
Animated.spring(scale, {
|
|
357
|
+
toValue: 1,
|
|
358
|
+
useNativeDriver: nativeDriver2,
|
|
359
|
+
speed: 40,
|
|
360
|
+
bounciness: 4
|
|
361
|
+
}).start();
|
|
362
|
+
};
|
|
363
|
+
const handlePress = () => {
|
|
364
|
+
if (!onPress) return;
|
|
365
|
+
Haptics12.impactAsync(Haptics12.ImpactFeedbackStyle.Light);
|
|
366
|
+
onPress();
|
|
367
|
+
};
|
|
368
|
+
const variantStyle = {
|
|
369
|
+
elevated: {
|
|
370
|
+
backgroundColor: colors.card,
|
|
371
|
+
borderColor: colors.border,
|
|
372
|
+
shadowColor: "#000",
|
|
373
|
+
shadowOffset: { width: 0, height: 4 },
|
|
374
|
+
shadowOpacity: 0.06,
|
|
375
|
+
shadowRadius: 12,
|
|
376
|
+
elevation: 3
|
|
280
377
|
},
|
|
281
|
-
|
|
282
|
-
|
|
378
|
+
outlined: {
|
|
379
|
+
backgroundColor: colors.card,
|
|
380
|
+
borderColor: colors.border,
|
|
381
|
+
shadowOpacity: 0,
|
|
382
|
+
elevation: 0
|
|
383
|
+
},
|
|
384
|
+
filled: {
|
|
385
|
+
backgroundColor: colors.accent,
|
|
386
|
+
borderColor: colors.border,
|
|
387
|
+
shadowOpacity: 0,
|
|
388
|
+
elevation: 0
|
|
389
|
+
}
|
|
390
|
+
}[variant];
|
|
391
|
+
const cardContent = /* @__PURE__ */ React23.createElement(View, { style: [styles4.card, variantStyle, style] }, children);
|
|
392
|
+
if (onPress) {
|
|
393
|
+
return /* @__PURE__ */ React23.createElement(Animated.View, { style: { transform: [{ scale }] } }, /* @__PURE__ */ React23.createElement(
|
|
394
|
+
TouchableOpacity,
|
|
395
|
+
{
|
|
396
|
+
onPress: handlePress,
|
|
397
|
+
onPressIn: handlePressIn,
|
|
398
|
+
onPressOut: handlePressOut,
|
|
399
|
+
activeOpacity: 1,
|
|
400
|
+
touchSoundDisabled: true
|
|
401
|
+
},
|
|
402
|
+
cardContent
|
|
403
|
+
));
|
|
404
|
+
}
|
|
405
|
+
return cardContent;
|
|
283
406
|
}
|
|
284
407
|
function CardHeader({ children, style }) {
|
|
285
408
|
return /* @__PURE__ */ React23.createElement(View, { style: [styles4.header, style] }, children);
|
|
286
409
|
}
|
|
287
410
|
function CardTitle({ children, style }) {
|
|
288
411
|
const { colors } = useTheme();
|
|
289
|
-
return /* @__PURE__ */ React23.createElement(Text, { style: [styles4.title, { color: colors.cardForeground }, style] }, children);
|
|
412
|
+
return /* @__PURE__ */ React23.createElement(Text, { style: [styles4.title, { color: colors.cardForeground }, style], allowFontScaling: true }, children);
|
|
290
413
|
}
|
|
291
414
|
function CardDescription({ children, style }) {
|
|
292
415
|
const { colors } = useTheme();
|
|
293
|
-
return /* @__PURE__ */ React23.createElement(Text, { style: [styles4.description, { color: colors.mutedForeground }, style] }, children);
|
|
416
|
+
return /* @__PURE__ */ React23.createElement(Text, { style: [styles4.description, { color: colors.mutedForeground }, style], allowFontScaling: true }, children);
|
|
294
417
|
}
|
|
295
418
|
function CardContent({ children, style }) {
|
|
296
419
|
return /* @__PURE__ */ React23.createElement(View, { style: [styles4.content, style] }, children);
|
|
@@ -300,16 +423,11 @@ function CardFooter({ children, style }) {
|
|
|
300
423
|
}
|
|
301
424
|
var styles4 = StyleSheet.create({
|
|
302
425
|
card: {
|
|
303
|
-
borderRadius:
|
|
304
|
-
borderWidth: 1
|
|
305
|
-
shadowColor: "#000",
|
|
306
|
-
shadowOffset: { width: 0, height: 1 },
|
|
307
|
-
shadowOpacity: 0.05,
|
|
308
|
-
shadowRadius: 2,
|
|
309
|
-
elevation: 1
|
|
426
|
+
borderRadius: 12,
|
|
427
|
+
borderWidth: 1
|
|
310
428
|
},
|
|
311
429
|
header: {
|
|
312
|
-
padding:
|
|
430
|
+
padding: 24,
|
|
313
431
|
paddingBottom: 0,
|
|
314
432
|
gap: 8
|
|
315
433
|
},
|
|
@@ -323,10 +441,10 @@ var styles4 = StyleSheet.create({
|
|
|
323
441
|
lineHeight: 22
|
|
324
442
|
},
|
|
325
443
|
content: {
|
|
326
|
-
padding:
|
|
444
|
+
padding: 24
|
|
327
445
|
},
|
|
328
446
|
footer: {
|
|
329
|
-
padding:
|
|
447
|
+
padding: 24,
|
|
330
448
|
paddingTop: 0,
|
|
331
449
|
flexDirection: "row",
|
|
332
450
|
alignItems: "center"
|
|
@@ -444,7 +562,8 @@ function Avatar({ src, fallback, size = "md", style }) {
|
|
|
444
562
|
) : /* @__PURE__ */ React23.createElement(
|
|
445
563
|
Text,
|
|
446
564
|
{
|
|
447
|
-
style: [styles7.fallback, { color: colors.mutedForeground, fontSize: fontSizeMap[size] }]
|
|
565
|
+
style: [styles7.fallback, { color: colors.mutedForeground, fontSize: fontSizeMap[size] }],
|
|
566
|
+
allowFontScaling: true
|
|
448
567
|
},
|
|
449
568
|
fallback?.slice(0, 2).toUpperCase() ?? "?"
|
|
450
569
|
));
|
|
@@ -463,19 +582,24 @@ function AlertBanner({ title, description, variant = "default", icon, style }) {
|
|
|
463
582
|
const borderColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.border;
|
|
464
583
|
const titleColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.foreground;
|
|
465
584
|
const descColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.mutedForeground;
|
|
466
|
-
const defaultIcon = variant === "
|
|
467
|
-
return /* @__PURE__ */ React23.createElement(View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] },
|
|
585
|
+
const defaultIcon = variant === "success" ? /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 18, color: titleColor }) : variant === "destructive" ? /* @__PURE__ */ React23.createElement(MaterialIcons, { name: "error-outline", size: 20, color: titleColor }) : /* @__PURE__ */ React23.createElement(Entypo, { name: "info-with-circle", size: 18, color: titleColor });
|
|
586
|
+
return /* @__PURE__ */ React23.createElement(View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] }, /* @__PURE__ */ React23.createElement(View, { style: styles8.icon }, icon ?? defaultIcon), /* @__PURE__ */ React23.createElement(View, { style: styles8.content }, title ? /* @__PURE__ */ React23.createElement(Text, { style: [styles8.title, { color: titleColor }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React23.createElement(Text, { style: [styles8.description, { color: descColor }], allowFontScaling: true }, description) : null));
|
|
468
587
|
}
|
|
469
588
|
var styles8 = StyleSheet.create({
|
|
470
589
|
container: {
|
|
471
590
|
flexDirection: "row",
|
|
472
591
|
borderWidth: 1,
|
|
473
|
-
borderRadius:
|
|
592
|
+
borderRadius: 12,
|
|
474
593
|
padding: 16,
|
|
475
|
-
gap: 12
|
|
594
|
+
gap: 12,
|
|
595
|
+
shadowColor: "#000",
|
|
596
|
+
shadowOffset: { width: 0, height: 4 },
|
|
597
|
+
shadowOpacity: 0.06,
|
|
598
|
+
shadowRadius: 12,
|
|
599
|
+
elevation: 3
|
|
476
600
|
},
|
|
477
601
|
icon: {
|
|
478
|
-
marginTop:
|
|
602
|
+
marginTop: 0
|
|
479
603
|
},
|
|
480
604
|
content: {
|
|
481
605
|
flex: 1,
|
|
@@ -489,10 +613,6 @@ var styles8 = StyleSheet.create({
|
|
|
489
613
|
description: {
|
|
490
614
|
fontSize: 14,
|
|
491
615
|
lineHeight: 20
|
|
492
|
-
},
|
|
493
|
-
defaultIcon: {
|
|
494
|
-
fontSize: 18,
|
|
495
|
-
fontWeight: "700"
|
|
496
616
|
}
|
|
497
617
|
});
|
|
498
618
|
function Progress({ value = 0, max = 100, style }) {
|
|
@@ -562,10 +682,11 @@ function EmptyState({ icon, title, description, action, size = "default", style
|
|
|
562
682
|
/* @__PURE__ */ React23.createElement(View, { style: styles10.textWrapper }, /* @__PURE__ */ React23.createElement(
|
|
563
683
|
Text,
|
|
564
684
|
{
|
|
565
|
-
style: [styles10.title, isCompact && styles10.titleCompact, { color: colors.foreground }]
|
|
685
|
+
style: [styles10.title, isCompact && styles10.titleCompact, { color: colors.foreground }],
|
|
686
|
+
allowFontScaling: true
|
|
566
687
|
},
|
|
567
688
|
title
|
|
568
|
-
), description && !isCompact ? /* @__PURE__ */ React23.createElement(Text, { style: [styles10.description, { color: colors.mutedForeground }] }, description) : null),
|
|
689
|
+
), description && !isCompact ? /* @__PURE__ */ React23.createElement(Text, { style: [styles10.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null),
|
|
569
690
|
action && !isCompact ? /* @__PURE__ */ React23.createElement(View, { style: styles10.action }, action) : null
|
|
570
691
|
);
|
|
571
692
|
}
|
|
@@ -617,6 +738,7 @@ var styles10 = StyleSheet.create({
|
|
|
617
738
|
marginTop: 8
|
|
618
739
|
}
|
|
619
740
|
});
|
|
741
|
+
var webInputResetStyle2 = Platform.OS === "web" ? { outlineStyle: "none", outlineWidth: 0, outlineColor: "transparent", boxShadow: "none" } : {};
|
|
620
742
|
function Textarea({
|
|
621
743
|
label,
|
|
622
744
|
error,
|
|
@@ -639,11 +761,12 @@ function Textarea({
|
|
|
639
761
|
style: [
|
|
640
762
|
styles11.input,
|
|
641
763
|
{
|
|
642
|
-
borderColor: error ? colors.destructive : focused ? colors.ring : colors.border,
|
|
764
|
+
borderColor: error ? colors.destructive : focused ? colors.ring ?? colors.primary : colors.border,
|
|
643
765
|
color: colors.foreground,
|
|
644
766
|
backgroundColor: colors.background,
|
|
645
767
|
minHeight: rows * 30
|
|
646
768
|
},
|
|
769
|
+
webInputResetStyle2,
|
|
647
770
|
style
|
|
648
771
|
],
|
|
649
772
|
onFocus: (e) => {
|
|
@@ -662,18 +785,17 @@ function Textarea({
|
|
|
662
785
|
}
|
|
663
786
|
var styles11 = StyleSheet.create({
|
|
664
787
|
container: {
|
|
665
|
-
gap:
|
|
788
|
+
gap: 8
|
|
666
789
|
},
|
|
667
790
|
label: {
|
|
668
791
|
fontSize: 15,
|
|
669
|
-
fontWeight: "500"
|
|
670
|
-
marginBottom: 6
|
|
792
|
+
fontWeight: "500"
|
|
671
793
|
},
|
|
672
794
|
input: {
|
|
673
795
|
borderWidth: 1.5,
|
|
674
|
-
borderRadius:
|
|
675
|
-
paddingHorizontal:
|
|
676
|
-
paddingVertical:
|
|
796
|
+
borderRadius: 8,
|
|
797
|
+
paddingHorizontal: 16,
|
|
798
|
+
paddingVertical: 14,
|
|
677
799
|
fontSize: 17
|
|
678
800
|
},
|
|
679
801
|
helperText: {
|
|
@@ -701,7 +823,7 @@ function Checkbox({
|
|
|
701
823
|
{
|
|
702
824
|
style: [styles12.row, style],
|
|
703
825
|
onPress: () => {
|
|
704
|
-
|
|
826
|
+
Haptics12.selectionAsync();
|
|
705
827
|
onCheckedChange?.(!checked);
|
|
706
828
|
},
|
|
707
829
|
onPressIn: handlePressIn,
|
|
@@ -740,16 +862,16 @@ var styles12 = StyleSheet.create({
|
|
|
740
862
|
gap: 12
|
|
741
863
|
},
|
|
742
864
|
box: {
|
|
743
|
-
width:
|
|
744
|
-
height:
|
|
865
|
+
width: 24,
|
|
866
|
+
height: 24,
|
|
745
867
|
borderRadius: 8,
|
|
746
868
|
borderWidth: 1.5,
|
|
747
869
|
alignItems: "center",
|
|
748
870
|
justifyContent: "center"
|
|
749
871
|
},
|
|
750
872
|
checkmark: {
|
|
751
|
-
width:
|
|
752
|
-
height:
|
|
873
|
+
width: 12,
|
|
874
|
+
height: 7,
|
|
753
875
|
borderLeftWidth: 2,
|
|
754
876
|
borderBottomWidth: 2,
|
|
755
877
|
transform: [{ rotate: "-45deg" }, { translateY: -1 }]
|
|
@@ -759,7 +881,7 @@ var styles12 = StyleSheet.create({
|
|
|
759
881
|
lineHeight: 22
|
|
760
882
|
}
|
|
761
883
|
});
|
|
762
|
-
var
|
|
884
|
+
var nativeDriver3 = Platform.OS !== "web";
|
|
763
885
|
var TRACK_WIDTH = 60;
|
|
764
886
|
var TRACK_HEIGHT = 36;
|
|
765
887
|
var THUMB_SIZE = 28;
|
|
@@ -773,7 +895,7 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
|
|
|
773
895
|
Animated.parallel([
|
|
774
896
|
Animated.spring(translateX, {
|
|
775
897
|
toValue: checked ? THUMB_TRAVEL : 0,
|
|
776
|
-
useNativeDriver:
|
|
898
|
+
useNativeDriver: nativeDriver3,
|
|
777
899
|
bounciness: 4
|
|
778
900
|
}),
|
|
779
901
|
Animated.timing(trackOpacity, {
|
|
@@ -787,17 +909,17 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
|
|
|
787
909
|
inputRange: [0, 1],
|
|
788
910
|
outputRange: [colors.muted, colors.primary]
|
|
789
911
|
});
|
|
790
|
-
return /* @__PURE__ */ React23.createElement(
|
|
912
|
+
return /* @__PURE__ */ React23.createElement(View, { style: [{ opacity: disabled ? 0.45 : 1 }, style] }, /* @__PURE__ */ React23.createElement(
|
|
791
913
|
TouchableOpacity,
|
|
792
914
|
{
|
|
793
915
|
onPress: () => {
|
|
794
|
-
|
|
916
|
+
Haptics12.selectionAsync();
|
|
795
917
|
onCheckedChange?.(!checked);
|
|
796
918
|
},
|
|
797
919
|
disabled,
|
|
798
920
|
activeOpacity: 0.8,
|
|
799
921
|
touchSoundDisabled: true,
|
|
800
|
-
style:
|
|
922
|
+
style: styles13.wrapper
|
|
801
923
|
},
|
|
802
924
|
/* @__PURE__ */ React23.createElement(Animated.View, { style: [styles13.track, { backgroundColor: trackColor }] }, /* @__PURE__ */ React23.createElement(
|
|
803
925
|
Animated.View,
|
|
@@ -808,7 +930,7 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
|
|
|
808
930
|
]
|
|
809
931
|
}
|
|
810
932
|
))
|
|
811
|
-
);
|
|
933
|
+
));
|
|
812
934
|
}
|
|
813
935
|
var styles13 = StyleSheet.create({
|
|
814
936
|
wrapper: {},
|
|
@@ -886,53 +1008,51 @@ function Toggle({
|
|
|
886
1008
|
if (typeof prop === "function") return prop(pressed);
|
|
887
1009
|
return prop;
|
|
888
1010
|
};
|
|
889
|
-
if (
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
1011
|
+
if (pressed) {
|
|
1012
|
+
const active = renderProp(activeIcon);
|
|
1013
|
+
if (active) return /* @__PURE__ */ React23.createElement(React23.Fragment, null, active);
|
|
1014
|
+
return /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 20, color: colors.primary });
|
|
1015
|
+
}
|
|
1016
|
+
const custom = renderProp(icon);
|
|
1017
|
+
if (custom) return /* @__PURE__ */ React23.createElement(React23.Fragment, null, custom);
|
|
1018
|
+
return /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "circle", size: 20, color: colors.mutedForeground });
|
|
893
1019
|
};
|
|
894
|
-
return /* @__PURE__ */ React23.createElement(Animated.View, { style: { transform: [{ scale }] } }, /* @__PURE__ */ React23.createElement(
|
|
895
|
-
|
|
1020
|
+
return /* @__PURE__ */ React23.createElement(Animated.View, { style: [{ transform: [{ scale }] }, disabled && styles14.disabled, style] }, /* @__PURE__ */ React23.createElement(
|
|
1021
|
+
TouchableOpacity,
|
|
896
1022
|
{
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
1023
|
+
onPress: () => {
|
|
1024
|
+
Haptics12.selectionAsync();
|
|
1025
|
+
onPressedChange?.(!pressed);
|
|
1026
|
+
},
|
|
1027
|
+
onPressIn: handlePressIn,
|
|
1028
|
+
onPressOut: handlePressOut,
|
|
1029
|
+
disabled,
|
|
1030
|
+
activeOpacity: 1,
|
|
1031
|
+
touchSoundDisabled: true,
|
|
1032
|
+
...props
|
|
904
1033
|
},
|
|
905
1034
|
/* @__PURE__ */ React23.createElement(
|
|
906
|
-
|
|
1035
|
+
Animated.View,
|
|
907
1036
|
{
|
|
908
|
-
style:
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
onPressIn: handlePressIn,
|
|
914
|
-
onPressOut: handlePressOut,
|
|
915
|
-
disabled,
|
|
916
|
-
activeOpacity: 1,
|
|
917
|
-
touchSoundDisabled: true,
|
|
918
|
-
...props
|
|
1037
|
+
style: [
|
|
1038
|
+
styles14.base,
|
|
1039
|
+
sizeStyles[size],
|
|
1040
|
+
{ borderColor, backgroundColor, borderWidth: 2 }
|
|
1041
|
+
]
|
|
919
1042
|
},
|
|
920
|
-
/* @__PURE__ */ React23.createElement(LeftIcon, null),
|
|
921
|
-
label ? /* @__PURE__ */ React23.createElement(Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null
|
|
1043
|
+
/* @__PURE__ */ React23.createElement(View, { style: styles14.inner }, /* @__PURE__ */ React23.createElement(LeftIcon, null), label ? /* @__PURE__ */ React23.createElement(Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null)
|
|
922
1044
|
)
|
|
923
1045
|
));
|
|
924
1046
|
}
|
|
925
1047
|
var styles14 = StyleSheet.create({
|
|
926
1048
|
base: {
|
|
927
|
-
borderRadius: 8
|
|
928
|
-
overflow: "hidden"
|
|
1049
|
+
borderRadius: 8
|
|
929
1050
|
},
|
|
930
|
-
|
|
1051
|
+
inner: {
|
|
931
1052
|
flexDirection: "row",
|
|
932
1053
|
alignItems: "center",
|
|
933
1054
|
justifyContent: "center",
|
|
934
|
-
gap: 8
|
|
935
|
-
flex: 1
|
|
1055
|
+
gap: 8
|
|
936
1056
|
},
|
|
937
1057
|
disabled: {
|
|
938
1058
|
opacity: 0.45
|
|
@@ -940,18 +1060,6 @@ var styles14 = StyleSheet.create({
|
|
|
940
1060
|
label: {
|
|
941
1061
|
fontSize: 14,
|
|
942
1062
|
fontWeight: "500"
|
|
943
|
-
},
|
|
944
|
-
checkContainer: {
|
|
945
|
-
width: 24,
|
|
946
|
-
height: 24,
|
|
947
|
-
borderRadius: 12,
|
|
948
|
-
borderWidth: 2,
|
|
949
|
-
alignItems: "center",
|
|
950
|
-
justifyContent: "center"
|
|
951
|
-
},
|
|
952
|
-
checkMark: {
|
|
953
|
-
fontSize: 14,
|
|
954
|
-
fontWeight: "700"
|
|
955
1063
|
}
|
|
956
1064
|
});
|
|
957
1065
|
function RadioItem({
|
|
@@ -974,7 +1082,7 @@ function RadioItem({
|
|
|
974
1082
|
style: styles15.row,
|
|
975
1083
|
onPress: () => {
|
|
976
1084
|
if (!option.disabled) {
|
|
977
|
-
|
|
1085
|
+
Haptics12.selectionAsync();
|
|
978
1086
|
onSelect();
|
|
979
1087
|
}
|
|
980
1088
|
},
|
|
@@ -1028,7 +1136,7 @@ function RadioGroup({
|
|
|
1028
1136
|
}
|
|
1029
1137
|
var styles15 = StyleSheet.create({
|
|
1030
1138
|
container: {
|
|
1031
|
-
gap:
|
|
1139
|
+
gap: 12
|
|
1032
1140
|
},
|
|
1033
1141
|
horizontal: {
|
|
1034
1142
|
flexDirection: "row",
|
|
@@ -1037,7 +1145,7 @@ var styles15 = StyleSheet.create({
|
|
|
1037
1145
|
row: {
|
|
1038
1146
|
flexDirection: "row",
|
|
1039
1147
|
alignItems: "center",
|
|
1040
|
-
gap:
|
|
1148
|
+
gap: 12
|
|
1041
1149
|
},
|
|
1042
1150
|
radio: {
|
|
1043
1151
|
width: 24,
|
|
@@ -1132,7 +1240,7 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
|
|
|
1132
1240
|
}
|
|
1133
1241
|
}, [active]);
|
|
1134
1242
|
const handlePress = (v) => {
|
|
1135
|
-
|
|
1243
|
+
Haptics12.selectionAsync();
|
|
1136
1244
|
if (!value) setInternal(v);
|
|
1137
1245
|
onValueChange?.(v);
|
|
1138
1246
|
};
|
|
@@ -1257,7 +1365,7 @@ function AccordionItemComponent({
|
|
|
1257
1365
|
{
|
|
1258
1366
|
style: styles17.trigger,
|
|
1259
1367
|
onPress: () => {
|
|
1260
|
-
|
|
1368
|
+
Haptics12.selectionAsync();
|
|
1261
1369
|
onToggle();
|
|
1262
1370
|
},
|
|
1263
1371
|
onPressIn: handlePressIn,
|
|
@@ -1266,13 +1374,7 @@ function AccordionItemComponent({
|
|
|
1266
1374
|
touchSoundDisabled: true
|
|
1267
1375
|
},
|
|
1268
1376
|
/* @__PURE__ */ React23.createElement(Text, { style: [styles17.triggerText, { color: colors.foreground }] }, item.trigger),
|
|
1269
|
-
/* @__PURE__ */ React23.createElement(
|
|
1270
|
-
ReanimatedAnimated.Text,
|
|
1271
|
-
{
|
|
1272
|
-
style: [styles17.chevron, { color: colors.foreground }, rotationStyle]
|
|
1273
|
-
},
|
|
1274
|
-
"\u25BE"
|
|
1275
|
-
)
|
|
1377
|
+
/* @__PURE__ */ React23.createElement(ReanimatedAnimated.View, { style: [styles17.chevron, rotationStyle] }, /* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-down", size: 20, color: colors.foreground }))
|
|
1276
1378
|
)), /* @__PURE__ */ React23.createElement(ReanimatedAnimated.View, { style: heightStyle }, /* @__PURE__ */ React23.createElement(View, { style: styles17.content, onLayout }, item.content)));
|
|
1277
1379
|
}
|
|
1278
1380
|
function Accordion({ items, type = "single", defaultValue, style }) {
|
|
@@ -1315,7 +1417,6 @@ var styles17 = StyleSheet.create({
|
|
|
1315
1417
|
flex: 1
|
|
1316
1418
|
},
|
|
1317
1419
|
chevron: {
|
|
1318
|
-
fontSize: 18,
|
|
1319
1420
|
marginLeft: 8
|
|
1320
1421
|
},
|
|
1321
1422
|
content: {
|
|
@@ -1331,116 +1432,63 @@ function Slider({
|
|
|
1331
1432
|
step = 0,
|
|
1332
1433
|
onValueChange,
|
|
1333
1434
|
onSlidingComplete,
|
|
1435
|
+
label,
|
|
1436
|
+
showValue = false,
|
|
1437
|
+
formatValue: formatValue2 = (v) => v.toFixed(2),
|
|
1438
|
+
accessibilityLabel,
|
|
1334
1439
|
disabled,
|
|
1335
1440
|
style
|
|
1336
1441
|
}) {
|
|
1337
1442
|
const { colors } = useTheme();
|
|
1338
|
-
const trackWidth = useRef(0);
|
|
1339
1443
|
const lastSteppedValue = useRef(value);
|
|
1340
|
-
const
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
};
|
|
1347
|
-
const xToValue = (x) => {
|
|
1348
|
-
const ratio = Math.min(Math.max(x / trackWidth.current, 0), 1);
|
|
1349
|
-
const raw = ratio * (maximumValue - minimumValue) + minimumValue;
|
|
1350
|
-
return clamp(snapToStep(raw));
|
|
1351
|
-
};
|
|
1352
|
-
const panResponder = useRef(
|
|
1353
|
-
PanResponder.create({
|
|
1354
|
-
onStartShouldSetPanResponder: () => !disabled,
|
|
1355
|
-
onMoveShouldSetPanResponder: () => !disabled,
|
|
1356
|
-
onPanResponderGrant: (e) => {
|
|
1357
|
-
const x = e.nativeEvent.locationX;
|
|
1358
|
-
const newValue = xToValue(x);
|
|
1359
|
-
setInternalValue(newValue);
|
|
1360
|
-
onValueChange?.(newValue);
|
|
1361
|
-
},
|
|
1362
|
-
onPanResponderMove: (e) => {
|
|
1363
|
-
const x = e.nativeEvent.locationX;
|
|
1364
|
-
const newValue = xToValue(x);
|
|
1365
|
-
if (newValue !== lastSteppedValue.current) {
|
|
1366
|
-
lastSteppedValue.current = newValue;
|
|
1367
|
-
Haptics11.selectionAsync();
|
|
1368
|
-
}
|
|
1369
|
-
setInternalValue(newValue);
|
|
1370
|
-
onValueChange?.(newValue);
|
|
1371
|
-
},
|
|
1372
|
-
onPanResponderRelease: (e) => {
|
|
1373
|
-
const x = e.nativeEvent.locationX;
|
|
1374
|
-
const newValue = xToValue(x);
|
|
1375
|
-
setInternalValue(newValue);
|
|
1376
|
-
onSlidingComplete?.(newValue);
|
|
1377
|
-
}
|
|
1378
|
-
})
|
|
1379
|
-
).current;
|
|
1380
|
-
const onLayout = (e) => {
|
|
1381
|
-
trackWidth.current = e.nativeEvent.layout.width;
|
|
1444
|
+
const handleValueChange = (v) => {
|
|
1445
|
+
if (step && v !== lastSteppedValue.current) {
|
|
1446
|
+
lastSteppedValue.current = v;
|
|
1447
|
+
Haptics12.selectionAsync();
|
|
1448
|
+
}
|
|
1449
|
+
onValueChange?.(v);
|
|
1382
1450
|
};
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
View,
|
|
1451
|
+
return /* @__PURE__ */ React23.createElement(View, { style: [styles18.wrapper, style], accessibilityLabel }, label || showValue ? /* @__PURE__ */ React23.createElement(View, { style: styles18.header }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles18.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, showValue ? /* @__PURE__ */ React23.createElement(Text, { style: [styles18.valueText, { color: colors.mutedForeground }], allowFontScaling: true }, formatValue2(value)) : null) : null, /* @__PURE__ */ React23.createElement(View, { style: disabled ? styles18.disabled : void 0 }, /* @__PURE__ */ React23.createElement(
|
|
1452
|
+
RNSlider,
|
|
1386
1453
|
{
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
styles18.thumb,
|
|
1402
|
-
{
|
|
1403
|
-
left: `${percent}%`,
|
|
1404
|
-
backgroundColor: colors.primary,
|
|
1405
|
-
borderColor: colors.background,
|
|
1406
|
-
transform: [{ translateX: -14 }]
|
|
1407
|
-
}
|
|
1408
|
-
],
|
|
1409
|
-
pointerEvents: "none"
|
|
1410
|
-
}
|
|
1411
|
-
)
|
|
1412
|
-
);
|
|
1454
|
+
value,
|
|
1455
|
+
minimumValue,
|
|
1456
|
+
maximumValue,
|
|
1457
|
+
step: step || 0,
|
|
1458
|
+
disabled,
|
|
1459
|
+
onValueChange: handleValueChange,
|
|
1460
|
+
onSlidingComplete,
|
|
1461
|
+
minimumTrackTintColor: colors.primary,
|
|
1462
|
+
maximumTrackTintColor: colors.muted,
|
|
1463
|
+
thumbTintColor: colors.primary,
|
|
1464
|
+
style: styles18.slider,
|
|
1465
|
+
accessibilityLabel
|
|
1466
|
+
}
|
|
1467
|
+
)));
|
|
1413
1468
|
}
|
|
1414
1469
|
var styles18 = StyleSheet.create({
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
justifyContent: "center",
|
|
1418
|
-
position: "relative"
|
|
1470
|
+
wrapper: {
|
|
1471
|
+
gap: 8
|
|
1419
1472
|
},
|
|
1420
|
-
|
|
1421
|
-
|
|
1473
|
+
header: {
|
|
1474
|
+
flexDirection: "row",
|
|
1475
|
+
justifyContent: "space-between",
|
|
1476
|
+
alignItems: "center"
|
|
1422
1477
|
},
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
overflow: "hidden",
|
|
1427
|
-
width: "100%"
|
|
1478
|
+
label: {
|
|
1479
|
+
fontSize: 15,
|
|
1480
|
+
fontWeight: "500"
|
|
1428
1481
|
},
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1482
|
+
valueText: {
|
|
1483
|
+
fontSize: 14,
|
|
1484
|
+
fontWeight: "500"
|
|
1432
1485
|
},
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
shadowColor: "#000",
|
|
1440
|
-
shadowOffset: { width: 0, height: 1 },
|
|
1441
|
-
shadowOpacity: 0.2,
|
|
1442
|
-
shadowRadius: 2,
|
|
1443
|
-
elevation: 2
|
|
1486
|
+
slider: {
|
|
1487
|
+
width: "100%",
|
|
1488
|
+
height: 40
|
|
1489
|
+
},
|
|
1490
|
+
disabled: {
|
|
1491
|
+
opacity: 0.45
|
|
1444
1492
|
}
|
|
1445
1493
|
});
|
|
1446
1494
|
function Sheet({
|
|
@@ -1456,7 +1504,7 @@ function Sheet({
|
|
|
1456
1504
|
const ref = useRef(null);
|
|
1457
1505
|
useEffect(() => {
|
|
1458
1506
|
if (open) {
|
|
1459
|
-
|
|
1507
|
+
Haptics12.impactAsync(Haptics12.ImpactFeedbackStyle.Light);
|
|
1460
1508
|
ref.current?.present();
|
|
1461
1509
|
} else {
|
|
1462
1510
|
ref.current?.dismiss();
|
|
@@ -1512,6 +1560,9 @@ var styles19 = StyleSheet.create({
|
|
|
1512
1560
|
lineHeight: 20
|
|
1513
1561
|
}
|
|
1514
1562
|
});
|
|
1563
|
+
var isIOS = Platform.OS === "ios";
|
|
1564
|
+
var isAndroid = Platform.OS === "android";
|
|
1565
|
+
var isWeb = Platform.OS === "web";
|
|
1515
1566
|
function Select({
|
|
1516
1567
|
options,
|
|
1517
1568
|
value,
|
|
@@ -1523,8 +1574,10 @@ function Select({
|
|
|
1523
1574
|
style
|
|
1524
1575
|
}) {
|
|
1525
1576
|
const { colors } = useTheme();
|
|
1526
|
-
const bottomSheetRef = useRef(null);
|
|
1527
1577
|
const scale = useRef(new Animated.Value(1)).current;
|
|
1578
|
+
const [pickerVisible, setPickerVisible] = useState(false);
|
|
1579
|
+
const [pendingValue, setPendingValue] = useState(value);
|
|
1580
|
+
const pickerRef = useRef(null);
|
|
1528
1581
|
const selected = options.find((o) => o.value === value);
|
|
1529
1582
|
const handlePressIn = () => {
|
|
1530
1583
|
if (disabled) return;
|
|
@@ -1534,24 +1587,26 @@ function Select({
|
|
|
1534
1587
|
Animated.spring(scale, { toValue: 1, useNativeDriver: true, speed: 40, bounciness: 4 }).start();
|
|
1535
1588
|
};
|
|
1536
1589
|
const handleOpen = () => {
|
|
1537
|
-
if (
|
|
1538
|
-
|
|
1539
|
-
|
|
1590
|
+
if (disabled) return;
|
|
1591
|
+
Haptics12.selectionAsync();
|
|
1592
|
+
if (isIOS) {
|
|
1593
|
+
setPendingValue(value);
|
|
1594
|
+
setPickerVisible(true);
|
|
1595
|
+
} else if (isAndroid) {
|
|
1596
|
+
pickerRef.current?.focus();
|
|
1540
1597
|
}
|
|
1541
1598
|
};
|
|
1542
|
-
const
|
|
1543
|
-
(
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
);
|
|
1554
|
-
return /* @__PURE__ */ React23.createElement(View, { style: [styles20.container, style] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles20.label, { color: colors.foreground }] }, label) : null, /* @__PURE__ */ React23.createElement(Animated.View, { style: { transform: [{ scale }], opacity: disabled ? 0.45 : 1 } }, /* @__PURE__ */ React23.createElement(
|
|
1599
|
+
const handleDismiss = () => {
|
|
1600
|
+
setPickerVisible(false);
|
|
1601
|
+
};
|
|
1602
|
+
const handleConfirm = () => {
|
|
1603
|
+
if (pendingValue !== void 0 && pendingValue !== "") {
|
|
1604
|
+
Haptics12.selectionAsync();
|
|
1605
|
+
onValueChange?.(pendingValue);
|
|
1606
|
+
}
|
|
1607
|
+
setPickerVisible(false);
|
|
1608
|
+
};
|
|
1609
|
+
return /* @__PURE__ */ React23.createElement(View, { style: [styles20.container, style] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles20.label, { color: colors.foreground }] }, label) : null, !isWeb ? /* @__PURE__ */ React23.createElement(Animated.View, { style: { transform: [{ scale }], opacity: disabled ? 0.45 : 1 } }, /* @__PURE__ */ React23.createElement(
|
|
1555
1610
|
TouchableOpacity,
|
|
1556
1611
|
{
|
|
1557
1612
|
style: [
|
|
@@ -1574,125 +1629,169 @@ function Select({
|
|
|
1574
1629
|
styles20.triggerText,
|
|
1575
1630
|
{ color: selected ? colors.foreground : colors.mutedForeground }
|
|
1576
1631
|
],
|
|
1577
|
-
numberOfLines: 1
|
|
1632
|
+
numberOfLines: 1,
|
|
1633
|
+
allowFontScaling: true
|
|
1578
1634
|
},
|
|
1579
1635
|
selected?.label ?? placeholder
|
|
1580
1636
|
),
|
|
1581
|
-
/* @__PURE__ */ React23.createElement(
|
|
1582
|
-
))
|
|
1583
|
-
|
|
1637
|
+
/* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-with-circle-down", size: 20, color: colors.mutedForeground })
|
|
1638
|
+
)) : null, isIOS ? /* @__PURE__ */ React23.createElement(
|
|
1639
|
+
Modal,
|
|
1584
1640
|
{
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
backgroundStyle: [styles20.sheetBackground, { backgroundColor: colors.card }],
|
|
1590
|
-
handleIndicatorStyle: [styles20.sheetHandle, { backgroundColor: colors.border }]
|
|
1641
|
+
visible: pickerVisible,
|
|
1642
|
+
transparent: true,
|
|
1643
|
+
animationType: "slide",
|
|
1644
|
+
onRequestClose: handleDismiss
|
|
1591
1645
|
},
|
|
1592
|
-
/* @__PURE__ */ React23.createElement(
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1646
|
+
/* @__PURE__ */ React23.createElement(TouchableOpacity, { style: styles20.iosBackdrop, activeOpacity: 1, onPress: handleDismiss }),
|
|
1647
|
+
/* @__PURE__ */ React23.createElement(View, { style: [styles20.iosSheet, { backgroundColor: colors.card }] }, /* @__PURE__ */ React23.createElement(View, { style: [styles20.iosToolbar, { borderBottomColor: colors.border }] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles20.iosToolbarTitle, { color: colors.foreground }], allowFontScaling: true }, label) : /* @__PURE__ */ React23.createElement(View, null), /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: handleConfirm, style: styles20.iosDoneBtn, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 } }, /* @__PURE__ */ React23.createElement(Text, { style: [styles20.iosDoneBtnText, { color: colors.primary }], allowFontScaling: true }, "Done"))), /* @__PURE__ */ React23.createElement(
|
|
1648
|
+
Picker,
|
|
1649
|
+
{
|
|
1650
|
+
selectedValue: pendingValue ?? "",
|
|
1651
|
+
onValueChange: (val) => setPendingValue(val),
|
|
1652
|
+
itemStyle: { color: colors.foreground }
|
|
1653
|
+
},
|
|
1654
|
+
!value ? /* @__PURE__ */ React23.createElement(Picker.Item, { label: placeholder, value: "", color: colors.mutedForeground, enabled: false }) : null,
|
|
1655
|
+
options.map((o) => /* @__PURE__ */ React23.createElement(
|
|
1656
|
+
Picker.Item,
|
|
1596
1657
|
{
|
|
1597
|
-
key:
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1658
|
+
key: o.value,
|
|
1659
|
+
label: o.label,
|
|
1660
|
+
value: o.value,
|
|
1661
|
+
enabled: !o.disabled,
|
|
1662
|
+
color: o.disabled ? colors.mutedForeground : colors.foreground
|
|
1663
|
+
}
|
|
1664
|
+
))
|
|
1665
|
+
))
|
|
1666
|
+
) : null, isAndroid ? /* @__PURE__ */ React23.createElement(
|
|
1667
|
+
Picker,
|
|
1668
|
+
{
|
|
1669
|
+
ref: pickerRef,
|
|
1670
|
+
selectedValue: value ?? "",
|
|
1671
|
+
onValueChange: (val) => {
|
|
1672
|
+
if (val !== "") {
|
|
1673
|
+
Haptics12.selectionAsync();
|
|
1674
|
+
onValueChange?.(val);
|
|
1675
|
+
}
|
|
1676
|
+
},
|
|
1677
|
+
mode: "dialog",
|
|
1678
|
+
enabled: !disabled,
|
|
1679
|
+
prompt: label,
|
|
1680
|
+
style: styles20.androidHiddenPicker
|
|
1681
|
+
},
|
|
1682
|
+
!value ? /* @__PURE__ */ React23.createElement(Picker.Item, { label: placeholder, value: "", enabled: false }) : null,
|
|
1683
|
+
options.map((o) => /* @__PURE__ */ React23.createElement(
|
|
1684
|
+
Picker.Item,
|
|
1685
|
+
{
|
|
1686
|
+
key: o.value,
|
|
1687
|
+
label: o.label,
|
|
1688
|
+
value: o.value,
|
|
1689
|
+
enabled: !o.disabled
|
|
1690
|
+
}
|
|
1691
|
+
))
|
|
1692
|
+
) : null, isWeb ? /* @__PURE__ */ React23.createElement(
|
|
1693
|
+
Picker,
|
|
1694
|
+
{
|
|
1695
|
+
selectedValue: value ?? "",
|
|
1696
|
+
onValueChange: (val) => {
|
|
1697
|
+
if (val !== "") {
|
|
1698
|
+
onValueChange?.(val);
|
|
1699
|
+
}
|
|
1700
|
+
},
|
|
1701
|
+
enabled: !disabled,
|
|
1702
|
+
style: [
|
|
1703
|
+
styles20.webPicker,
|
|
1704
|
+
{
|
|
1705
|
+
borderColor: error ? colors.destructive : colors.border,
|
|
1706
|
+
color: selected ? colors.foreground : colors.mutedForeground,
|
|
1707
|
+
backgroundColor: colors.background,
|
|
1708
|
+
opacity: disabled ? 0.45 : 1
|
|
1709
|
+
}
|
|
1710
|
+
]
|
|
1711
|
+
},
|
|
1712
|
+
/* @__PURE__ */ React23.createElement(Picker.Item, { label: placeholder, value: "", enabled: false }),
|
|
1713
|
+
options.map((o) => /* @__PURE__ */ React23.createElement(
|
|
1714
|
+
Picker.Item,
|
|
1715
|
+
{
|
|
1716
|
+
key: o.value,
|
|
1717
|
+
label: o.label,
|
|
1718
|
+
value: o.value,
|
|
1719
|
+
enabled: !o.disabled
|
|
1720
|
+
}
|
|
1721
|
+
))
|
|
1722
|
+
) : null, error ? /* @__PURE__ */ React23.createElement(Text, { style: [styles20.helperText, { color: colors.destructive }] }, error) : null);
|
|
1628
1723
|
}
|
|
1629
1724
|
var styles20 = StyleSheet.create({
|
|
1630
1725
|
container: {
|
|
1631
|
-
gap:
|
|
1726
|
+
gap: 8
|
|
1632
1727
|
},
|
|
1633
1728
|
label: {
|
|
1634
1729
|
fontSize: 15,
|
|
1635
|
-
fontWeight: "500"
|
|
1636
|
-
marginBottom: 2
|
|
1730
|
+
fontWeight: "500"
|
|
1637
1731
|
},
|
|
1638
1732
|
trigger: {
|
|
1639
1733
|
flexDirection: "row",
|
|
1640
1734
|
alignItems: "center",
|
|
1641
1735
|
justifyContent: "space-between",
|
|
1642
1736
|
borderWidth: 1.5,
|
|
1643
|
-
borderRadius:
|
|
1644
|
-
paddingHorizontal:
|
|
1645
|
-
paddingVertical:
|
|
1737
|
+
borderRadius: 8,
|
|
1738
|
+
paddingHorizontal: 16,
|
|
1739
|
+
paddingVertical: 14,
|
|
1740
|
+
shadowColor: "#000",
|
|
1741
|
+
shadowOffset: { width: 0, height: 1 },
|
|
1742
|
+
shadowOpacity: 0.04,
|
|
1743
|
+
shadowRadius: 2,
|
|
1744
|
+
elevation: 1
|
|
1646
1745
|
},
|
|
1647
1746
|
triggerText: {
|
|
1648
1747
|
fontSize: 17,
|
|
1649
1748
|
flex: 1
|
|
1650
1749
|
},
|
|
1651
1750
|
chevron: {
|
|
1652
|
-
fontSize: 16,
|
|
1653
1751
|
marginLeft: 8
|
|
1654
1752
|
},
|
|
1655
1753
|
helperText: {
|
|
1656
1754
|
fontSize: 13
|
|
1657
1755
|
},
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
},
|
|
1662
|
-
sheetHandle: {
|
|
1663
|
-
width: 36,
|
|
1664
|
-
height: 4,
|
|
1665
|
-
borderRadius: 2
|
|
1666
|
-
},
|
|
1667
|
-
sheetContent: {
|
|
1668
|
-
paddingHorizontal: 20,
|
|
1669
|
-
paddingBottom: 36
|
|
1756
|
+
iosBackdrop: {
|
|
1757
|
+
flex: 1,
|
|
1758
|
+
backgroundColor: "rgba(0,0,0,0.4)"
|
|
1670
1759
|
},
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
paddingHorizontal: 4
|
|
1760
|
+
iosSheet: {
|
|
1761
|
+
borderTopLeftRadius: 16,
|
|
1762
|
+
borderTopRightRadius: 16,
|
|
1763
|
+
paddingBottom: 32
|
|
1676
1764
|
},
|
|
1677
|
-
|
|
1765
|
+
iosToolbar: {
|
|
1678
1766
|
flexDirection: "row",
|
|
1679
1767
|
alignItems: "center",
|
|
1680
1768
|
justifyContent: "space-between",
|
|
1681
1769
|
paddingHorizontal: 16,
|
|
1682
|
-
paddingVertical:
|
|
1683
|
-
|
|
1770
|
+
paddingVertical: 12,
|
|
1771
|
+
borderBottomWidth: 1
|
|
1684
1772
|
},
|
|
1685
|
-
|
|
1773
|
+
iosToolbarTitle: {
|
|
1686
1774
|
fontSize: 17,
|
|
1687
|
-
|
|
1775
|
+
fontWeight: "600"
|
|
1688
1776
|
},
|
|
1689
|
-
|
|
1690
|
-
|
|
1777
|
+
iosDoneBtn: {
|
|
1778
|
+
padding: 4
|
|
1691
1779
|
},
|
|
1692
|
-
|
|
1693
|
-
fontSize:
|
|
1694
|
-
fontWeight: "600"
|
|
1695
|
-
|
|
1780
|
+
iosDoneBtnText: {
|
|
1781
|
+
fontSize: 17,
|
|
1782
|
+
fontWeight: "600"
|
|
1783
|
+
},
|
|
1784
|
+
androidHiddenPicker: {
|
|
1785
|
+
height: 0,
|
|
1786
|
+
opacity: 0,
|
|
1787
|
+
position: "absolute"
|
|
1788
|
+
},
|
|
1789
|
+
webPicker: {
|
|
1790
|
+
borderWidth: 1.5,
|
|
1791
|
+
borderRadius: 8,
|
|
1792
|
+
paddingHorizontal: 16,
|
|
1793
|
+
paddingVertical: 14,
|
|
1794
|
+
fontSize: 17
|
|
1696
1795
|
}
|
|
1697
1796
|
});
|
|
1698
1797
|
var ToastContext = createContext({
|
|
@@ -1750,8 +1849,9 @@ function ToastNotification({ item, onDismiss }) {
|
|
|
1750
1849
|
destructive: colors.destructiveForeground,
|
|
1751
1850
|
success: colors.successForeground
|
|
1752
1851
|
}[item.variant ?? "default"];
|
|
1753
|
-
const
|
|
1754
|
-
|
|
1852
|
+
const defaultIcon = item.variant === "success" ? /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 22, color: textColor }) : item.variant === "destructive" ? /* @__PURE__ */ React23.createElement(MaterialIcons, { name: "error-outline", size: 24, color: textColor }) : /* @__PURE__ */ React23.createElement(Entypo, { name: "info-with-circle", size: 22, color: textColor });
|
|
1853
|
+
const leftIcon = item.icon ?? defaultIcon;
|
|
1854
|
+
return /* @__PURE__ */ React23.createElement(GestureDetector, { gesture: panGesture }, /* @__PURE__ */ React23.createElement(ReanimatedAnimated.View, { style: [styles21.toast, { backgroundColor: bgColor }, animatedStyle] }, /* @__PURE__ */ React23.createElement(View, { style: styles21.leftIconContainer }, leftIcon), /* @__PURE__ */ React23.createElement(View, { style: styles21.toastContent }, item.title ? /* @__PURE__ */ React23.createElement(Text, { style: [styles21.toastTitle, { color: textColor }] }, item.title) : null, item.description ? /* @__PURE__ */ React23.createElement(Text, { style: [styles21.toastDescription, { color: textColor, opacity: 0.85 }] }, item.description) : null), /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: onDismiss, style: styles21.dismissButton, touchSoundDisabled: true }, /* @__PURE__ */ React23.createElement(AntDesign, { name: "close-circle", size: 18, color: textColor }))));
|
|
1755
1855
|
}
|
|
1756
1856
|
function ToastProvider({ children }) {
|
|
1757
1857
|
const [toasts, setToasts] = useState([]);
|
|
@@ -1759,18 +1859,18 @@ function ToastProvider({ children }) {
|
|
|
1759
1859
|
const toast = useCallback((item) => {
|
|
1760
1860
|
const id = Math.random().toString(36).slice(2);
|
|
1761
1861
|
if (item.variant === "success") {
|
|
1762
|
-
|
|
1862
|
+
Haptics12.notificationAsync(Haptics12.NotificationFeedbackType.Success);
|
|
1763
1863
|
} else if (item.variant === "destructive") {
|
|
1764
|
-
|
|
1864
|
+
Haptics12.notificationAsync(Haptics12.NotificationFeedbackType.Error);
|
|
1765
1865
|
} else {
|
|
1766
|
-
|
|
1866
|
+
Haptics12.impactAsync(Haptics12.ImpactFeedbackStyle.Light);
|
|
1767
1867
|
}
|
|
1768
1868
|
setToasts((prev) => [{ ...item, id }, ...prev].slice(0, 3));
|
|
1769
1869
|
}, []);
|
|
1770
1870
|
const dismiss = useCallback((id) => {
|
|
1771
1871
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
1772
1872
|
}, []);
|
|
1773
|
-
return /* @__PURE__ */ React23.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React23.createElement(View, { style: [styles21.container, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React23.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
|
|
1873
|
+
return /* @__PURE__ */ React23.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React23.createElement(View, { style: [styles21.container, Platform.OS === "web" && styles21.containerWeb, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React23.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
|
|
1774
1874
|
}
|
|
1775
1875
|
var styles21 = StyleSheet.create({
|
|
1776
1876
|
container: {
|
|
@@ -1780,6 +1880,12 @@ var styles21 = StyleSheet.create({
|
|
|
1780
1880
|
gap: 8,
|
|
1781
1881
|
zIndex: 9999
|
|
1782
1882
|
},
|
|
1883
|
+
containerWeb: {
|
|
1884
|
+
left: void 0,
|
|
1885
|
+
right: void 0,
|
|
1886
|
+
alignSelf: "center",
|
|
1887
|
+
width: 400
|
|
1888
|
+
},
|
|
1783
1889
|
toast: {
|
|
1784
1890
|
flexDirection: "row",
|
|
1785
1891
|
alignItems: "center",
|
|
@@ -1797,15 +1903,11 @@ var styles21 = StyleSheet.create({
|
|
|
1797
1903
|
gap: 4
|
|
1798
1904
|
},
|
|
1799
1905
|
leftIconContainer: {
|
|
1800
|
-
width:
|
|
1906
|
+
width: 40,
|
|
1801
1907
|
alignItems: "center",
|
|
1802
1908
|
justifyContent: "center",
|
|
1803
1909
|
marginRight: 8
|
|
1804
1910
|
},
|
|
1805
|
-
defaultIcon: {
|
|
1806
|
-
fontSize: 22,
|
|
1807
|
-
fontWeight: "700"
|
|
1808
|
-
},
|
|
1809
1911
|
toastTitle: {
|
|
1810
1912
|
fontSize: 15,
|
|
1811
1913
|
fontWeight: "600"
|
|
@@ -1814,11 +1916,8 @@ var styles21 = StyleSheet.create({
|
|
|
1814
1916
|
fontSize: 14
|
|
1815
1917
|
},
|
|
1816
1918
|
dismissButton: {
|
|
1817
|
-
padding:
|
|
1919
|
+
padding: 8,
|
|
1818
1920
|
marginLeft: 4
|
|
1819
|
-
},
|
|
1820
|
-
dismissIcon: {
|
|
1821
|
-
fontSize: 14
|
|
1822
1921
|
}
|
|
1823
1922
|
});
|
|
1824
1923
|
function formatCurrency(raw, separator) {
|
|
@@ -1832,12 +1931,14 @@ function CurrencyInput({
|
|
|
1832
1931
|
onChangeValue,
|
|
1833
1932
|
prefix = "$",
|
|
1834
1933
|
thousandsSeparator = ".",
|
|
1934
|
+
size = "default",
|
|
1835
1935
|
label,
|
|
1836
1936
|
error,
|
|
1837
1937
|
hint,
|
|
1838
1938
|
placeholder,
|
|
1839
1939
|
editable,
|
|
1840
|
-
containerStyle
|
|
1940
|
+
containerStyle,
|
|
1941
|
+
style
|
|
1841
1942
|
}) {
|
|
1842
1943
|
const handleChange = (text) => {
|
|
1843
1944
|
const withoutPrefix = prefix && text.startsWith(prefix) ? text.slice(prefix.length) : text;
|
|
@@ -1848,6 +1949,7 @@ function CurrencyInput({
|
|
|
1848
1949
|
const raw = parseFloat(formatted.replace(separatorRegex, "") || "0");
|
|
1849
1950
|
onChangeValue?.(isNaN(raw) ? 0 : raw);
|
|
1850
1951
|
};
|
|
1952
|
+
const inputStyle = size === "large" ? { fontSize: 36 } : {};
|
|
1851
1953
|
return /* @__PURE__ */ React23.createElement(
|
|
1852
1954
|
Input,
|
|
1853
1955
|
{
|
|
@@ -1859,7 +1961,8 @@ function CurrencyInput({
|
|
|
1859
1961
|
hint,
|
|
1860
1962
|
placeholder: placeholder ?? `${prefix}0`,
|
|
1861
1963
|
editable,
|
|
1862
|
-
containerStyle
|
|
1964
|
+
containerStyle,
|
|
1965
|
+
style: [inputStyle, style]
|
|
1863
1966
|
}
|
|
1864
1967
|
);
|
|
1865
1968
|
}
|
|
@@ -1887,58 +1990,32 @@ var styles22 = StyleSheet.create({
|
|
|
1887
1990
|
fontWeight: "700"
|
|
1888
1991
|
}
|
|
1889
1992
|
});
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1993
|
+
var nativeDriver4 = Platform.OS !== "web";
|
|
1994
|
+
function ListItem({
|
|
1995
|
+
leftRender,
|
|
1996
|
+
rightRender,
|
|
1997
|
+
trailing,
|
|
1998
|
+
icon,
|
|
1999
|
+
title,
|
|
2000
|
+
subtitle,
|
|
2001
|
+
caption,
|
|
2002
|
+
variant = "plain",
|
|
2003
|
+
showChevron = false,
|
|
2004
|
+
showSeparator = false,
|
|
2005
|
+
onPress,
|
|
2006
|
+
disabled,
|
|
2007
|
+
style,
|
|
2008
|
+
titleStyle,
|
|
2009
|
+
subtitleStyle,
|
|
2010
|
+
captionStyle
|
|
1907
2011
|
}) {
|
|
1908
|
-
const handleChange = (text) => {
|
|
1909
|
-
const withoutPrefix = prefix && text.startsWith(prefix) ? text.slice(prefix.length) : text;
|
|
1910
|
-
const formatted = formatCurrency2(withoutPrefix, thousandsSeparator);
|
|
1911
|
-
const display = formatted ? `${prefix}${formatted}` : "";
|
|
1912
|
-
onChangeText?.(display);
|
|
1913
|
-
const separatorRegex = new RegExp(`\\${thousandsSeparator}`, "g");
|
|
1914
|
-
const raw = parseFloat(formatted.replace(separatorRegex, "") || "0");
|
|
1915
|
-
onChangeValue?.(isNaN(raw) ? 0 : raw);
|
|
1916
|
-
};
|
|
1917
|
-
return /* @__PURE__ */ React23.createElement(
|
|
1918
|
-
Input,
|
|
1919
|
-
{
|
|
1920
|
-
value,
|
|
1921
|
-
onChangeText: handleChange,
|
|
1922
|
-
keyboardType: "numeric",
|
|
1923
|
-
label,
|
|
1924
|
-
error,
|
|
1925
|
-
hint,
|
|
1926
|
-
placeholder: placeholder ?? `${prefix}0`,
|
|
1927
|
-
editable,
|
|
1928
|
-
containerStyle,
|
|
1929
|
-
style: { fontSize: 36 }
|
|
1930
|
-
}
|
|
1931
|
-
);
|
|
1932
|
-
}
|
|
1933
|
-
var nativeDriver3 = Platform.OS !== "web";
|
|
1934
|
-
function ListItem({ icon, title, subtitle, trailing, onPress, disabled, style }) {
|
|
1935
2012
|
const { colors } = useTheme();
|
|
1936
2013
|
const scale = useRef(new Animated.Value(1)).current;
|
|
1937
2014
|
const handlePressIn = () => {
|
|
1938
2015
|
if (!onPress || disabled) return;
|
|
1939
2016
|
Animated.spring(scale, {
|
|
1940
2017
|
toValue: 0.97,
|
|
1941
|
-
useNativeDriver:
|
|
2018
|
+
useNativeDriver: nativeDriver4,
|
|
1942
2019
|
speed: 40,
|
|
1943
2020
|
bounciness: 0
|
|
1944
2021
|
}).start();
|
|
@@ -1946,19 +2023,32 @@ function ListItem({ icon, title, subtitle, trailing, onPress, disabled, style })
|
|
|
1946
2023
|
const handlePressOut = () => {
|
|
1947
2024
|
Animated.spring(scale, {
|
|
1948
2025
|
toValue: 1,
|
|
1949
|
-
useNativeDriver:
|
|
2026
|
+
useNativeDriver: nativeDriver4,
|
|
1950
2027
|
speed: 40,
|
|
1951
2028
|
bounciness: 4
|
|
1952
2029
|
}).start();
|
|
1953
2030
|
};
|
|
1954
2031
|
const handlePress = () => {
|
|
1955
|
-
|
|
2032
|
+
Haptics12.selectionAsync();
|
|
1956
2033
|
onPress?.();
|
|
1957
2034
|
};
|
|
2035
|
+
const effectiveLeft = leftRender ?? icon;
|
|
2036
|
+
const effectiveRight = rightRender ?? trailing;
|
|
2037
|
+
const cardStyle = variant === "card" ? {
|
|
2038
|
+
backgroundColor: colors.card,
|
|
2039
|
+
borderRadius: 12,
|
|
2040
|
+
borderWidth: 1,
|
|
2041
|
+
borderColor: colors.border,
|
|
2042
|
+
shadowColor: "#000",
|
|
2043
|
+
shadowOffset: { width: 0, height: 2 },
|
|
2044
|
+
shadowOpacity: 0.06,
|
|
2045
|
+
shadowRadius: 6,
|
|
2046
|
+
elevation: 2
|
|
2047
|
+
} : {};
|
|
1958
2048
|
return /* @__PURE__ */ React23.createElement(Animated.View, { style: [{ transform: [{ scale }] }, disabled && styles23.disabled] }, /* @__PURE__ */ React23.createElement(
|
|
1959
2049
|
TouchableOpacity,
|
|
1960
2050
|
{
|
|
1961
|
-
style: [styles23.container, style],
|
|
2051
|
+
style: [styles23.container, cardStyle, style],
|
|
1962
2052
|
onPress: onPress ? handlePress : void 0,
|
|
1963
2053
|
onPressIn: handlePressIn,
|
|
1964
2054
|
onPressOut: handlePressOut,
|
|
@@ -1966,10 +2056,49 @@ function ListItem({ icon, title, subtitle, trailing, onPress, disabled, style })
|
|
|
1966
2056
|
activeOpacity: 1,
|
|
1967
2057
|
touchSoundDisabled: true
|
|
1968
2058
|
},
|
|
1969
|
-
|
|
1970
|
-
/* @__PURE__ */ React23.createElement(View, { style: styles23.content }, /* @__PURE__ */ React23.createElement(
|
|
1971
|
-
|
|
1972
|
-
|
|
2059
|
+
effectiveLeft ? /* @__PURE__ */ React23.createElement(View, { style: styles23.leftContainer }, effectiveLeft) : null,
|
|
2060
|
+
/* @__PURE__ */ React23.createElement(View, { style: styles23.content }, /* @__PURE__ */ React23.createElement(
|
|
2061
|
+
Text,
|
|
2062
|
+
{
|
|
2063
|
+
style: [styles23.title, { color: colors.foreground }, titleStyle],
|
|
2064
|
+
numberOfLines: 2,
|
|
2065
|
+
allowFontScaling: true
|
|
2066
|
+
},
|
|
2067
|
+
title
|
|
2068
|
+
), subtitle ? /* @__PURE__ */ React23.createElement(
|
|
2069
|
+
Text,
|
|
2070
|
+
{
|
|
2071
|
+
style: [styles23.subtitle, { color: colors.mutedForeground }, subtitleStyle],
|
|
2072
|
+
numberOfLines: 2,
|
|
2073
|
+
allowFontScaling: true
|
|
2074
|
+
},
|
|
2075
|
+
subtitle
|
|
2076
|
+
) : null, caption ? /* @__PURE__ */ React23.createElement(
|
|
2077
|
+
Text,
|
|
2078
|
+
{
|
|
2079
|
+
style: [styles23.caption, { color: colors.mutedForeground }, captionStyle],
|
|
2080
|
+
numberOfLines: 1,
|
|
2081
|
+
allowFontScaling: true
|
|
2082
|
+
},
|
|
2083
|
+
caption
|
|
2084
|
+
) : null),
|
|
2085
|
+
effectiveRight !== void 0 ? /* @__PURE__ */ React23.createElement(View, { style: styles23.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React23.createElement(
|
|
2086
|
+
Text,
|
|
2087
|
+
{
|
|
2088
|
+
style: [styles23.rightText, { color: colors.mutedForeground }],
|
|
2089
|
+
allowFontScaling: true
|
|
2090
|
+
},
|
|
2091
|
+
effectiveRight
|
|
2092
|
+
) : effectiveRight) : showChevron ? /* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-with-circle-right", size: 20, color: colors.mutedForeground }) : null
|
|
2093
|
+
), showSeparator ? /* @__PURE__ */ React23.createElement(
|
|
2094
|
+
View,
|
|
2095
|
+
{
|
|
2096
|
+
style: [
|
|
2097
|
+
styles23.separator,
|
|
2098
|
+
{ backgroundColor: colors.border, marginLeft: effectiveLeft ? 16 + 44 + 12 : 16 }
|
|
2099
|
+
]
|
|
2100
|
+
}
|
|
2101
|
+
) : null);
|
|
1973
2102
|
}
|
|
1974
2103
|
var styles23 = StyleSheet.create({
|
|
1975
2104
|
container: {
|
|
@@ -1979,31 +2108,54 @@ var styles23 = StyleSheet.create({
|
|
|
1979
2108
|
paddingVertical: 14,
|
|
1980
2109
|
gap: 12
|
|
1981
2110
|
},
|
|
1982
|
-
|
|
2111
|
+
leftContainer: {
|
|
2112
|
+
width: 44,
|
|
2113
|
+
height: 44,
|
|
1983
2114
|
alignItems: "center",
|
|
1984
|
-
justifyContent: "center"
|
|
2115
|
+
justifyContent: "center",
|
|
2116
|
+
flexShrink: 0
|
|
1985
2117
|
},
|
|
1986
2118
|
content: {
|
|
1987
2119
|
flex: 1,
|
|
1988
|
-
gap:
|
|
2120
|
+
gap: 4
|
|
1989
2121
|
},
|
|
1990
2122
|
title: {
|
|
1991
|
-
fontSize:
|
|
2123
|
+
fontSize: 17,
|
|
1992
2124
|
fontWeight: "500",
|
|
1993
|
-
lineHeight:
|
|
2125
|
+
lineHeight: 24
|
|
1994
2126
|
},
|
|
1995
2127
|
subtitle: {
|
|
1996
|
-
fontSize:
|
|
1997
|
-
|
|
2128
|
+
fontSize: 14,
|
|
2129
|
+
fontWeight: "400",
|
|
2130
|
+
lineHeight: 20
|
|
2131
|
+
},
|
|
2132
|
+
caption: {
|
|
2133
|
+
fontSize: 12,
|
|
2134
|
+
fontWeight: "400",
|
|
2135
|
+
lineHeight: 16,
|
|
2136
|
+
opacity: 0.7
|
|
1998
2137
|
},
|
|
1999
|
-
|
|
2138
|
+
rightContainer: {
|
|
2139
|
+
alignItems: "flex-end",
|
|
2140
|
+
justifyContent: "center",
|
|
2141
|
+
flexShrink: 0,
|
|
2142
|
+
maxWidth: 160
|
|
2143
|
+
},
|
|
2144
|
+
rightText: {
|
|
2000
2145
|
fontSize: 15
|
|
2001
2146
|
},
|
|
2147
|
+
chevron: {
|
|
2148
|
+
marginLeft: 4
|
|
2149
|
+
},
|
|
2150
|
+
separator: {
|
|
2151
|
+
height: StyleSheet.hairlineWidth,
|
|
2152
|
+
marginRight: 16
|
|
2153
|
+
},
|
|
2002
2154
|
disabled: {
|
|
2003
2155
|
opacity: 0.45
|
|
2004
2156
|
}
|
|
2005
2157
|
});
|
|
2006
|
-
var
|
|
2158
|
+
var nativeDriver5 = Platform.OS !== "web";
|
|
2007
2159
|
function Chip({ label, selected = false, onPress, style }) {
|
|
2008
2160
|
const { colors } = useTheme();
|
|
2009
2161
|
const scale = useRef(new Animated.Value(1)).current;
|
|
@@ -2019,7 +2171,7 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2019
2171
|
const handlePressIn = () => {
|
|
2020
2172
|
Animated.spring(scale, {
|
|
2021
2173
|
toValue: 0.95,
|
|
2022
|
-
useNativeDriver:
|
|
2174
|
+
useNativeDriver: nativeDriver5,
|
|
2023
2175
|
speed: 40,
|
|
2024
2176
|
bounciness: 0
|
|
2025
2177
|
}).start();
|
|
@@ -2027,13 +2179,13 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2027
2179
|
const handlePressOut = () => {
|
|
2028
2180
|
Animated.spring(scale, {
|
|
2029
2181
|
toValue: 1,
|
|
2030
|
-
useNativeDriver:
|
|
2182
|
+
useNativeDriver: nativeDriver5,
|
|
2031
2183
|
speed: 40,
|
|
2032
2184
|
bounciness: 4
|
|
2033
2185
|
}).start();
|
|
2034
2186
|
};
|
|
2035
2187
|
const handlePress = () => {
|
|
2036
|
-
|
|
2188
|
+
Haptics12.selectionAsync();
|
|
2037
2189
|
onPress?.();
|
|
2038
2190
|
};
|
|
2039
2191
|
const backgroundColor = pressAnim.interpolate({
|
|
@@ -2060,14 +2212,35 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2060
2212
|
/* @__PURE__ */ React23.createElement(Animated.View, { style: [styles24.chip, { backgroundColor, borderColor }] }, /* @__PURE__ */ React23.createElement(Animated.Text, { style: [styles24.label, { color: textColor }], allowFontScaling: true }, label))
|
|
2061
2213
|
));
|
|
2062
2214
|
}
|
|
2063
|
-
function ChipGroup({ options, value, onValueChange, style }) {
|
|
2215
|
+
function ChipGroup({ options, value, onValueChange, multiSelect = false, style }) {
|
|
2216
|
+
const handlePress = (optionValue) => {
|
|
2217
|
+
if (!multiSelect) {
|
|
2218
|
+
onValueChange?.(optionValue);
|
|
2219
|
+
return;
|
|
2220
|
+
}
|
|
2221
|
+
const currentArray = Array.isArray(value) ? value : value ? [value] : [];
|
|
2222
|
+
const isSelected2 = currentArray.includes(optionValue);
|
|
2223
|
+
let newArray;
|
|
2224
|
+
if (isSelected2) {
|
|
2225
|
+
newArray = currentArray.filter((v) => v !== optionValue);
|
|
2226
|
+
} else {
|
|
2227
|
+
newArray = [...currentArray, optionValue];
|
|
2228
|
+
}
|
|
2229
|
+
onValueChange?.(newArray);
|
|
2230
|
+
};
|
|
2231
|
+
const isSelected = (optionValue) => {
|
|
2232
|
+
if (Array.isArray(value)) {
|
|
2233
|
+
return value.includes(optionValue);
|
|
2234
|
+
}
|
|
2235
|
+
return optionValue === value;
|
|
2236
|
+
};
|
|
2064
2237
|
return /* @__PURE__ */ React23.createElement(View, { style: [styles24.group, style] }, options.map((opt) => /* @__PURE__ */ React23.createElement(
|
|
2065
2238
|
Chip,
|
|
2066
2239
|
{
|
|
2067
2240
|
key: opt.value,
|
|
2068
2241
|
label: opt.label,
|
|
2069
|
-
selected: opt.value
|
|
2070
|
-
onPress: () =>
|
|
2242
|
+
selected: isSelected(opt.value),
|
|
2243
|
+
onPress: () => handlePress(opt.value)
|
|
2071
2244
|
}
|
|
2072
2245
|
)));
|
|
2073
2246
|
}
|
|
@@ -2187,7 +2360,7 @@ var MONTH_NAMES = [
|
|
|
2187
2360
|
function MonthPicker({ value, onChange, style }) {
|
|
2188
2361
|
const { colors } = useTheme();
|
|
2189
2362
|
const handlePrev = () => {
|
|
2190
|
-
|
|
2363
|
+
Haptics12.selectionAsync();
|
|
2191
2364
|
if (value.month === 1) {
|
|
2192
2365
|
onChange({ month: 12, year: value.year - 1 });
|
|
2193
2366
|
} else {
|
|
@@ -2195,7 +2368,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2195
2368
|
}
|
|
2196
2369
|
};
|
|
2197
2370
|
const handleNext = () => {
|
|
2198
|
-
|
|
2371
|
+
Haptics12.selectionAsync();
|
|
2199
2372
|
if (value.month === 12) {
|
|
2200
2373
|
onChange({ month: 1, year: value.year + 1 });
|
|
2201
2374
|
} else {
|
|
@@ -2210,7 +2383,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2210
2383
|
activeOpacity: 0.6,
|
|
2211
2384
|
touchSoundDisabled: true
|
|
2212
2385
|
},
|
|
2213
|
-
/* @__PURE__ */ React23.createElement(
|
|
2386
|
+
/* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-left", size: 22, color: colors.foreground })
|
|
2214
2387
|
), /* @__PURE__ */ React23.createElement(Text, { style: [styles27.label, { color: colors.foreground }], allowFontScaling: true }, MONTH_NAMES[value.month - 1], " ", value.year), /* @__PURE__ */ React23.createElement(
|
|
2215
2388
|
TouchableOpacity,
|
|
2216
2389
|
{
|
|
@@ -2219,7 +2392,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2219
2392
|
activeOpacity: 0.6,
|
|
2220
2393
|
touchSoundDisabled: true
|
|
2221
2394
|
},
|
|
2222
|
-
/* @__PURE__ */ React23.createElement(
|
|
2395
|
+
/* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-right", size: 22, color: colors.foreground })
|
|
2223
2396
|
));
|
|
2224
2397
|
}
|
|
2225
2398
|
var styles27 = StyleSheet.create({
|
|
@@ -2234,10 +2407,6 @@ var styles27 = StyleSheet.create({
|
|
|
2234
2407
|
alignItems: "center",
|
|
2235
2408
|
justifyContent: "center"
|
|
2236
2409
|
},
|
|
2237
|
-
arrowText: {
|
|
2238
|
-
fontSize: 24,
|
|
2239
|
-
lineHeight: 30
|
|
2240
|
-
},
|
|
2241
2410
|
label: {
|
|
2242
2411
|
fontSize: 17,
|
|
2243
2412
|
fontWeight: "500",
|
|
@@ -2247,4 +2416,4 @@ var styles27 = StyleSheet.create({
|
|
|
2247
2416
|
}
|
|
2248
2417
|
});
|
|
2249
2418
|
|
|
2250
|
-
export { Accordion, AlertBanner, Avatar, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Chip, ChipGroup, ConfirmDialog, CurrencyDisplay, CurrencyInput, CurrencyInputLarge, EmptyState, Input, LabelValue, ListItem, MonthPicker, Progress, RadioGroup, Select, Separator, Sheet, Skeleton, Slider, Spinner, Switch, Tabs, TabsContent, Text2 as Text, Textarea, ThemeProvider, ToastProvider, Toggle, defaultDark, defaultLight, useTheme, useToast };
|
|
2419
|
+
export { Accordion, AlertBanner, Avatar, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Chip, ChipGroup, ConfirmDialog, CurrencyDisplay, CurrencyInput, CurrencyInput as CurrencyInputLarge, EmptyState, Input, LabelValue, ListItem, MonthPicker, Progress, RadioGroup, Select, Separator, Sheet, Skeleton, Slider, Spinner, Switch, Tabs, TabsContent, Text2 as Text, Textarea, ThemeProvider, ToastProvider, Toggle, defaultDark, defaultLight, useTheme, useToast };
|