@retray-dev/ui-kit 2.6.0 → 2.8.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 +125 -1
- package/README.md +20 -2
- package/dist/index.d.mts +95 -1
- package/dist/index.d.ts +95 -1
- package/dist/index.js +453 -293
- package/dist/index.mjs +377 -223
- package/package.json +1 -1
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Checkbox/Checkbox.tsx +1 -0
- package/src/components/IconButton/IconButton.tsx +147 -0
- package/src/components/IconButton/index.ts +2 -0
- package/src/components/RadioGroup/RadioGroup.tsx +1 -0
- package/src/components/Select/Select.tsx +2 -2
- package/src/components/Sheet/Sheet.tsx +2 -2
- package/src/components/Tabs/Tabs.tsx +1 -0
- package/src/components/Toast/Toast.tsx +2 -2
- package/src/components/Toggle/Toggle.tsx +1 -1
- package/src/index.ts +18 -0
- package/src/tokens.ts +69 -0
- package/src/utils/haptics.ts +18 -12
- package/src/components/Alert/Alert.tsx +0 -84
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React25, { createContext, useMemo, useContext, useRef, useState, useEffect, useCallback } from 'react';
|
|
2
2
|
import { Platform, StyleSheet, useColorScheme, Animated, TouchableOpacity, ActivityIndicator, Text, View, TextInput, Image, Easing, Modal, Pressable } from 'react-native';
|
|
3
3
|
import { verticalScale, scale, moderateScale, moderateVerticalScale } from 'react-native-size-matters';
|
|
4
4
|
import AntDesign from '@expo/vector-icons/AntDesign';
|
|
@@ -9,7 +9,7 @@ import MaterialIcons from '@expo/vector-icons/MaterialIcons';
|
|
|
9
9
|
import Ionicons from '@expo/vector-icons/Ionicons';
|
|
10
10
|
import { AntDesign as AntDesign$1, Entypo as Entypo$1, FontAwesome5 as FontAwesome5$1, MaterialIcons as MaterialIcons$1 } from '@expo/vector-icons';
|
|
11
11
|
import { LinearGradient } from 'expo-linear-gradient';
|
|
12
|
-
import
|
|
12
|
+
import Animated11, { useSharedValue, useDerivedValue, withTiming, Easing as Easing$1, useAnimatedStyle, withSpring } from 'react-native-reanimated';
|
|
13
13
|
import RNSlider from '@react-native-community/slider';
|
|
14
14
|
import { BottomSheetModal, BottomSheetView, BottomSheetBackdrop } from '@gorhom/bottom-sheet';
|
|
15
15
|
export { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
|
|
@@ -18,12 +18,7 @@ import { scheduleOnRN } from 'react-native-worklets';
|
|
|
18
18
|
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
19
19
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
23
|
-
}) : x)(function(x) {
|
|
24
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
25
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
26
|
-
});
|
|
21
|
+
// src/theme/ThemeProvider.tsx
|
|
27
22
|
|
|
28
23
|
// src/theme/colors.ts
|
|
29
24
|
var defaultLight = {
|
|
@@ -82,7 +77,7 @@ function ThemeProvider({ children, theme, colorScheme = "system" }) {
|
|
|
82
77
|
const override = resolvedScheme === "dark" ? theme?.dark : theme?.light;
|
|
83
78
|
return override ? { ...base, ...override } : base;
|
|
84
79
|
}, [resolvedScheme, theme]);
|
|
85
|
-
return /* @__PURE__ */
|
|
80
|
+
return /* @__PURE__ */ React25.createElement(ThemeContext.Provider, { value: { colors, colorScheme: resolvedScheme } }, children);
|
|
86
81
|
}
|
|
87
82
|
function useTheme() {
|
|
88
83
|
const context = useContext(ThemeContext);
|
|
@@ -91,21 +86,29 @@ function useTheme() {
|
|
|
91
86
|
}
|
|
92
87
|
return context;
|
|
93
88
|
}
|
|
94
|
-
var
|
|
95
|
-
|
|
96
|
-
|
|
89
|
+
var _haptics = null;
|
|
90
|
+
async function getHaptics() {
|
|
91
|
+
if (Platform.OS === "web") return null;
|
|
92
|
+
if (!_haptics) {
|
|
93
|
+
_haptics = await import('expo-haptics');
|
|
94
|
+
}
|
|
95
|
+
return _haptics;
|
|
97
96
|
}
|
|
98
97
|
function selectionAsync() {
|
|
99
|
-
|
|
98
|
+
if (Platform.OS === "web") return;
|
|
99
|
+
getHaptics().then((h) => h?.selectionAsync());
|
|
100
100
|
}
|
|
101
101
|
function impactLight() {
|
|
102
|
-
|
|
102
|
+
if (Platform.OS === "web") return;
|
|
103
|
+
getHaptics().then((h) => h?.impactAsync(h.ImpactFeedbackStyle.Light));
|
|
103
104
|
}
|
|
104
105
|
function notificationSuccess() {
|
|
105
|
-
|
|
106
|
+
if (Platform.OS === "web") return;
|
|
107
|
+
getHaptics().then((h) => h?.notificationAsync(h.NotificationFeedbackType.Success));
|
|
106
108
|
}
|
|
107
109
|
function notificationError() {
|
|
108
|
-
|
|
110
|
+
if (Platform.OS === "web") return;
|
|
111
|
+
getHaptics().then((h) => h?.notificationAsync(h.NotificationFeedbackType.Error));
|
|
109
112
|
}
|
|
110
113
|
var isWeb = Platform.OS === "web";
|
|
111
114
|
var s = isWeb ? (n) => n : scale;
|
|
@@ -146,10 +149,10 @@ function Icon({ name, size, color, family }) {
|
|
|
146
149
|
}
|
|
147
150
|
if (!resolved) return null;
|
|
148
151
|
const Component = resolved.component;
|
|
149
|
-
return
|
|
152
|
+
return React25.createElement(Component, { name, size, color });
|
|
150
153
|
}
|
|
151
154
|
function renderIcon(name, size, color) {
|
|
152
|
-
return
|
|
155
|
+
return React25.createElement(Icon, { name, size, color });
|
|
153
156
|
}
|
|
154
157
|
|
|
155
158
|
// src/components/Button/Button.tsx
|
|
@@ -215,7 +218,7 @@ function Button({
|
|
|
215
218
|
}[variant];
|
|
216
219
|
const effectiveIcon = iconName ? renderIcon(iconName, iconSizeMap[size], iconColor ?? labelVariantStyle.color) : typeof icon === "function" ? icon({ label, size, variant }) : icon;
|
|
217
220
|
const spinnerColor = variant === "destructive" ? colors.destructiveForeground : variant === "primary" || variant === "secondary" ? colors.primaryForeground : colors.foreground;
|
|
218
|
-
return /* @__PURE__ */
|
|
221
|
+
return /* @__PURE__ */ React25.createElement(Animated.View, { style: [fullWidth && styles.fullWidth, { transform: [{ scale: scale2 }] }] }, /* @__PURE__ */ React25.createElement(
|
|
219
222
|
TouchableOpacity,
|
|
220
223
|
{
|
|
221
224
|
style: [
|
|
@@ -234,7 +237,7 @@ function Button({
|
|
|
234
237
|
onPressOut: handlePressOut,
|
|
235
238
|
...props
|
|
236
239
|
},
|
|
237
|
-
loading ? /* @__PURE__ */
|
|
240
|
+
loading ? /* @__PURE__ */ React25.createElement(ActivityIndicator, { size: "small", color: spinnerColor }) : /* @__PURE__ */ React25.createElement(React25.Fragment, null, effectiveIcon && iconPosition === "left" && /* @__PURE__ */ React25.createElement(React25.Fragment, null, effectiveIcon), /* @__PURE__ */ React25.createElement(Text, { style: [styles.label, labelVariantStyle, labelSizeStyles[size], effectiveIcon ? styles.labelWithIcon : void 0], allowFontScaling: true }, label), effectiveIcon && iconPosition === "right" && /* @__PURE__ */ React25.createElement(React25.Fragment, null, effectiveIcon))
|
|
238
241
|
));
|
|
239
242
|
}
|
|
240
243
|
var styles = StyleSheet.create({
|
|
@@ -257,6 +260,96 @@ var styles = StyleSheet.create({
|
|
|
257
260
|
marginHorizontal: s(8)
|
|
258
261
|
}
|
|
259
262
|
});
|
|
263
|
+
var nativeDriver2 = Platform.OS !== "web";
|
|
264
|
+
var sizeMap = {
|
|
265
|
+
sm: { container: s(40), icon: 18 },
|
|
266
|
+
md: { container: s(44), icon: 20 },
|
|
267
|
+
lg: { container: s(52), icon: 24 }
|
|
268
|
+
};
|
|
269
|
+
function IconButton({
|
|
270
|
+
iconName,
|
|
271
|
+
icon,
|
|
272
|
+
iconColor,
|
|
273
|
+
variant = "primary",
|
|
274
|
+
size = "md",
|
|
275
|
+
loading = false,
|
|
276
|
+
disabled,
|
|
277
|
+
style,
|
|
278
|
+
onPress,
|
|
279
|
+
...props
|
|
280
|
+
}) {
|
|
281
|
+
const { colors } = useTheme();
|
|
282
|
+
const isDisabled = disabled || loading;
|
|
283
|
+
const scale2 = useRef(new Animated.Value(1)).current;
|
|
284
|
+
const handlePressIn = () => {
|
|
285
|
+
if (isDisabled) return;
|
|
286
|
+
Animated.spring(scale2, {
|
|
287
|
+
toValue: 0.95,
|
|
288
|
+
useNativeDriver: nativeDriver2,
|
|
289
|
+
speed: 40,
|
|
290
|
+
bounciness: 0
|
|
291
|
+
}).start();
|
|
292
|
+
};
|
|
293
|
+
const handlePressOut = () => {
|
|
294
|
+
Animated.spring(scale2, {
|
|
295
|
+
toValue: 1,
|
|
296
|
+
useNativeDriver: nativeDriver2,
|
|
297
|
+
speed: 40,
|
|
298
|
+
bounciness: 4
|
|
299
|
+
}).start();
|
|
300
|
+
};
|
|
301
|
+
const handlePress = (e) => {
|
|
302
|
+
impactLight();
|
|
303
|
+
onPress?.(e);
|
|
304
|
+
};
|
|
305
|
+
const containerVariantStyle = {
|
|
306
|
+
primary: { backgroundColor: colors.primary },
|
|
307
|
+
secondary: { backgroundColor: colors.secondary },
|
|
308
|
+
outline: { backgroundColor: "transparent", borderWidth: 1.5, borderColor: colors.border },
|
|
309
|
+
ghost: { backgroundColor: "transparent" },
|
|
310
|
+
destructive: { backgroundColor: colors.destructive }
|
|
311
|
+
}[variant];
|
|
312
|
+
const defaultIconColor = {
|
|
313
|
+
primary: colors.primaryForeground,
|
|
314
|
+
secondary: colors.secondaryForeground,
|
|
315
|
+
outline: colors.foreground,
|
|
316
|
+
ghost: colors.foreground,
|
|
317
|
+
destructive: colors.destructiveForeground
|
|
318
|
+
}[variant];
|
|
319
|
+
const spinnerColor = variant === "destructive" ? colors.destructiveForeground : variant === "primary" || variant === "secondary" ? colors.primaryForeground : colors.foreground;
|
|
320
|
+
const { container: containerSize, icon: iconSize } = sizeMap[size];
|
|
321
|
+
const resolvedIcon = iconName ? renderIcon(iconName, iconSize, iconColor ?? defaultIconColor) : icon;
|
|
322
|
+
return /* @__PURE__ */ React25.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25.createElement(
|
|
323
|
+
TouchableOpacity,
|
|
324
|
+
{
|
|
325
|
+
style: [
|
|
326
|
+
styles2.base,
|
|
327
|
+
containerVariantStyle,
|
|
328
|
+
{ width: containerSize, height: containerSize },
|
|
329
|
+
isDisabled && styles2.disabled,
|
|
330
|
+
style
|
|
331
|
+
],
|
|
332
|
+
disabled: isDisabled,
|
|
333
|
+
activeOpacity: 1,
|
|
334
|
+
touchSoundDisabled: true,
|
|
335
|
+
onPress: handlePress,
|
|
336
|
+
onPressIn: handlePressIn,
|
|
337
|
+
onPressOut: handlePressOut,
|
|
338
|
+
...props
|
|
339
|
+
},
|
|
340
|
+
loading ? /* @__PURE__ */ React25.createElement(ActivityIndicator, { size: "small", color: spinnerColor }) : resolvedIcon
|
|
341
|
+
));
|
|
342
|
+
}
|
|
343
|
+
var styles2 = StyleSheet.create({
|
|
344
|
+
base: {
|
|
345
|
+
borderRadius: 999,
|
|
346
|
+
alignItems: "center",
|
|
347
|
+
justifyContent: "center"
|
|
348
|
+
},
|
|
349
|
+
disabled: {
|
|
350
|
+
opacity: 0.5
|
|
351
|
+
}
|
|
352
|
+
});
|
|
260
353
|
var variantStyles = {
|
|
261
354
|
h1: { fontSize: ms(40), fontWeight: "700", lineHeight: mvs(52) },
|
|
262
355
|
h2: { fontSize: ms(28), fontWeight: "700", lineHeight: mvs(36) },
|
|
@@ -268,7 +361,7 @@ var variantStyles = {
|
|
|
268
361
|
function Text2({ variant = "body", color, style, children, ...props }) {
|
|
269
362
|
const { colors } = useTheme();
|
|
270
363
|
const defaultColor = variant === "caption" ? colors.mutedForeground : colors.foreground;
|
|
271
|
-
return /* @__PURE__ */
|
|
364
|
+
return /* @__PURE__ */ React25.createElement(
|
|
272
365
|
Text,
|
|
273
366
|
{
|
|
274
367
|
style: [variantStyles[variant], { color: color ?? defaultColor }, style],
|
|
@@ -286,24 +379,24 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, p
|
|
|
286
379
|
const isPassword = type === "password";
|
|
287
380
|
const effectiveSecure = isPassword ? !showPassword : secureTextEntry;
|
|
288
381
|
const effectivePrefix = prefixIcon ? renderIcon(prefixIcon, 20, prefixIconColor ?? colors.mutedForeground) : prefix;
|
|
289
|
-
const effectiveSuffix = isPassword && !suffix && !suffixIcon ? /* @__PURE__ */
|
|
290
|
-
return /* @__PURE__ */
|
|
382
|
+
const effectiveSuffix = isPassword && !suffix && !suffixIcon ? /* @__PURE__ */ React25.createElement(TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles3.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React25.createElement(AntDesign$1, { name: showPassword ? "eye" : "eye-invisible", size: 20, color: colors.mutedForeground })) : suffixIcon ? renderIcon(suffixIcon, 20, suffixIconColor ?? colors.mutedForeground) : suffix;
|
|
383
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles3.container, containerStyle] }, label ? /* @__PURE__ */ React25.createElement(Text, { style: [styles3.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React25.createElement(
|
|
291
384
|
View,
|
|
292
385
|
{
|
|
293
386
|
style: [
|
|
294
|
-
|
|
387
|
+
styles3.inputWrapper,
|
|
295
388
|
{
|
|
296
389
|
borderColor: error ? colors.destructive : focused ? colors.ring ?? colors.primary : colors.border,
|
|
297
390
|
backgroundColor: colors.background
|
|
298
391
|
}
|
|
299
392
|
]
|
|
300
393
|
},
|
|
301
|
-
effectivePrefix ? typeof effectivePrefix === "string" ? /* @__PURE__ */
|
|
302
|
-
/* @__PURE__ */
|
|
394
|
+
effectivePrefix ? typeof effectivePrefix === "string" ? /* @__PURE__ */ React25.createElement(Text, { style: [styles3.prefixText, { color: colors.mutedForeground }, prefixStyle], allowFontScaling: true }, effectivePrefix) : /* @__PURE__ */ React25.createElement(View, { style: styles3.prefixContainer }, effectivePrefix) : null,
|
|
395
|
+
/* @__PURE__ */ React25.createElement(
|
|
303
396
|
TextInput,
|
|
304
397
|
{
|
|
305
398
|
style: [
|
|
306
|
-
|
|
399
|
+
styles3.input,
|
|
307
400
|
{
|
|
308
401
|
color: colors.foreground
|
|
309
402
|
},
|
|
@@ -324,10 +417,10 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, p
|
|
|
324
417
|
...props
|
|
325
418
|
}
|
|
326
419
|
),
|
|
327
|
-
effectiveSuffix ? typeof effectiveSuffix === "string" ? /* @__PURE__ */
|
|
328
|
-
), error ? /* @__PURE__ */
|
|
420
|
+
effectiveSuffix ? typeof effectiveSuffix === "string" ? /* @__PURE__ */ React25.createElement(Text, { style: [styles3.suffixText, { color: colors.mutedForeground }, suffixStyle], allowFontScaling: true }, effectiveSuffix) : /* @__PURE__ */ React25.createElement(View, { style: styles3.suffixContainer }, effectiveSuffix) : null
|
|
421
|
+
), error ? /* @__PURE__ */ React25.createElement(Text, { style: [styles3.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React25.createElement(Text, { style: [styles3.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
|
|
329
422
|
}
|
|
330
|
-
var
|
|
423
|
+
var styles3 = StyleSheet.create({
|
|
331
424
|
container: {
|
|
332
425
|
gap: vs(8)
|
|
333
426
|
},
|
|
@@ -401,9 +494,9 @@ function Badge({ label, children, variant = "default", size = "md", icon, iconNa
|
|
|
401
494
|
}[variant];
|
|
402
495
|
const effectiveIcon = iconName ? renderIcon(iconName, sizeIconSize[size], iconColor ?? textColor) : icon;
|
|
403
496
|
const content = children ?? label;
|
|
404
|
-
return /* @__PURE__ */
|
|
497
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles4.container, containerStyle, sizePadding[size], { gap: sizeIconGap[size] }, style] }, effectiveIcon ? /* @__PURE__ */ React25.createElement(View, { style: styles4.iconContainer }, effectiveIcon) : null, typeof content === "string" ? /* @__PURE__ */ React25.createElement(Text, { style: [styles4.label, { color: textColor }, sizeFontSize[size]], allowFontScaling: true }, content) : content);
|
|
405
498
|
}
|
|
406
|
-
var
|
|
499
|
+
var styles4 = StyleSheet.create({
|
|
407
500
|
container: {
|
|
408
501
|
borderRadius: ms(6),
|
|
409
502
|
alignSelf: "flex-start",
|
|
@@ -418,7 +511,7 @@ var styles3 = StyleSheet.create({
|
|
|
418
511
|
fontWeight: "500"
|
|
419
512
|
}
|
|
420
513
|
});
|
|
421
|
-
var
|
|
514
|
+
var nativeDriver3 = Platform.OS !== "web";
|
|
422
515
|
function Card({ children, variant = "elevated", onPress, style }) {
|
|
423
516
|
const { colors } = useTheme();
|
|
424
517
|
const scale2 = useRef(new Animated.Value(1)).current;
|
|
@@ -426,7 +519,7 @@ function Card({ children, variant = "elevated", onPress, style }) {
|
|
|
426
519
|
if (!onPress) return;
|
|
427
520
|
Animated.spring(scale2, {
|
|
428
521
|
toValue: 0.98,
|
|
429
|
-
useNativeDriver:
|
|
522
|
+
useNativeDriver: nativeDriver3,
|
|
430
523
|
speed: 40,
|
|
431
524
|
bounciness: 0
|
|
432
525
|
}).start();
|
|
@@ -435,7 +528,7 @@ function Card({ children, variant = "elevated", onPress, style }) {
|
|
|
435
528
|
if (!onPress) return;
|
|
436
529
|
Animated.spring(scale2, {
|
|
437
530
|
toValue: 1,
|
|
438
|
-
useNativeDriver:
|
|
531
|
+
useNativeDriver: nativeDriver3,
|
|
439
532
|
speed: 40,
|
|
440
533
|
bounciness: 4
|
|
441
534
|
}).start();
|
|
@@ -468,9 +561,9 @@ function Card({ children, variant = "elevated", onPress, style }) {
|
|
|
468
561
|
elevation: 0
|
|
469
562
|
}
|
|
470
563
|
}[variant];
|
|
471
|
-
const cardContent = /* @__PURE__ */
|
|
564
|
+
const cardContent = /* @__PURE__ */ React25.createElement(View, { style: [styles5.card, variantStyle, style] }, children);
|
|
472
565
|
if (onPress) {
|
|
473
|
-
return /* @__PURE__ */
|
|
566
|
+
return /* @__PURE__ */ React25.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25.createElement(
|
|
474
567
|
TouchableOpacity,
|
|
475
568
|
{
|
|
476
569
|
onPress: handlePress,
|
|
@@ -485,23 +578,23 @@ function Card({ children, variant = "elevated", onPress, style }) {
|
|
|
485
578
|
return cardContent;
|
|
486
579
|
}
|
|
487
580
|
function CardHeader({ children, style }) {
|
|
488
|
-
return /* @__PURE__ */
|
|
581
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles5.header, style] }, children);
|
|
489
582
|
}
|
|
490
583
|
function CardTitle({ children, style }) {
|
|
491
584
|
const { colors } = useTheme();
|
|
492
|
-
return /* @__PURE__ */
|
|
585
|
+
return /* @__PURE__ */ React25.createElement(Text, { style: [styles5.title, { color: colors.cardForeground }, style], allowFontScaling: true }, children);
|
|
493
586
|
}
|
|
494
587
|
function CardDescription({ children, style }) {
|
|
495
588
|
const { colors } = useTheme();
|
|
496
|
-
return /* @__PURE__ */
|
|
589
|
+
return /* @__PURE__ */ React25.createElement(Text, { style: [styles5.description, { color: colors.mutedForeground }, style], allowFontScaling: true }, children);
|
|
497
590
|
}
|
|
498
591
|
function CardContent({ children, style }) {
|
|
499
|
-
return /* @__PURE__ */
|
|
592
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles5.content, style] }, children);
|
|
500
593
|
}
|
|
501
594
|
function CardFooter({ children, style }) {
|
|
502
|
-
return /* @__PURE__ */
|
|
595
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles5.footer, style] }, children);
|
|
503
596
|
}
|
|
504
|
-
var
|
|
597
|
+
var styles5 = StyleSheet.create({
|
|
505
598
|
card: {
|
|
506
599
|
borderRadius: ms(12),
|
|
507
600
|
borderWidth: 1
|
|
@@ -532,18 +625,18 @@ var styles4 = StyleSheet.create({
|
|
|
532
625
|
});
|
|
533
626
|
function Separator({ orientation = "horizontal", style }) {
|
|
534
627
|
const { colors } = useTheme();
|
|
535
|
-
return /* @__PURE__ */
|
|
628
|
+
return /* @__PURE__ */ React25.createElement(
|
|
536
629
|
View,
|
|
537
630
|
{
|
|
538
631
|
style: [
|
|
539
|
-
orientation === "horizontal" ?
|
|
632
|
+
orientation === "horizontal" ? styles6.horizontal : styles6.vertical,
|
|
540
633
|
{ backgroundColor: colors.border },
|
|
541
634
|
style
|
|
542
635
|
]
|
|
543
636
|
}
|
|
544
637
|
);
|
|
545
638
|
}
|
|
546
|
-
var
|
|
639
|
+
var styles6 = StyleSheet.create({
|
|
547
640
|
horizontal: {
|
|
548
641
|
height: 1,
|
|
549
642
|
width: "100%"
|
|
@@ -553,14 +646,14 @@ var styles5 = StyleSheet.create({
|
|
|
553
646
|
height: "100%"
|
|
554
647
|
}
|
|
555
648
|
});
|
|
556
|
-
var
|
|
649
|
+
var sizeMap2 = {
|
|
557
650
|
sm: "small",
|
|
558
651
|
md: "small",
|
|
559
652
|
lg: "large"
|
|
560
653
|
};
|
|
561
654
|
function Spinner({ size = "md", color, ...props }) {
|
|
562
655
|
const { colors } = useTheme();
|
|
563
|
-
return /* @__PURE__ */
|
|
656
|
+
return /* @__PURE__ */ React25.createElement(ActivityIndicator, { size: sizeMap2[size], color: color ?? colors.primary, ...props });
|
|
564
657
|
}
|
|
565
658
|
function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
|
|
566
659
|
const { colors, colorScheme } = useTheme();
|
|
@@ -582,17 +675,17 @@ function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
|
|
|
582
675
|
inputRange: [0, 1],
|
|
583
676
|
outputRange: [-containerWidth, containerWidth]
|
|
584
677
|
});
|
|
585
|
-
return /* @__PURE__ */
|
|
678
|
+
return /* @__PURE__ */ React25.createElement(
|
|
586
679
|
View,
|
|
587
680
|
{
|
|
588
681
|
style: [
|
|
589
|
-
|
|
682
|
+
styles7.base,
|
|
590
683
|
{ width, height, borderRadius, backgroundColor: colors.muted },
|
|
591
684
|
style
|
|
592
685
|
],
|
|
593
686
|
onLayout: (e) => setContainerWidth(e.nativeEvent.layout.width)
|
|
594
687
|
},
|
|
595
|
-
/* @__PURE__ */
|
|
688
|
+
/* @__PURE__ */ React25.createElement(Animated.View, { style: [StyleSheet.absoluteFill, { transform: [{ translateX }] }] }, /* @__PURE__ */ React25.createElement(
|
|
596
689
|
LinearGradient,
|
|
597
690
|
{
|
|
598
691
|
colors: ["transparent", shimmerHighlight, "transparent"],
|
|
@@ -603,12 +696,12 @@ function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
|
|
|
603
696
|
))
|
|
604
697
|
);
|
|
605
698
|
}
|
|
606
|
-
var
|
|
699
|
+
var styles7 = StyleSheet.create({
|
|
607
700
|
base: {
|
|
608
701
|
overflow: "hidden"
|
|
609
702
|
}
|
|
610
703
|
});
|
|
611
|
-
var
|
|
704
|
+
var sizeMap3 = {
|
|
612
705
|
sm: s(28),
|
|
613
706
|
md: s(40),
|
|
614
707
|
lg: s(56),
|
|
@@ -623,7 +716,7 @@ var fontSizeMap = {
|
|
|
623
716
|
function Avatar({ src, fallback, size = "md", style }) {
|
|
624
717
|
const { colors } = useTheme();
|
|
625
718
|
const [imageError, setImageError] = useState(false);
|
|
626
|
-
const dimension =
|
|
719
|
+
const dimension = sizeMap3[size];
|
|
627
720
|
const showFallback = !src || imageError;
|
|
628
721
|
const containerStyle = {
|
|
629
722
|
width: dimension,
|
|
@@ -632,23 +725,23 @@ function Avatar({ src, fallback, size = "md", style }) {
|
|
|
632
725
|
backgroundColor: colors.muted,
|
|
633
726
|
overflow: "hidden"
|
|
634
727
|
};
|
|
635
|
-
return /* @__PURE__ */
|
|
728
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles8.base, containerStyle, style] }, !showFallback ? /* @__PURE__ */ React25.createElement(
|
|
636
729
|
Image,
|
|
637
730
|
{
|
|
638
731
|
source: { uri: src },
|
|
639
732
|
style: { width: dimension, height: dimension },
|
|
640
733
|
onError: () => setImageError(true)
|
|
641
734
|
}
|
|
642
|
-
) : /* @__PURE__ */
|
|
735
|
+
) : /* @__PURE__ */ React25.createElement(
|
|
643
736
|
Text,
|
|
644
737
|
{
|
|
645
|
-
style: [
|
|
738
|
+
style: [styles8.fallback, { color: colors.mutedForeground, fontSize: fontSizeMap[size] }],
|
|
646
739
|
allowFontScaling: true
|
|
647
740
|
},
|
|
648
741
|
fallback?.slice(0, 2).toUpperCase() ?? "?"
|
|
649
742
|
));
|
|
650
743
|
}
|
|
651
|
-
var
|
|
744
|
+
var styles8 = StyleSheet.create({
|
|
652
745
|
base: {
|
|
653
746
|
alignItems: "center",
|
|
654
747
|
justifyContent: "center"
|
|
@@ -662,11 +755,11 @@ function AlertBanner({ title, description, variant = "default", icon, iconName,
|
|
|
662
755
|
const borderColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.border;
|
|
663
756
|
const titleColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.foreground;
|
|
664
757
|
const descColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.mutedForeground;
|
|
665
|
-
const defaultIcon = variant === "success" ? /* @__PURE__ */
|
|
758
|
+
const defaultIcon = variant === "success" ? /* @__PURE__ */ React25.createElement(FontAwesome5$1, { name: "check-circle", size: 18, color: titleColor }) : variant === "destructive" ? /* @__PURE__ */ React25.createElement(MaterialIcons$1, { name: "error-outline", size: 20, color: titleColor }) : /* @__PURE__ */ React25.createElement(Entypo$1, { name: "info-with-circle", size: 18, color: titleColor });
|
|
666
759
|
const effectiveIcon = iconName ? renderIcon(iconName, 18, iconColor ?? titleColor) : icon ?? defaultIcon;
|
|
667
|
-
return /* @__PURE__ */
|
|
760
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles9.container, { backgroundColor: colors.card, borderColor }, style] }, /* @__PURE__ */ React25.createElement(View, { style: styles9.icon }, effectiveIcon), /* @__PURE__ */ React25.createElement(View, { style: styles9.content }, title ? /* @__PURE__ */ React25.createElement(Text, { style: [styles9.title, { color: titleColor }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React25.createElement(Text, { style: [styles9.description, { color: descColor }], allowFontScaling: true }, description) : null));
|
|
668
761
|
}
|
|
669
|
-
var
|
|
762
|
+
var styles9 = StyleSheet.create({
|
|
670
763
|
container: {
|
|
671
764
|
flexDirection: "row",
|
|
672
765
|
borderWidth: 1,
|
|
@@ -710,21 +803,21 @@ function Progress({ value = 0, max = 100, style }) {
|
|
|
710
803
|
bounciness: 0
|
|
711
804
|
}).start();
|
|
712
805
|
}, [percent, trackWidth]);
|
|
713
|
-
return /* @__PURE__ */
|
|
806
|
+
return /* @__PURE__ */ React25.createElement(
|
|
714
807
|
View,
|
|
715
808
|
{
|
|
716
|
-
style: [
|
|
809
|
+
style: [styles10.track, { backgroundColor: colors.muted }, style],
|
|
717
810
|
onLayout: (e) => setTrackWidth(e.nativeEvent.layout.width)
|
|
718
811
|
},
|
|
719
|
-
/* @__PURE__ */
|
|
812
|
+
/* @__PURE__ */ React25.createElement(
|
|
720
813
|
Animated.View,
|
|
721
814
|
{
|
|
722
|
-
style: [
|
|
815
|
+
style: [styles10.indicator, { width: animatedWidth, backgroundColor: colors.primary }]
|
|
723
816
|
}
|
|
724
817
|
)
|
|
725
818
|
);
|
|
726
819
|
}
|
|
727
|
-
var
|
|
820
|
+
var styles10 = StyleSheet.create({
|
|
728
821
|
track: {
|
|
729
822
|
height: vs(8),
|
|
730
823
|
borderRadius: 999,
|
|
@@ -740,39 +833,39 @@ function EmptyState({ icon, iconName, iconColor, title, description, action, siz
|
|
|
740
833
|
const { colors } = useTheme();
|
|
741
834
|
const isCompact = size === "compact";
|
|
742
835
|
const effectiveIcon = iconName ? renderIcon(iconName, isCompact ? 32 : 48, iconColor ?? colors.mutedForeground) : icon;
|
|
743
|
-
return /* @__PURE__ */
|
|
836
|
+
return /* @__PURE__ */ React25.createElement(
|
|
744
837
|
View,
|
|
745
838
|
{
|
|
746
839
|
style: [
|
|
747
|
-
|
|
748
|
-
isCompact &&
|
|
840
|
+
styles11.container,
|
|
841
|
+
isCompact && styles11.containerCompact,
|
|
749
842
|
{ borderColor: colors.border },
|
|
750
843
|
style
|
|
751
844
|
]
|
|
752
845
|
},
|
|
753
|
-
effectiveIcon ? /* @__PURE__ */
|
|
846
|
+
effectiveIcon ? /* @__PURE__ */ React25.createElement(
|
|
754
847
|
View,
|
|
755
848
|
{
|
|
756
849
|
style: [
|
|
757
|
-
|
|
758
|
-
isCompact &&
|
|
850
|
+
styles11.iconWrapper,
|
|
851
|
+
isCompact && styles11.iconWrapperCompact,
|
|
759
852
|
{ backgroundColor: colors.muted }
|
|
760
853
|
]
|
|
761
854
|
},
|
|
762
855
|
effectiveIcon
|
|
763
856
|
) : null,
|
|
764
|
-
/* @__PURE__ */
|
|
857
|
+
/* @__PURE__ */ React25.createElement(View, { style: styles11.textWrapper }, /* @__PURE__ */ React25.createElement(
|
|
765
858
|
Text,
|
|
766
859
|
{
|
|
767
|
-
style: [
|
|
860
|
+
style: [styles11.title, isCompact && styles11.titleCompact, { color: colors.foreground }],
|
|
768
861
|
allowFontScaling: true
|
|
769
862
|
},
|
|
770
863
|
title
|
|
771
|
-
), description && !isCompact ? /* @__PURE__ */
|
|
772
|
-
action && !isCompact ? /* @__PURE__ */
|
|
864
|
+
), description && !isCompact ? /* @__PURE__ */ React25.createElement(Text, { style: [styles11.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null),
|
|
865
|
+
action && !isCompact ? /* @__PURE__ */ React25.createElement(View, { style: styles11.action }, action) : null
|
|
773
866
|
);
|
|
774
867
|
}
|
|
775
|
-
var
|
|
868
|
+
var styles11 = StyleSheet.create({
|
|
776
869
|
container: {
|
|
777
870
|
alignItems: "center",
|
|
778
871
|
justifyContent: "center",
|
|
@@ -834,14 +927,14 @@ function Textarea({
|
|
|
834
927
|
}) {
|
|
835
928
|
const { colors } = useTheme();
|
|
836
929
|
const [focused, setFocused] = useState(false);
|
|
837
|
-
return /* @__PURE__ */
|
|
930
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles12.container, containerStyle] }, label ? /* @__PURE__ */ React25.createElement(Text, { style: [styles12.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React25.createElement(
|
|
838
931
|
TextInput,
|
|
839
932
|
{
|
|
840
933
|
multiline: true,
|
|
841
934
|
numberOfLines: rows,
|
|
842
935
|
textAlignVertical: "top",
|
|
843
936
|
style: [
|
|
844
|
-
|
|
937
|
+
styles12.input,
|
|
845
938
|
{
|
|
846
939
|
borderColor: error ? colors.destructive : focused ? colors.ring ?? colors.primary : colors.border,
|
|
847
940
|
color: colors.foreground,
|
|
@@ -863,9 +956,9 @@ function Textarea({
|
|
|
863
956
|
allowFontScaling: true,
|
|
864
957
|
...props
|
|
865
958
|
}
|
|
866
|
-
), error ? /* @__PURE__ */
|
|
959
|
+
), error ? /* @__PURE__ */ React25.createElement(Text, { style: [styles12.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React25.createElement(Text, { style: [styles12.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
|
|
867
960
|
}
|
|
868
|
-
var
|
|
961
|
+
var styles12 = StyleSheet.create({
|
|
869
962
|
container: {
|
|
870
963
|
gap: vs(8)
|
|
871
964
|
},
|
|
@@ -884,7 +977,7 @@ var styles11 = StyleSheet.create({
|
|
|
884
977
|
fontSize: ms(13)
|
|
885
978
|
}
|
|
886
979
|
});
|
|
887
|
-
var
|
|
980
|
+
var nativeDriver4 = Platform.OS !== "web";
|
|
888
981
|
function Checkbox({
|
|
889
982
|
checked = false,
|
|
890
983
|
onCheckedChange,
|
|
@@ -896,15 +989,15 @@ function Checkbox({
|
|
|
896
989
|
const scale2 = useRef(new Animated.Value(1)).current;
|
|
897
990
|
const handlePressIn = () => {
|
|
898
991
|
if (disabled) return;
|
|
899
|
-
Animated.spring(scale2, { toValue: 0.95, useNativeDriver:
|
|
992
|
+
Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver4, speed: 40, bounciness: 0 }).start();
|
|
900
993
|
};
|
|
901
994
|
const handlePressOut = () => {
|
|
902
|
-
Animated.spring(scale2, { toValue: 1, useNativeDriver:
|
|
995
|
+
Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver4, speed: 40, bounciness: 4 }).start();
|
|
903
996
|
};
|
|
904
|
-
return /* @__PURE__ */
|
|
997
|
+
return /* @__PURE__ */ React25.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25.createElement(
|
|
905
998
|
TouchableOpacity,
|
|
906
999
|
{
|
|
907
|
-
style: [
|
|
1000
|
+
style: [styles13.row, style],
|
|
908
1001
|
onPress: () => {
|
|
909
1002
|
selectionAsync();
|
|
910
1003
|
onCheckedChange?.(!checked);
|
|
@@ -915,11 +1008,11 @@ function Checkbox({
|
|
|
915
1008
|
activeOpacity: 1,
|
|
916
1009
|
touchSoundDisabled: true
|
|
917
1010
|
},
|
|
918
|
-
/* @__PURE__ */
|
|
1011
|
+
/* @__PURE__ */ React25.createElement(
|
|
919
1012
|
View,
|
|
920
1013
|
{
|
|
921
1014
|
style: [
|
|
922
|
-
|
|
1015
|
+
styles13.box,
|
|
923
1016
|
{
|
|
924
1017
|
borderColor: checked ? colors.primary : colors.border,
|
|
925
1018
|
backgroundColor: checked ? colors.primary : "transparent",
|
|
@@ -927,18 +1020,19 @@ function Checkbox({
|
|
|
927
1020
|
}
|
|
928
1021
|
]
|
|
929
1022
|
},
|
|
930
|
-
checked ? /* @__PURE__ */
|
|
1023
|
+
checked ? /* @__PURE__ */ React25.createElement(View, { style: [styles13.checkmark, { borderColor: colors.primaryForeground }] }) : null
|
|
931
1024
|
),
|
|
932
|
-
label ? /* @__PURE__ */
|
|
1025
|
+
label ? /* @__PURE__ */ React25.createElement(
|
|
933
1026
|
Text,
|
|
934
1027
|
{
|
|
935
|
-
style: [
|
|
1028
|
+
style: [styles13.label, { color: disabled ? colors.mutedForeground : colors.foreground }],
|
|
1029
|
+
allowFontScaling: true
|
|
936
1030
|
},
|
|
937
1031
|
label
|
|
938
1032
|
) : null
|
|
939
1033
|
));
|
|
940
1034
|
}
|
|
941
|
-
var
|
|
1035
|
+
var styles13 = StyleSheet.create({
|
|
942
1036
|
row: {
|
|
943
1037
|
flexDirection: "row",
|
|
944
1038
|
alignItems: "center",
|
|
@@ -964,7 +1058,7 @@ var styles12 = StyleSheet.create({
|
|
|
964
1058
|
lineHeight: mvs(22)
|
|
965
1059
|
}
|
|
966
1060
|
});
|
|
967
|
-
var
|
|
1061
|
+
var nativeDriver5 = Platform.OS !== "web";
|
|
968
1062
|
var TRACK_WIDTH = s(60);
|
|
969
1063
|
var TRACK_HEIGHT = vs(36);
|
|
970
1064
|
var THUMB_SIZE = s(28);
|
|
@@ -978,7 +1072,7 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
|
|
|
978
1072
|
Animated.parallel([
|
|
979
1073
|
Animated.spring(translateX, {
|
|
980
1074
|
toValue: checked ? THUMB_TRAVEL : 0,
|
|
981
|
-
useNativeDriver:
|
|
1075
|
+
useNativeDriver: nativeDriver5,
|
|
982
1076
|
bounciness: 4
|
|
983
1077
|
}),
|
|
984
1078
|
Animated.timing(trackOpacity, {
|
|
@@ -992,7 +1086,7 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
|
|
|
992
1086
|
inputRange: [0, 1],
|
|
993
1087
|
outputRange: [colors.muted, colors.primary]
|
|
994
1088
|
});
|
|
995
|
-
return /* @__PURE__ */
|
|
1089
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [{ opacity: disabled ? 0.45 : 1 }, style] }, /* @__PURE__ */ React25.createElement(
|
|
996
1090
|
TouchableOpacity,
|
|
997
1091
|
{
|
|
998
1092
|
onPress: () => {
|
|
@@ -1002,20 +1096,20 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
|
|
|
1002
1096
|
disabled,
|
|
1003
1097
|
activeOpacity: 0.8,
|
|
1004
1098
|
touchSoundDisabled: true,
|
|
1005
|
-
style:
|
|
1099
|
+
style: styles14.wrapper
|
|
1006
1100
|
},
|
|
1007
|
-
/* @__PURE__ */
|
|
1101
|
+
/* @__PURE__ */ React25.createElement(Animated.View, { style: [styles14.track, { backgroundColor: trackColor }] }, /* @__PURE__ */ React25.createElement(
|
|
1008
1102
|
Animated.View,
|
|
1009
1103
|
{
|
|
1010
1104
|
style: [
|
|
1011
|
-
|
|
1105
|
+
styles14.thumb,
|
|
1012
1106
|
{ backgroundColor: colors.primaryForeground, transform: [{ translateX }] }
|
|
1013
1107
|
]
|
|
1014
1108
|
}
|
|
1015
1109
|
))
|
|
1016
1110
|
));
|
|
1017
1111
|
}
|
|
1018
|
-
var
|
|
1112
|
+
var styles14 = StyleSheet.create({
|
|
1019
1113
|
wrapper: {},
|
|
1020
1114
|
track: {
|
|
1021
1115
|
width: TRACK_WIDTH,
|
|
@@ -1098,17 +1192,17 @@ function Toggle({
|
|
|
1098
1192
|
return prop;
|
|
1099
1193
|
};
|
|
1100
1194
|
if (pressed) {
|
|
1101
|
-
if (activeIconName) return /* @__PURE__ */
|
|
1195
|
+
if (activeIconName) return /* @__PURE__ */ React25.createElement(React25.Fragment, null, renderIcon(activeIconName, iconSize, activeIconColor ?? colors.primary));
|
|
1102
1196
|
const active = renderProp(activeIcon);
|
|
1103
|
-
if (active) return /* @__PURE__ */
|
|
1104
|
-
return /* @__PURE__ */
|
|
1197
|
+
if (active) return /* @__PURE__ */ React25.createElement(React25.Fragment, null, active);
|
|
1198
|
+
return /* @__PURE__ */ React25.createElement(FontAwesome5$1, { name: "check-circle", size: iconSize, color: colors.primary });
|
|
1105
1199
|
}
|
|
1106
|
-
if (iconName) return /* @__PURE__ */
|
|
1200
|
+
if (iconName) return /* @__PURE__ */ React25.createElement(React25.Fragment, null, renderIcon(iconName, iconSize, iconColor ?? colors.mutedForeground));
|
|
1107
1201
|
const custom = renderProp(icon);
|
|
1108
|
-
if (custom) return /* @__PURE__ */
|
|
1109
|
-
return /* @__PURE__ */
|
|
1202
|
+
if (custom) return /* @__PURE__ */ React25.createElement(React25.Fragment, null, custom);
|
|
1203
|
+
return /* @__PURE__ */ React25.createElement(FontAwesome5$1, { name: "circle", size: iconSize, color: colors.mutedForeground });
|
|
1110
1204
|
};
|
|
1111
|
-
return /* @__PURE__ */
|
|
1205
|
+
return /* @__PURE__ */ React25.createElement(Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles15.disabled, style] }, /* @__PURE__ */ React25.createElement(
|
|
1112
1206
|
TouchableOpacity,
|
|
1113
1207
|
{
|
|
1114
1208
|
onPress: () => {
|
|
@@ -1122,20 +1216,20 @@ function Toggle({
|
|
|
1122
1216
|
touchSoundDisabled: true,
|
|
1123
1217
|
...props
|
|
1124
1218
|
},
|
|
1125
|
-
/* @__PURE__ */
|
|
1219
|
+
/* @__PURE__ */ React25.createElement(
|
|
1126
1220
|
Animated.View,
|
|
1127
1221
|
{
|
|
1128
1222
|
style: [
|
|
1129
|
-
|
|
1223
|
+
styles15.base,
|
|
1130
1224
|
sizeStyles[size],
|
|
1131
1225
|
{ borderColor, backgroundColor, borderWidth: 2 }
|
|
1132
1226
|
]
|
|
1133
1227
|
},
|
|
1134
|
-
/* @__PURE__ */
|
|
1228
|
+
/* @__PURE__ */ React25.createElement(View, { style: styles15.inner }, /* @__PURE__ */ React25.createElement(LeftIcon, null), label ? /* @__PURE__ */ React25.createElement(Animated.Text, { style: [styles15.label, { color: textColor }], allowFontScaling: true }, label) : null)
|
|
1135
1229
|
)
|
|
1136
1230
|
));
|
|
1137
1231
|
}
|
|
1138
|
-
var
|
|
1232
|
+
var styles15 = StyleSheet.create({
|
|
1139
1233
|
base: {
|
|
1140
1234
|
borderRadius: ms(8)
|
|
1141
1235
|
},
|
|
@@ -1153,7 +1247,7 @@ var styles14 = StyleSheet.create({
|
|
|
1153
1247
|
fontWeight: "500"
|
|
1154
1248
|
}
|
|
1155
1249
|
});
|
|
1156
|
-
var
|
|
1250
|
+
var nativeDriver6 = Platform.OS !== "web";
|
|
1157
1251
|
function RadioItem({
|
|
1158
1252
|
option,
|
|
1159
1253
|
selected,
|
|
@@ -1163,15 +1257,15 @@ function RadioItem({
|
|
|
1163
1257
|
const scale2 = useRef(new Animated.Value(1)).current;
|
|
1164
1258
|
const handlePressIn = () => {
|
|
1165
1259
|
if (option.disabled) return;
|
|
1166
|
-
Animated.spring(scale2, { toValue: 0.95, useNativeDriver:
|
|
1260
|
+
Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver6, speed: 40, bounciness: 0 }).start();
|
|
1167
1261
|
};
|
|
1168
1262
|
const handlePressOut = () => {
|
|
1169
|
-
Animated.spring(scale2, { toValue: 1, useNativeDriver:
|
|
1263
|
+
Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver6, speed: 40, bounciness: 4 }).start();
|
|
1170
1264
|
};
|
|
1171
|
-
return /* @__PURE__ */
|
|
1265
|
+
return /* @__PURE__ */ React25.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25.createElement(
|
|
1172
1266
|
TouchableOpacity,
|
|
1173
1267
|
{
|
|
1174
|
-
style:
|
|
1268
|
+
style: styles16.row,
|
|
1175
1269
|
onPress: () => {
|
|
1176
1270
|
if (!option.disabled) {
|
|
1177
1271
|
selectionAsync();
|
|
@@ -1184,26 +1278,27 @@ function RadioItem({
|
|
|
1184
1278
|
touchSoundDisabled: true,
|
|
1185
1279
|
disabled: option.disabled
|
|
1186
1280
|
},
|
|
1187
|
-
/* @__PURE__ */
|
|
1281
|
+
/* @__PURE__ */ React25.createElement(
|
|
1188
1282
|
View,
|
|
1189
1283
|
{
|
|
1190
1284
|
style: [
|
|
1191
|
-
|
|
1285
|
+
styles16.radio,
|
|
1192
1286
|
{
|
|
1193
1287
|
borderColor: selected ? colors.primary : colors.border,
|
|
1194
1288
|
opacity: option.disabled ? 0.45 : 1
|
|
1195
1289
|
}
|
|
1196
1290
|
]
|
|
1197
1291
|
},
|
|
1198
|
-
selected ? /* @__PURE__ */
|
|
1292
|
+
selected ? /* @__PURE__ */ React25.createElement(View, { style: [styles16.dot, { backgroundColor: colors.primary }] }) : null
|
|
1199
1293
|
),
|
|
1200
|
-
/* @__PURE__ */
|
|
1294
|
+
/* @__PURE__ */ React25.createElement(
|
|
1201
1295
|
Text,
|
|
1202
1296
|
{
|
|
1203
1297
|
style: [
|
|
1204
|
-
|
|
1298
|
+
styles16.label,
|
|
1205
1299
|
{ color: option.disabled ? colors.mutedForeground : colors.foreground }
|
|
1206
|
-
]
|
|
1300
|
+
],
|
|
1301
|
+
allowFontScaling: true
|
|
1207
1302
|
},
|
|
1208
1303
|
option.label
|
|
1209
1304
|
)
|
|
@@ -1216,7 +1311,7 @@ function RadioGroup({
|
|
|
1216
1311
|
orientation = "vertical",
|
|
1217
1312
|
style
|
|
1218
1313
|
}) {
|
|
1219
|
-
return /* @__PURE__ */
|
|
1314
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles16.container, orientation === "horizontal" && styles16.horizontal, style] }, options.map((option) => /* @__PURE__ */ React25.createElement(
|
|
1220
1315
|
RadioItem,
|
|
1221
1316
|
{
|
|
1222
1317
|
key: option.value,
|
|
@@ -1226,7 +1321,7 @@ function RadioGroup({
|
|
|
1226
1321
|
}
|
|
1227
1322
|
)));
|
|
1228
1323
|
}
|
|
1229
|
-
var
|
|
1324
|
+
var styles16 = StyleSheet.create({
|
|
1230
1325
|
container: {
|
|
1231
1326
|
gap: vs(12)
|
|
1232
1327
|
},
|
|
@@ -1257,7 +1352,7 @@ var styles15 = StyleSheet.create({
|
|
|
1257
1352
|
lineHeight: mvs(20)
|
|
1258
1353
|
}
|
|
1259
1354
|
});
|
|
1260
|
-
var
|
|
1355
|
+
var nativeDriver7 = Platform.OS !== "web";
|
|
1261
1356
|
function TabTrigger({
|
|
1262
1357
|
tab,
|
|
1263
1358
|
isActive,
|
|
@@ -1267,15 +1362,15 @@ function TabTrigger({
|
|
|
1267
1362
|
const { colors } = useTheme();
|
|
1268
1363
|
const scale2 = useRef(new Animated.Value(1)).current;
|
|
1269
1364
|
const handlePressIn = () => {
|
|
1270
|
-
Animated.spring(scale2, { toValue: 0.95, useNativeDriver:
|
|
1365
|
+
Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver7, speed: 40, bounciness: 0 }).start();
|
|
1271
1366
|
};
|
|
1272
1367
|
const handlePressOut = () => {
|
|
1273
|
-
Animated.spring(scale2, { toValue: 1, useNativeDriver:
|
|
1368
|
+
Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver7, speed: 40, bounciness: 4 }).start();
|
|
1274
1369
|
};
|
|
1275
|
-
return /* @__PURE__ */
|
|
1370
|
+
return /* @__PURE__ */ React25.createElement(
|
|
1276
1371
|
TouchableOpacity,
|
|
1277
1372
|
{
|
|
1278
|
-
style:
|
|
1373
|
+
style: styles17.trigger,
|
|
1279
1374
|
onPress,
|
|
1280
1375
|
onPressIn: handlePressIn,
|
|
1281
1376
|
onPressOut: handlePressOut,
|
|
@@ -1283,14 +1378,15 @@ function TabTrigger({
|
|
|
1283
1378
|
activeOpacity: 1,
|
|
1284
1379
|
touchSoundDisabled: true
|
|
1285
1380
|
},
|
|
1286
|
-
/* @__PURE__ */
|
|
1381
|
+
/* @__PURE__ */ React25.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25.createElement(View, { style: styles17.triggerInner }, tab.icon ? /* @__PURE__ */ React25.createElement(View, { style: styles17.triggerIcon }, typeof tab.icon === "function" ? tab.icon(isActive) : tab.icon) : null, /* @__PURE__ */ React25.createElement(
|
|
1287
1382
|
Text,
|
|
1288
1383
|
{
|
|
1289
1384
|
style: [
|
|
1290
|
-
|
|
1385
|
+
styles17.triggerLabel,
|
|
1291
1386
|
{ color: isActive ? colors.foreground : colors.mutedForeground },
|
|
1292
|
-
isActive &&
|
|
1293
|
-
]
|
|
1387
|
+
isActive && styles17.activeTriggerLabel
|
|
1388
|
+
],
|
|
1389
|
+
allowFontScaling: true
|
|
1294
1390
|
},
|
|
1295
1391
|
tab.label
|
|
1296
1392
|
)))
|
|
@@ -1337,11 +1433,11 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
|
|
|
1337
1433
|
if (!value) setInternal(v);
|
|
1338
1434
|
onValueChange?.(v);
|
|
1339
1435
|
};
|
|
1340
|
-
return /* @__PURE__ */
|
|
1436
|
+
return /* @__PURE__ */ React25.createElement(View, { style }, /* @__PURE__ */ React25.createElement(View, { style: [styles17.list, { backgroundColor: colors.muted }] }, /* @__PURE__ */ React25.createElement(
|
|
1341
1437
|
Animated.View,
|
|
1342
1438
|
{
|
|
1343
1439
|
style: [
|
|
1344
|
-
|
|
1440
|
+
styles17.pill,
|
|
1345
1441
|
{
|
|
1346
1442
|
backgroundColor: colors.background,
|
|
1347
1443
|
position: "absolute",
|
|
@@ -1358,7 +1454,7 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
|
|
|
1358
1454
|
}
|
|
1359
1455
|
]
|
|
1360
1456
|
}
|
|
1361
|
-
), tabs.map((tab) => /* @__PURE__ */
|
|
1457
|
+
), tabs.map((tab) => /* @__PURE__ */ React25.createElement(
|
|
1362
1458
|
TabTrigger,
|
|
1363
1459
|
{
|
|
1364
1460
|
key: tab.value,
|
|
@@ -1378,9 +1474,9 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
|
|
|
1378
1474
|
}
|
|
1379
1475
|
function TabsContent({ value, activeValue, children, style }) {
|
|
1380
1476
|
if (value !== activeValue) return null;
|
|
1381
|
-
return /* @__PURE__ */
|
|
1477
|
+
return /* @__PURE__ */ React25.createElement(View, { style }, children);
|
|
1382
1478
|
}
|
|
1383
|
-
var
|
|
1479
|
+
var styles17 = StyleSheet.create({
|
|
1384
1480
|
list: {
|
|
1385
1481
|
flexDirection: "row",
|
|
1386
1482
|
borderRadius: ms(12),
|
|
@@ -1424,7 +1520,7 @@ function AccordionItemComponent({
|
|
|
1424
1520
|
const { colors } = useTheme();
|
|
1425
1521
|
const isExpanded = useSharedValue(isOpen);
|
|
1426
1522
|
const height = useSharedValue(0);
|
|
1427
|
-
|
|
1523
|
+
React25.useEffect(() => {
|
|
1428
1524
|
isExpanded.value = isOpen;
|
|
1429
1525
|
}, [isOpen]);
|
|
1430
1526
|
const derivedHeight = useDerivedValue(
|
|
@@ -1446,21 +1542,21 @@ function AccordionItemComponent({
|
|
|
1446
1542
|
const rotationStyle = useAnimatedStyle(() => ({
|
|
1447
1543
|
transform: [{ rotate: `${derivedRotation.value * 180}deg` }]
|
|
1448
1544
|
}));
|
|
1449
|
-
return /* @__PURE__ */
|
|
1545
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles18.item, { borderBottomColor: colors.border }] }, /* @__PURE__ */ React25.createElement(
|
|
1450
1546
|
Pressable,
|
|
1451
1547
|
{
|
|
1452
|
-
style: ({ pressed }) => [
|
|
1548
|
+
style: ({ pressed }) => [styles18.trigger, { opacity: pressed ? 0.6 : 1 }],
|
|
1453
1549
|
onPress: () => {
|
|
1454
1550
|
selectionAsync();
|
|
1455
1551
|
onToggle();
|
|
1456
1552
|
}
|
|
1457
1553
|
},
|
|
1458
|
-
/* @__PURE__ */
|
|
1459
|
-
/* @__PURE__ */
|
|
1460
|
-
), /* @__PURE__ */
|
|
1554
|
+
/* @__PURE__ */ React25.createElement(Text, { style: [styles18.triggerText, { color: colors.foreground }] }, item.trigger),
|
|
1555
|
+
/* @__PURE__ */ React25.createElement(Animated11.View, { style: [styles18.chevron, rotationStyle] }, /* @__PURE__ */ React25.createElement(Entypo$1, { name: "chevron-down", size: 20, color: colors.foreground }))
|
|
1556
|
+
), /* @__PURE__ */ React25.createElement(Animated11.View, { style: bodyStyle }, /* @__PURE__ */ React25.createElement(
|
|
1461
1557
|
View,
|
|
1462
1558
|
{
|
|
1463
|
-
style:
|
|
1559
|
+
style: styles18.content,
|
|
1464
1560
|
onLayout: (e) => {
|
|
1465
1561
|
height.value = e.nativeEvent.layout.height;
|
|
1466
1562
|
}
|
|
@@ -1482,7 +1578,7 @@ function Accordion({ items, type = "single", defaultValue, style }) {
|
|
|
1482
1578
|
);
|
|
1483
1579
|
}
|
|
1484
1580
|
};
|
|
1485
|
-
return /* @__PURE__ */
|
|
1581
|
+
return /* @__PURE__ */ React25.createElement(View, { style }, items.map((item) => /* @__PURE__ */ React25.createElement(
|
|
1486
1582
|
AccordionItemComponent,
|
|
1487
1583
|
{
|
|
1488
1584
|
key: item.value,
|
|
@@ -1492,7 +1588,7 @@ function Accordion({ items, type = "single", defaultValue, style }) {
|
|
|
1492
1588
|
}
|
|
1493
1589
|
)));
|
|
1494
1590
|
}
|
|
1495
|
-
var
|
|
1591
|
+
var styles18 = StyleSheet.create({
|
|
1496
1592
|
item: {
|
|
1497
1593
|
borderBottomWidth: 1
|
|
1498
1594
|
},
|
|
@@ -1541,7 +1637,7 @@ function Slider({
|
|
|
1541
1637
|
}
|
|
1542
1638
|
onValueChange?.(v);
|
|
1543
1639
|
};
|
|
1544
|
-
return /* @__PURE__ */
|
|
1640
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles19.wrapper, style], accessibilityLabel }, label || showValue ? /* @__PURE__ */ React25.createElement(View, { style: styles19.header }, label ? /* @__PURE__ */ React25.createElement(Text, { style: [styles19.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, showValue ? /* @__PURE__ */ React25.createElement(Text, { style: [styles19.valueText, { color: colors.mutedForeground }], allowFontScaling: true }, formatValue2(value)) : null) : null, /* @__PURE__ */ React25.createElement(View, { style: disabled ? styles19.disabled : void 0 }, /* @__PURE__ */ React25.createElement(
|
|
1545
1641
|
RNSlider,
|
|
1546
1642
|
{
|
|
1547
1643
|
value,
|
|
@@ -1554,12 +1650,12 @@ function Slider({
|
|
|
1554
1650
|
minimumTrackTintColor: colors.primary,
|
|
1555
1651
|
maximumTrackTintColor: colors.muted,
|
|
1556
1652
|
thumbTintColor: colors.primary,
|
|
1557
|
-
style:
|
|
1653
|
+
style: styles19.slider,
|
|
1558
1654
|
accessibilityLabel
|
|
1559
1655
|
}
|
|
1560
1656
|
)));
|
|
1561
1657
|
}
|
|
1562
|
-
var
|
|
1658
|
+
var styles19 = StyleSheet.create({
|
|
1563
1659
|
wrapper: {
|
|
1564
1660
|
gap: vs(8)
|
|
1565
1661
|
},
|
|
@@ -1603,7 +1699,7 @@ function Sheet({
|
|
|
1603
1699
|
ref.current?.dismiss();
|
|
1604
1700
|
}
|
|
1605
1701
|
}, [open]);
|
|
1606
|
-
const renderBackdrop = (props) => /* @__PURE__ */
|
|
1702
|
+
const renderBackdrop = (props) => /* @__PURE__ */ React25.createElement(
|
|
1607
1703
|
BottomSheetBackdrop,
|
|
1608
1704
|
{
|
|
1609
1705
|
...props,
|
|
@@ -1612,21 +1708,21 @@ function Sheet({
|
|
|
1612
1708
|
pressBehavior: "close"
|
|
1613
1709
|
}
|
|
1614
1710
|
);
|
|
1615
|
-
return /* @__PURE__ */
|
|
1711
|
+
return /* @__PURE__ */ React25.createElement(
|
|
1616
1712
|
BottomSheetModal,
|
|
1617
1713
|
{
|
|
1618
1714
|
ref,
|
|
1619
1715
|
snapPoints,
|
|
1620
1716
|
onDismiss: onClose,
|
|
1621
1717
|
backdropComponent: renderBackdrop,
|
|
1622
|
-
backgroundStyle: [
|
|
1623
|
-
handleIndicatorStyle: [
|
|
1718
|
+
backgroundStyle: [styles20.background, { backgroundColor: colors.card }],
|
|
1719
|
+
handleIndicatorStyle: [styles20.handle, { backgroundColor: colors.border }],
|
|
1624
1720
|
enablePanDownToClose: true
|
|
1625
1721
|
},
|
|
1626
|
-
/* @__PURE__ */
|
|
1722
|
+
/* @__PURE__ */ React25.createElement(BottomSheetView, { style: [styles20.content, style] }, title || description ? /* @__PURE__ */ React25.createElement(View, { style: styles20.header }, title ? /* @__PURE__ */ React25.createElement(Text, { style: [styles20.title, { color: colors.cardForeground }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React25.createElement(Text, { style: [styles20.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null) : null, children)
|
|
1627
1723
|
);
|
|
1628
1724
|
}
|
|
1629
|
-
var
|
|
1725
|
+
var styles20 = StyleSheet.create({
|
|
1630
1726
|
background: {
|
|
1631
1727
|
borderTopLeftRadius: ms(16),
|
|
1632
1728
|
borderTopRightRadius: ms(16)
|
|
@@ -1699,11 +1795,11 @@ function Select({
|
|
|
1699
1795
|
}
|
|
1700
1796
|
setPickerVisible(false);
|
|
1701
1797
|
};
|
|
1702
|
-
return /* @__PURE__ */
|
|
1798
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles21.container, style] }, label ? /* @__PURE__ */ React25.createElement(Text, { style: [styles21.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, !isWeb2 ? /* @__PURE__ */ React25.createElement(Animated.View, { style: { transform: [{ scale: scale2 }], opacity: disabled ? 0.45 : 1 } }, /* @__PURE__ */ React25.createElement(
|
|
1703
1799
|
TouchableOpacity,
|
|
1704
1800
|
{
|
|
1705
1801
|
style: [
|
|
1706
|
-
|
|
1802
|
+
styles21.trigger,
|
|
1707
1803
|
{
|
|
1708
1804
|
borderColor: error ? colors.destructive : colors.border,
|
|
1709
1805
|
backgroundColor: colors.background
|
|
@@ -1715,11 +1811,11 @@ function Select({
|
|
|
1715
1811
|
activeOpacity: 1,
|
|
1716
1812
|
touchSoundDisabled: true
|
|
1717
1813
|
},
|
|
1718
|
-
/* @__PURE__ */
|
|
1814
|
+
/* @__PURE__ */ React25.createElement(
|
|
1719
1815
|
Text,
|
|
1720
1816
|
{
|
|
1721
1817
|
style: [
|
|
1722
|
-
|
|
1818
|
+
styles21.triggerText,
|
|
1723
1819
|
{ color: selected ? colors.foreground : colors.mutedForeground }
|
|
1724
1820
|
],
|
|
1725
1821
|
numberOfLines: 1,
|
|
@@ -1727,8 +1823,8 @@ function Select({
|
|
|
1727
1823
|
},
|
|
1728
1824
|
selected?.label ?? placeholder
|
|
1729
1825
|
),
|
|
1730
|
-
/* @__PURE__ */
|
|
1731
|
-
)) : null, isIOS ? /* @__PURE__ */
|
|
1826
|
+
/* @__PURE__ */ React25.createElement(Entypo$1, { name: "chevron-with-circle-down", size: 20, color: colors.mutedForeground })
|
|
1827
|
+
)) : null, isIOS ? /* @__PURE__ */ React25.createElement(
|
|
1732
1828
|
Modal,
|
|
1733
1829
|
{
|
|
1734
1830
|
visible: pickerVisible,
|
|
@@ -1736,16 +1832,16 @@ function Select({
|
|
|
1736
1832
|
animationType: "slide",
|
|
1737
1833
|
onRequestClose: handleDismiss
|
|
1738
1834
|
},
|
|
1739
|
-
/* @__PURE__ */
|
|
1740
|
-
/* @__PURE__ */
|
|
1835
|
+
/* @__PURE__ */ React25.createElement(TouchableOpacity, { style: styles21.iosBackdrop, activeOpacity: 1, onPress: handleDismiss }),
|
|
1836
|
+
/* @__PURE__ */ React25.createElement(View, { style: [styles21.iosSheet, { backgroundColor: colors.card }] }, /* @__PURE__ */ React25.createElement(View, { style: [styles21.iosToolbar, { borderBottomColor: colors.border }] }, label ? /* @__PURE__ */ React25.createElement(Text, { style: [styles21.iosToolbarTitle, { color: colors.foreground }], allowFontScaling: true }, label) : /* @__PURE__ */ React25.createElement(View, null), /* @__PURE__ */ React25.createElement(TouchableOpacity, { onPress: handleConfirm, style: styles21.iosDoneBtn, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 } }, /* @__PURE__ */ React25.createElement(Text, { style: [styles21.iosDoneBtnText, { color: colors.primary }], allowFontScaling: true }, "Done"))), /* @__PURE__ */ React25.createElement(
|
|
1741
1837
|
Picker,
|
|
1742
1838
|
{
|
|
1743
1839
|
selectedValue: pendingValue ?? "",
|
|
1744
1840
|
onValueChange: (val) => setPendingValue(val),
|
|
1745
1841
|
itemStyle: { color: colors.foreground }
|
|
1746
1842
|
},
|
|
1747
|
-
!value ? /* @__PURE__ */
|
|
1748
|
-
options.map((o) => /* @__PURE__ */
|
|
1843
|
+
!value ? /* @__PURE__ */ React25.createElement(Picker.Item, { label: placeholder, value: "", color: colors.mutedForeground, enabled: false }) : null,
|
|
1844
|
+
options.map((o) => /* @__PURE__ */ React25.createElement(
|
|
1749
1845
|
Picker.Item,
|
|
1750
1846
|
{
|
|
1751
1847
|
key: o.value,
|
|
@@ -1756,7 +1852,7 @@ function Select({
|
|
|
1756
1852
|
}
|
|
1757
1853
|
))
|
|
1758
1854
|
))
|
|
1759
|
-
) : null, isAndroid ? /* @__PURE__ */
|
|
1855
|
+
) : null, isAndroid ? /* @__PURE__ */ React25.createElement(
|
|
1760
1856
|
Picker,
|
|
1761
1857
|
{
|
|
1762
1858
|
ref: pickerRef,
|
|
@@ -1770,10 +1866,10 @@ function Select({
|
|
|
1770
1866
|
mode: "dialog",
|
|
1771
1867
|
enabled: !disabled,
|
|
1772
1868
|
prompt: label,
|
|
1773
|
-
style:
|
|
1869
|
+
style: styles21.androidHiddenPicker
|
|
1774
1870
|
},
|
|
1775
|
-
!value ? /* @__PURE__ */
|
|
1776
|
-
options.map((o) => /* @__PURE__ */
|
|
1871
|
+
!value ? /* @__PURE__ */ React25.createElement(Picker.Item, { label: placeholder, value: "", enabled: false }) : null,
|
|
1872
|
+
options.map((o) => /* @__PURE__ */ React25.createElement(
|
|
1777
1873
|
Picker.Item,
|
|
1778
1874
|
{
|
|
1779
1875
|
key: o.value,
|
|
@@ -1782,7 +1878,7 @@ function Select({
|
|
|
1782
1878
|
enabled: !o.disabled
|
|
1783
1879
|
}
|
|
1784
1880
|
))
|
|
1785
|
-
) : null, isWeb2 ? /* @__PURE__ */
|
|
1881
|
+
) : null, isWeb2 ? /* @__PURE__ */ React25.createElement(
|
|
1786
1882
|
Picker,
|
|
1787
1883
|
{
|
|
1788
1884
|
selectedValue: value ?? "",
|
|
@@ -1793,7 +1889,7 @@ function Select({
|
|
|
1793
1889
|
},
|
|
1794
1890
|
enabled: !disabled,
|
|
1795
1891
|
style: [
|
|
1796
|
-
|
|
1892
|
+
styles21.webPicker,
|
|
1797
1893
|
{
|
|
1798
1894
|
borderColor: error ? colors.destructive : colors.border,
|
|
1799
1895
|
color: selected ? colors.foreground : colors.mutedForeground,
|
|
@@ -1802,8 +1898,8 @@ function Select({
|
|
|
1802
1898
|
}
|
|
1803
1899
|
]
|
|
1804
1900
|
},
|
|
1805
|
-
/* @__PURE__ */
|
|
1806
|
-
options.map((o) => /* @__PURE__ */
|
|
1901
|
+
/* @__PURE__ */ React25.createElement(Picker.Item, { label: placeholder, value: "", enabled: false }),
|
|
1902
|
+
options.map((o) => /* @__PURE__ */ React25.createElement(
|
|
1807
1903
|
Picker.Item,
|
|
1808
1904
|
{
|
|
1809
1905
|
key: o.value,
|
|
@@ -1812,9 +1908,9 @@ function Select({
|
|
|
1812
1908
|
enabled: !o.disabled
|
|
1813
1909
|
}
|
|
1814
1910
|
))
|
|
1815
|
-
) : null, error ? /* @__PURE__ */
|
|
1911
|
+
) : null, error ? /* @__PURE__ */ React25.createElement(Text, { style: [styles21.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null);
|
|
1816
1912
|
}
|
|
1817
|
-
var
|
|
1913
|
+
var styles21 = StyleSheet.create({
|
|
1818
1914
|
container: {
|
|
1819
1915
|
gap: vs(8)
|
|
1820
1916
|
},
|
|
@@ -1942,9 +2038,9 @@ function ToastNotification({ item, onDismiss }) {
|
|
|
1942
2038
|
destructive: colors.destructiveForeground,
|
|
1943
2039
|
success: colors.successForeground
|
|
1944
2040
|
}[item.variant ?? "default"];
|
|
1945
|
-
const defaultIcon = item.variant === "success" ? /* @__PURE__ */
|
|
2041
|
+
const defaultIcon = item.variant === "success" ? /* @__PURE__ */ React25.createElement(FontAwesome5$1, { name: "check-circle", size: 22, color: textColor }) : item.variant === "destructive" ? /* @__PURE__ */ React25.createElement(MaterialIcons$1, { name: "error-outline", size: 24, color: textColor }) : /* @__PURE__ */ React25.createElement(Entypo$1, { name: "info-with-circle", size: 22, color: textColor });
|
|
1946
2042
|
const leftIcon = item.iconName ? renderIcon(item.iconName, 22, item.iconColor ?? textColor) : item.icon ?? defaultIcon;
|
|
1947
|
-
return /* @__PURE__ */
|
|
2043
|
+
return /* @__PURE__ */ React25.createElement(GestureDetector, { gesture: panGesture }, /* @__PURE__ */ React25.createElement(Animated11.View, { style: [styles22.toast, { backgroundColor: bgColor }, animatedStyle] }, /* @__PURE__ */ React25.createElement(View, { style: styles22.leftIconContainer }, leftIcon), /* @__PURE__ */ React25.createElement(View, { style: styles22.toastContent }, item.title ? /* @__PURE__ */ React25.createElement(Text, { style: [styles22.toastTitle, { color: textColor }], allowFontScaling: true }, item.title) : null, item.description ? /* @__PURE__ */ React25.createElement(Text, { style: [styles22.toastDescription, { color: textColor, opacity: 0.85 }], allowFontScaling: true }, item.description) : null), /* @__PURE__ */ React25.createElement(TouchableOpacity, { onPress: onDismiss, style: styles22.dismissButton, touchSoundDisabled: true }, /* @__PURE__ */ React25.createElement(AntDesign$1, { name: "close-circle", size: 18, color: textColor }))));
|
|
1948
2044
|
}
|
|
1949
2045
|
function ToastProvider({ children }) {
|
|
1950
2046
|
const [toasts, setToasts] = useState([]);
|
|
@@ -1963,9 +2059,9 @@ function ToastProvider({ children }) {
|
|
|
1963
2059
|
const dismiss = useCallback((id) => {
|
|
1964
2060
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
1965
2061
|
}, []);
|
|
1966
|
-
return /* @__PURE__ */
|
|
2062
|
+
return /* @__PURE__ */ React25.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React25.createElement(View, { style: [styles22.container, Platform.OS === "web" && styles22.containerWeb, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React25.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
|
|
1967
2063
|
}
|
|
1968
|
-
var
|
|
2064
|
+
var styles22 = StyleSheet.create({
|
|
1969
2065
|
container: {
|
|
1970
2066
|
position: "absolute",
|
|
1971
2067
|
left: s(16),
|
|
@@ -2043,7 +2139,7 @@ function CurrencyInput({
|
|
|
2043
2139
|
onChangeValue?.(isNaN(raw) ? 0 : raw);
|
|
2044
2140
|
};
|
|
2045
2141
|
const inputStyle = size === "large" ? { fontSize: ms(36) } : {};
|
|
2046
|
-
return /* @__PURE__ */
|
|
2142
|
+
return /* @__PURE__ */ React25.createElement(
|
|
2047
2143
|
Input,
|
|
2048
2144
|
{
|
|
2049
2145
|
value,
|
|
@@ -2074,16 +2170,16 @@ function formatValue(value, prefix, showDecimals) {
|
|
|
2074
2170
|
function CurrencyDisplay({ value, prefix = "$", showDecimals = false, textColor, style }) {
|
|
2075
2171
|
const { colors } = useTheme();
|
|
2076
2172
|
const formatted = formatValue(value, prefix, showDecimals);
|
|
2077
|
-
return /* @__PURE__ */
|
|
2173
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles23.container, style] }, /* @__PURE__ */ React25.createElement(Text, { style: [styles23.amount, { color: textColor ?? colors.foreground }], allowFontScaling: true }, formatted));
|
|
2078
2174
|
}
|
|
2079
|
-
var
|
|
2175
|
+
var styles23 = StyleSheet.create({
|
|
2080
2176
|
container: {},
|
|
2081
2177
|
amount: {
|
|
2082
2178
|
fontSize: ms(56),
|
|
2083
2179
|
fontWeight: "700"
|
|
2084
2180
|
}
|
|
2085
2181
|
});
|
|
2086
|
-
var
|
|
2182
|
+
var nativeDriver8 = Platform.OS !== "web";
|
|
2087
2183
|
function ListItem({
|
|
2088
2184
|
leftRender,
|
|
2089
2185
|
rightRender,
|
|
@@ -2112,7 +2208,7 @@ function ListItem({
|
|
|
2112
2208
|
if (!onPress || disabled) return;
|
|
2113
2209
|
Animated.spring(scale2, {
|
|
2114
2210
|
toValue: 0.97,
|
|
2115
|
-
useNativeDriver:
|
|
2211
|
+
useNativeDriver: nativeDriver8,
|
|
2116
2212
|
speed: 40,
|
|
2117
2213
|
bounciness: 0
|
|
2118
2214
|
}).start();
|
|
@@ -2120,7 +2216,7 @@ function ListItem({
|
|
|
2120
2216
|
const handlePressOut = () => {
|
|
2121
2217
|
Animated.spring(scale2, {
|
|
2122
2218
|
toValue: 1,
|
|
2123
|
-
useNativeDriver:
|
|
2219
|
+
useNativeDriver: nativeDriver8,
|
|
2124
2220
|
speed: 40,
|
|
2125
2221
|
bounciness: 4
|
|
2126
2222
|
}).start();
|
|
@@ -2142,10 +2238,10 @@ function ListItem({
|
|
|
2142
2238
|
shadowRadius: 6,
|
|
2143
2239
|
elevation: 2
|
|
2144
2240
|
} : {};
|
|
2145
|
-
return /* @__PURE__ */
|
|
2241
|
+
return /* @__PURE__ */ React25.createElement(Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles24.disabled] }, /* @__PURE__ */ React25.createElement(
|
|
2146
2242
|
TouchableOpacity,
|
|
2147
2243
|
{
|
|
2148
|
-
style: [
|
|
2244
|
+
style: [styles24.container, cardStyle, style],
|
|
2149
2245
|
onPress: onPress ? handlePress : void 0,
|
|
2150
2246
|
onPressIn: handlePressIn,
|
|
2151
2247
|
onPressOut: handlePressOut,
|
|
@@ -2153,51 +2249,51 @@ function ListItem({
|
|
|
2153
2249
|
activeOpacity: 1,
|
|
2154
2250
|
touchSoundDisabled: true
|
|
2155
2251
|
},
|
|
2156
|
-
effectiveLeft ? /* @__PURE__ */
|
|
2157
|
-
/* @__PURE__ */
|
|
2252
|
+
effectiveLeft ? /* @__PURE__ */ React25.createElement(View, { style: styles24.leftContainer }, effectiveLeft) : null,
|
|
2253
|
+
/* @__PURE__ */ React25.createElement(View, { style: styles24.content }, /* @__PURE__ */ React25.createElement(
|
|
2158
2254
|
Text,
|
|
2159
2255
|
{
|
|
2160
|
-
style: [
|
|
2256
|
+
style: [styles24.title, { color: colors.foreground }, titleStyle],
|
|
2161
2257
|
numberOfLines: 2,
|
|
2162
2258
|
allowFontScaling: true
|
|
2163
2259
|
},
|
|
2164
2260
|
title
|
|
2165
|
-
), subtitle ? /* @__PURE__ */
|
|
2261
|
+
), subtitle ? /* @__PURE__ */ React25.createElement(
|
|
2166
2262
|
Text,
|
|
2167
2263
|
{
|
|
2168
|
-
style: [
|
|
2264
|
+
style: [styles24.subtitle, { color: colors.mutedForeground }, subtitleStyle],
|
|
2169
2265
|
numberOfLines: 2,
|
|
2170
2266
|
allowFontScaling: true
|
|
2171
2267
|
},
|
|
2172
2268
|
subtitle
|
|
2173
|
-
) : null, caption ? /* @__PURE__ */
|
|
2269
|
+
) : null, caption ? /* @__PURE__ */ React25.createElement(
|
|
2174
2270
|
Text,
|
|
2175
2271
|
{
|
|
2176
|
-
style: [
|
|
2272
|
+
style: [styles24.caption, { color: colors.mutedForeground }, captionStyle],
|
|
2177
2273
|
numberOfLines: 1,
|
|
2178
2274
|
allowFontScaling: true
|
|
2179
2275
|
},
|
|
2180
2276
|
caption
|
|
2181
2277
|
) : null),
|
|
2182
|
-
effectiveRight !== void 0 ? /* @__PURE__ */
|
|
2278
|
+
effectiveRight !== void 0 ? /* @__PURE__ */ React25.createElement(View, { style: styles24.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React25.createElement(
|
|
2183
2279
|
Text,
|
|
2184
2280
|
{
|
|
2185
|
-
style: [
|
|
2281
|
+
style: [styles24.rightText, { color: colors.mutedForeground }],
|
|
2186
2282
|
allowFontScaling: true
|
|
2187
2283
|
},
|
|
2188
2284
|
effectiveRight
|
|
2189
|
-
) : effectiveRight) : showChevron ? /* @__PURE__ */
|
|
2190
|
-
), showSeparator ? /* @__PURE__ */
|
|
2285
|
+
) : effectiveRight) : showChevron ? /* @__PURE__ */ React25.createElement(Entypo$1, { name: "chevron-with-circle-right", size: 20, color: colors.mutedForeground }) : null
|
|
2286
|
+
), showSeparator ? /* @__PURE__ */ React25.createElement(
|
|
2191
2287
|
View,
|
|
2192
2288
|
{
|
|
2193
2289
|
style: [
|
|
2194
|
-
|
|
2290
|
+
styles24.separator,
|
|
2195
2291
|
{ backgroundColor: colors.border, marginLeft: effectiveLeft ? s(16) + s(44) + s(12) : s(16) }
|
|
2196
2292
|
]
|
|
2197
2293
|
}
|
|
2198
2294
|
) : null);
|
|
2199
2295
|
}
|
|
2200
|
-
var
|
|
2296
|
+
var styles24 = StyleSheet.create({
|
|
2201
2297
|
container: {
|
|
2202
2298
|
flexDirection: "row",
|
|
2203
2299
|
alignItems: "center",
|
|
@@ -2252,7 +2348,7 @@ var styles23 = StyleSheet.create({
|
|
|
2252
2348
|
opacity: 0.45
|
|
2253
2349
|
}
|
|
2254
2350
|
});
|
|
2255
|
-
var
|
|
2351
|
+
var nativeDriver9 = Platform.OS !== "web";
|
|
2256
2352
|
function Chip({ label, selected = false, onPress, style }) {
|
|
2257
2353
|
const { colors } = useTheme();
|
|
2258
2354
|
const scale2 = useRef(new Animated.Value(1)).current;
|
|
@@ -2268,7 +2364,7 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2268
2364
|
const handlePressIn = () => {
|
|
2269
2365
|
Animated.spring(scale2, {
|
|
2270
2366
|
toValue: 0.95,
|
|
2271
|
-
useNativeDriver:
|
|
2367
|
+
useNativeDriver: nativeDriver9,
|
|
2272
2368
|
speed: 40,
|
|
2273
2369
|
bounciness: 0
|
|
2274
2370
|
}).start();
|
|
@@ -2276,7 +2372,7 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2276
2372
|
const handlePressOut = () => {
|
|
2277
2373
|
Animated.spring(scale2, {
|
|
2278
2374
|
toValue: 1,
|
|
2279
|
-
useNativeDriver:
|
|
2375
|
+
useNativeDriver: nativeDriver9,
|
|
2280
2376
|
speed: 40,
|
|
2281
2377
|
bounciness: 4
|
|
2282
2378
|
}).start();
|
|
@@ -2297,7 +2393,7 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2297
2393
|
inputRange: [0, 1],
|
|
2298
2394
|
outputRange: [colors.border, colors.primary]
|
|
2299
2395
|
});
|
|
2300
|
-
return /* @__PURE__ */
|
|
2396
|
+
return /* @__PURE__ */ React25.createElement(Animated.View, { style: [styles25.wrapper, { transform: [{ scale: scale2 }] }, style] }, /* @__PURE__ */ React25.createElement(
|
|
2301
2397
|
TouchableOpacity,
|
|
2302
2398
|
{
|
|
2303
2399
|
onPress: handlePress,
|
|
@@ -2306,7 +2402,7 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2306
2402
|
activeOpacity: 1,
|
|
2307
2403
|
touchSoundDisabled: true
|
|
2308
2404
|
},
|
|
2309
|
-
/* @__PURE__ */
|
|
2405
|
+
/* @__PURE__ */ React25.createElement(Animated.View, { style: [styles25.chip, { backgroundColor, borderColor }] }, /* @__PURE__ */ React25.createElement(Animated.Text, { style: [styles25.label, { color: textColor }], allowFontScaling: true }, label))
|
|
2310
2406
|
));
|
|
2311
2407
|
}
|
|
2312
2408
|
function ChipGroup({ options, value, onValueChange, multiSelect = false, style }) {
|
|
@@ -2331,7 +2427,7 @@ function ChipGroup({ options, value, onValueChange, multiSelect = false, style }
|
|
|
2331
2427
|
}
|
|
2332
2428
|
return optionValue === value;
|
|
2333
2429
|
};
|
|
2334
|
-
return /* @__PURE__ */
|
|
2430
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles25.group, style] }, options.map((opt) => /* @__PURE__ */ React25.createElement(
|
|
2335
2431
|
Chip,
|
|
2336
2432
|
{
|
|
2337
2433
|
key: opt.value,
|
|
@@ -2341,7 +2437,7 @@ function ChipGroup({ options, value, onValueChange, multiSelect = false, style }
|
|
|
2341
2437
|
}
|
|
2342
2438
|
)));
|
|
2343
2439
|
}
|
|
2344
|
-
var
|
|
2440
|
+
var styles25 = StyleSheet.create({
|
|
2345
2441
|
wrapper: {},
|
|
2346
2442
|
chip: {
|
|
2347
2443
|
borderRadius: 999,
|
|
@@ -2373,18 +2469,18 @@ function ConfirmDialog({
|
|
|
2373
2469
|
onCancel
|
|
2374
2470
|
}) {
|
|
2375
2471
|
const { colors } = useTheme();
|
|
2376
|
-
return /* @__PURE__ */
|
|
2472
|
+
return /* @__PURE__ */ React25.createElement(Modal, { visible, transparent: true, animationType: "fade", onRequestClose: onCancel }, /* @__PURE__ */ React25.createElement(TouchableOpacity, { style: styles26.overlay, activeOpacity: 1, onPress: onCancel }, /* @__PURE__ */ React25.createElement(
|
|
2377
2473
|
View,
|
|
2378
2474
|
{
|
|
2379
|
-
style: [
|
|
2475
|
+
style: [styles26.dialog, { backgroundColor: colors.card }],
|
|
2380
2476
|
onStartShouldSetResponder: () => true
|
|
2381
2477
|
},
|
|
2382
|
-
/* @__PURE__ */
|
|
2383
|
-
description ? /* @__PURE__ */
|
|
2384
|
-
/* @__PURE__ */
|
|
2478
|
+
/* @__PURE__ */ React25.createElement(Text, { style: [styles26.title, { color: colors.cardForeground }], allowFontScaling: true }, title),
|
|
2479
|
+
description ? /* @__PURE__ */ React25.createElement(Text, { style: [styles26.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null,
|
|
2480
|
+
/* @__PURE__ */ React25.createElement(View, { style: styles26.actions }, /* @__PURE__ */ React25.createElement(Button, { label: cancelLabel, variant: "outline", fullWidth: true, onPress: onCancel }), /* @__PURE__ */ React25.createElement(Button, { label: confirmLabel, variant: confirmVariant, fullWidth: true, onPress: onConfirm }))
|
|
2385
2481
|
)));
|
|
2386
2482
|
}
|
|
2387
|
-
var
|
|
2483
|
+
var styles26 = StyleSheet.create({
|
|
2388
2484
|
overlay: {
|
|
2389
2485
|
flex: 1,
|
|
2390
2486
|
backgroundColor: "rgba(0,0,0,0.5)",
|
|
@@ -2420,9 +2516,9 @@ var styles25 = StyleSheet.create({
|
|
|
2420
2516
|
});
|
|
2421
2517
|
function LabelValue({ label, value, style }) {
|
|
2422
2518
|
const { colors } = useTheme();
|
|
2423
|
-
return /* @__PURE__ */
|
|
2519
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles27.container, style] }, /* @__PURE__ */ React25.createElement(Text, { style: [styles27.label, { color: colors.mutedForeground }], allowFontScaling: true }, label), typeof value === "string" ? /* @__PURE__ */ React25.createElement(Text, { style: [styles27.value, { color: colors.foreground }], allowFontScaling: true }, value) : value);
|
|
2424
2520
|
}
|
|
2425
|
-
var
|
|
2521
|
+
var styles27 = StyleSheet.create({
|
|
2426
2522
|
container: {
|
|
2427
2523
|
flexDirection: "row",
|
|
2428
2524
|
justifyContent: "space-between",
|
|
@@ -2472,27 +2568,27 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2472
2568
|
onChange({ month: value.month + 1, year: value.year });
|
|
2473
2569
|
}
|
|
2474
2570
|
};
|
|
2475
|
-
return /* @__PURE__ */
|
|
2571
|
+
return /* @__PURE__ */ React25.createElement(View, { style: [styles28.container, style] }, /* @__PURE__ */ React25.createElement(
|
|
2476
2572
|
TouchableOpacity,
|
|
2477
2573
|
{
|
|
2478
|
-
style:
|
|
2574
|
+
style: styles28.arrow,
|
|
2479
2575
|
onPress: handlePrev,
|
|
2480
2576
|
activeOpacity: 0.6,
|
|
2481
2577
|
touchSoundDisabled: true
|
|
2482
2578
|
},
|
|
2483
|
-
/* @__PURE__ */
|
|
2484
|
-
), /* @__PURE__ */
|
|
2579
|
+
/* @__PURE__ */ React25.createElement(Entypo$1, { name: "chevron-left", size: 22, color: colors.foreground })
|
|
2580
|
+
), /* @__PURE__ */ React25.createElement(Text, { style: [styles28.label, { color: colors.foreground }], allowFontScaling: true }, MONTH_NAMES[value.month - 1], " ", value.year), /* @__PURE__ */ React25.createElement(
|
|
2485
2581
|
TouchableOpacity,
|
|
2486
2582
|
{
|
|
2487
|
-
style:
|
|
2583
|
+
style: styles28.arrow,
|
|
2488
2584
|
onPress: handleNext,
|
|
2489
2585
|
activeOpacity: 0.6,
|
|
2490
2586
|
touchSoundDisabled: true
|
|
2491
2587
|
},
|
|
2492
|
-
/* @__PURE__ */
|
|
2588
|
+
/* @__PURE__ */ React25.createElement(Entypo$1, { name: "chevron-right", size: 22, color: colors.foreground })
|
|
2493
2589
|
));
|
|
2494
2590
|
}
|
|
2495
|
-
var
|
|
2591
|
+
var styles28 = StyleSheet.create({
|
|
2496
2592
|
container: {
|
|
2497
2593
|
flexDirection: "row",
|
|
2498
2594
|
alignItems: "center",
|
|
@@ -2513,4 +2609,62 @@ var styles27 = StyleSheet.create({
|
|
|
2513
2609
|
}
|
|
2514
2610
|
});
|
|
2515
2611
|
|
|
2516
|
-
|
|
2612
|
+
// src/tokens.ts
|
|
2613
|
+
var SPACING = {
|
|
2614
|
+
xs: 4,
|
|
2615
|
+
sm: 8,
|
|
2616
|
+
md: 12,
|
|
2617
|
+
lg: 16,
|
|
2618
|
+
xl: 24,
|
|
2619
|
+
"2xl": 32,
|
|
2620
|
+
"3xl": 48
|
|
2621
|
+
};
|
|
2622
|
+
var ICON_SIZES = {
|
|
2623
|
+
sm: 14,
|
|
2624
|
+
md: 18,
|
|
2625
|
+
lg: 22,
|
|
2626
|
+
xl: 28,
|
|
2627
|
+
"2xl": 32
|
|
2628
|
+
};
|
|
2629
|
+
var RADIUS = {
|
|
2630
|
+
sm: 4,
|
|
2631
|
+
md: 8,
|
|
2632
|
+
lg: 12,
|
|
2633
|
+
xl: 16,
|
|
2634
|
+
full: 9999
|
|
2635
|
+
};
|
|
2636
|
+
var SHADOWS = {
|
|
2637
|
+
sm: {
|
|
2638
|
+
shadowColor: "#000",
|
|
2639
|
+
shadowOffset: { width: 0, height: 1 },
|
|
2640
|
+
shadowOpacity: 0.08,
|
|
2641
|
+
shadowRadius: 4,
|
|
2642
|
+
elevation: 2
|
|
2643
|
+
},
|
|
2644
|
+
md: {
|
|
2645
|
+
shadowColor: "#000",
|
|
2646
|
+
shadowOffset: { width: 0, height: 3 },
|
|
2647
|
+
shadowOpacity: 0.12,
|
|
2648
|
+
shadowRadius: 8,
|
|
2649
|
+
elevation: 5
|
|
2650
|
+
},
|
|
2651
|
+
lg: {
|
|
2652
|
+
shadowColor: "#000",
|
|
2653
|
+
shadowOffset: { width: 0, height: 6 },
|
|
2654
|
+
shadowOpacity: 0.2,
|
|
2655
|
+
shadowRadius: 16,
|
|
2656
|
+
elevation: 10
|
|
2657
|
+
},
|
|
2658
|
+
xl: {
|
|
2659
|
+
shadowColor: "#000",
|
|
2660
|
+
shadowOffset: { width: 0, height: 12 },
|
|
2661
|
+
shadowOpacity: 0.28,
|
|
2662
|
+
shadowRadius: 24,
|
|
2663
|
+
elevation: 18
|
|
2664
|
+
}
|
|
2665
|
+
};
|
|
2666
|
+
var BREAKPOINTS = {
|
|
2667
|
+
wide: 700
|
|
2668
|
+
};
|
|
2669
|
+
|
|
2670
|
+
export { Accordion, AlertBanner, Avatar, BREAKPOINTS, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Chip, ChipGroup, ConfirmDialog, CurrencyDisplay, CurrencyInput, CurrencyInput as CurrencyInputLarge, EmptyState, ICON_SIZES, Icon, IconButton, Input, LabelValue, ListItem, MonthPicker, Progress, RADIUS, RadioGroup, SHADOWS, SPACING, Select, Separator, Sheet, Skeleton, Slider, Spinner, Switch, Tabs, TabsContent, Text2 as Text, Textarea, ThemeProvider, ToastProvider, Toggle, defaultDark, defaultLight, renderIcon, useTheme, useToast };
|