@retray-dev/ui-kit 2.5.2 → 2.6.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 +152 -5
- package/dist/index.d.mts +98 -8
- package/dist/index.d.ts +98 -8
- package/dist/index.js +240 -166
- package/dist/index.mjs +185 -119
- package/package.json +1 -1
- package/src/components/AlertBanner/AlertBanner.tsx +14 -2
- package/src/components/Badge/Badge.tsx +16 -2
- package/src/components/Button/Button.tsx +20 -3
- package/src/components/EmptyState/EmptyState.tsx +15 -3
- package/src/components/Input/Input.tsx +29 -8
- package/src/components/ListItem/ListItem.tsx +26 -3
- package/src/components/Toast/Toast.tsx +11 -1
- package/src/components/Toggle/Toggle.tsx +27 -2
- package/src/index.ts +4 -0
- package/src/utils/icons.ts +73 -0
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React24, { 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
|
-
import
|
|
4
|
+
import AntDesign from '@expo/vector-icons/AntDesign';
|
|
5
|
+
import Entypo from '@expo/vector-icons/Entypo';
|
|
6
|
+
import Feather from '@expo/vector-icons/Feather';
|
|
7
|
+
import FontAwesome5 from '@expo/vector-icons/FontAwesome5';
|
|
8
|
+
import MaterialIcons from '@expo/vector-icons/MaterialIcons';
|
|
9
|
+
import Ionicons from '@expo/vector-icons/Ionicons';
|
|
10
|
+
import { AntDesign as AntDesign$1, Entypo as Entypo$1, FontAwesome5 as FontAwesome5$1, MaterialIcons as MaterialIcons$1 } from '@expo/vector-icons';
|
|
5
11
|
import { LinearGradient } from 'expo-linear-gradient';
|
|
6
12
|
import Animated10, { useSharedValue, useDerivedValue, withTiming, Easing as Easing$1, useAnimatedStyle, withSpring } from 'react-native-reanimated';
|
|
7
13
|
import RNSlider from '@react-native-community/slider';
|
|
@@ -76,7 +82,7 @@ function ThemeProvider({ children, theme, colorScheme = "system" }) {
|
|
|
76
82
|
const override = resolvedScheme === "dark" ? theme?.dark : theme?.light;
|
|
77
83
|
return override ? { ...base, ...override } : base;
|
|
78
84
|
}, [resolvedScheme, theme]);
|
|
79
|
-
return /* @__PURE__ */
|
|
85
|
+
return /* @__PURE__ */ React24.createElement(ThemeContext.Provider, { value: { colors, colorScheme: resolvedScheme } }, children);
|
|
80
86
|
}
|
|
81
87
|
function useTheme() {
|
|
82
88
|
const context = useContext(ThemeContext);
|
|
@@ -106,6 +112,45 @@ var s = isWeb ? (n) => n : scale;
|
|
|
106
112
|
var vs = isWeb ? (n) => n : verticalScale;
|
|
107
113
|
var ms = isWeb ? (n, _factor) => n : moderateScale;
|
|
108
114
|
var mvs = isWeb ? (n, _factor) => n : moderateVerticalScale;
|
|
115
|
+
var ICON_FAMILIES = [
|
|
116
|
+
{ name: "Ionicons", component: Ionicons, glyphMap: Ionicons.glyphMap },
|
|
117
|
+
{ name: "MaterialIcons", component: MaterialIcons, glyphMap: MaterialIcons.glyphMap },
|
|
118
|
+
{ name: "FontAwesome5", component: FontAwesome5, glyphMap: FontAwesome5.glyphMap },
|
|
119
|
+
{ name: "Entypo", component: Entypo, glyphMap: Entypo.glyphMap },
|
|
120
|
+
{ name: "AntDesign", component: AntDesign, glyphMap: AntDesign.glyphMap },
|
|
121
|
+
{ name: "Feather", component: Feather, glyphMap: Feather.glyphMap }
|
|
122
|
+
];
|
|
123
|
+
var resolvedCache = null;
|
|
124
|
+
function buildCache() {
|
|
125
|
+
const cache = /* @__PURE__ */ new Map();
|
|
126
|
+
for (const family of ICON_FAMILIES) {
|
|
127
|
+
if (!family.glyphMap) continue;
|
|
128
|
+
for (const iconName of Object.keys(family.glyphMap)) {
|
|
129
|
+
cache.set(iconName, family);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return cache;
|
|
133
|
+
}
|
|
134
|
+
function resolveFamily(name) {
|
|
135
|
+
if (!resolvedCache) {
|
|
136
|
+
resolvedCache = buildCache();
|
|
137
|
+
}
|
|
138
|
+
return resolvedCache.get(name) ?? null;
|
|
139
|
+
}
|
|
140
|
+
function Icon({ name, size, color, family }) {
|
|
141
|
+
let resolved = null;
|
|
142
|
+
if (family) {
|
|
143
|
+
resolved = ICON_FAMILIES.find((f) => f.name === family) ?? null;
|
|
144
|
+
} else {
|
|
145
|
+
resolved = resolveFamily(name);
|
|
146
|
+
}
|
|
147
|
+
if (!resolved) return null;
|
|
148
|
+
const Component = resolved.component;
|
|
149
|
+
return React24.createElement(Component, { name, size, color });
|
|
150
|
+
}
|
|
151
|
+
function renderIcon(name, size, color) {
|
|
152
|
+
return React24.createElement(Icon, { name, size, color });
|
|
153
|
+
}
|
|
109
154
|
|
|
110
155
|
// src/components/Button/Button.tsx
|
|
111
156
|
var nativeDriver = Platform.OS !== "web";
|
|
@@ -119,6 +164,7 @@ var labelSizeStyles = {
|
|
|
119
164
|
md: { fontSize: ms(17) },
|
|
120
165
|
lg: { fontSize: ms(18) }
|
|
121
166
|
};
|
|
167
|
+
var iconSizeMap = { sm: 16, md: 18, lg: 20 };
|
|
122
168
|
function Button({
|
|
123
169
|
label,
|
|
124
170
|
variant = "primary",
|
|
@@ -126,6 +172,8 @@ function Button({
|
|
|
126
172
|
loading = false,
|
|
127
173
|
fullWidth = false,
|
|
128
174
|
icon,
|
|
175
|
+
iconName,
|
|
176
|
+
iconColor,
|
|
129
177
|
iconPosition = "left",
|
|
130
178
|
disabled,
|
|
131
179
|
style,
|
|
@@ -165,8 +213,9 @@ function Button({
|
|
|
165
213
|
ghost: { color: colors.foreground },
|
|
166
214
|
destructive: { color: colors.destructiveForeground }
|
|
167
215
|
}[variant];
|
|
216
|
+
const effectiveIcon = iconName ? renderIcon(iconName, iconSizeMap[size], iconColor ?? labelVariantStyle.color) : typeof icon === "function" ? icon({ label, size, variant }) : icon;
|
|
168
217
|
const spinnerColor = variant === "destructive" ? colors.destructiveForeground : variant === "primary" || variant === "secondary" ? colors.primaryForeground : colors.foreground;
|
|
169
|
-
return /* @__PURE__ */
|
|
218
|
+
return /* @__PURE__ */ React24.createElement(Animated.View, { style: [fullWidth && styles.fullWidth, { transform: [{ scale: scale2 }] }] }, /* @__PURE__ */ React24.createElement(
|
|
170
219
|
TouchableOpacity,
|
|
171
220
|
{
|
|
172
221
|
style: [
|
|
@@ -185,7 +234,7 @@ function Button({
|
|
|
185
234
|
onPressOut: handlePressOut,
|
|
186
235
|
...props
|
|
187
236
|
},
|
|
188
|
-
loading ? /* @__PURE__ */
|
|
237
|
+
loading ? /* @__PURE__ */ React24.createElement(ActivityIndicator, { size: "small", color: spinnerColor }) : /* @__PURE__ */ React24.createElement(React24.Fragment, null, effectiveIcon && iconPosition === "left" && /* @__PURE__ */ React24.createElement(React24.Fragment, null, effectiveIcon), /* @__PURE__ */ React24.createElement(Text, { style: [styles.label, labelVariantStyle, labelSizeStyles[size], effectiveIcon ? styles.labelWithIcon : void 0] }, label), effectiveIcon && iconPosition === "right" && /* @__PURE__ */ React24.createElement(React24.Fragment, null, effectiveIcon))
|
|
189
238
|
));
|
|
190
239
|
}
|
|
191
240
|
var styles = StyleSheet.create({
|
|
@@ -219,7 +268,7 @@ var variantStyles = {
|
|
|
219
268
|
function Text2({ variant = "body", color, style, children, ...props }) {
|
|
220
269
|
const { colors } = useTheme();
|
|
221
270
|
const defaultColor = variant === "caption" ? colors.mutedForeground : colors.foreground;
|
|
222
|
-
return /* @__PURE__ */
|
|
271
|
+
return /* @__PURE__ */ React24.createElement(
|
|
223
272
|
Text,
|
|
224
273
|
{
|
|
225
274
|
style: [variantStyles[variant], { color: color ?? defaultColor }, style],
|
|
@@ -230,14 +279,15 @@ function Text2({ variant = "body", color, style, children, ...props }) {
|
|
|
230
279
|
);
|
|
231
280
|
}
|
|
232
281
|
var webInputResetStyle = Platform.OS === "web" ? { outlineStyle: "none", outlineWidth: 0, outlineColor: "transparent", boxShadow: "none" } : {};
|
|
233
|
-
function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, type = "text", containerStyle, style, onFocus, onBlur, secureTextEntry, ...props }) {
|
|
282
|
+
function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, prefixIcon, suffixIcon, prefixIconColor, suffixIconColor, type = "text", containerStyle, style, onFocus, onBlur, secureTextEntry, ...props }) {
|
|
234
283
|
const { colors } = useTheme();
|
|
235
284
|
const [focused, setFocused] = useState(false);
|
|
236
285
|
const [showPassword, setShowPassword] = useState(false);
|
|
237
286
|
const isPassword = type === "password";
|
|
238
287
|
const effectiveSecure = isPassword ? !showPassword : secureTextEntry;
|
|
239
|
-
const
|
|
240
|
-
|
|
288
|
+
const effectivePrefix = prefixIcon ? renderIcon(prefixIcon, 20, prefixIconColor ?? colors.mutedForeground) : prefix;
|
|
289
|
+
const effectiveSuffix = isPassword && !suffix && !suffixIcon ? /* @__PURE__ */ React24.createElement(TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles2.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React24.createElement(AntDesign$1, { name: showPassword ? "eye" : "eye-invisible", size: 20, color: colors.mutedForeground })) : suffixIcon ? renderIcon(suffixIcon, 20, suffixIconColor ?? colors.mutedForeground) : suffix;
|
|
290
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles2.container, containerStyle] }, label ? /* @__PURE__ */ React24.createElement(Text, { style: [styles2.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React24.createElement(
|
|
241
291
|
View,
|
|
242
292
|
{
|
|
243
293
|
style: [
|
|
@@ -248,8 +298,8 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, t
|
|
|
248
298
|
}
|
|
249
299
|
]
|
|
250
300
|
},
|
|
251
|
-
|
|
252
|
-
/* @__PURE__ */
|
|
301
|
+
effectivePrefix ? typeof effectivePrefix === "string" ? /* @__PURE__ */ React24.createElement(Text, { style: [styles2.prefixText, { color: colors.mutedForeground }, prefixStyle], allowFontScaling: true }, effectivePrefix) : /* @__PURE__ */ React24.createElement(View, { style: styles2.prefixContainer }, effectivePrefix) : null,
|
|
302
|
+
/* @__PURE__ */ React24.createElement(
|
|
253
303
|
TextInput,
|
|
254
304
|
{
|
|
255
305
|
style: [
|
|
@@ -274,8 +324,8 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, t
|
|
|
274
324
|
...props
|
|
275
325
|
}
|
|
276
326
|
),
|
|
277
|
-
effectiveSuffix ? typeof effectiveSuffix === "string" ? /* @__PURE__ */
|
|
278
|
-
), error ? /* @__PURE__ */
|
|
327
|
+
effectiveSuffix ? typeof effectiveSuffix === "string" ? /* @__PURE__ */ React24.createElement(Text, { style: [styles2.suffixText, { color: colors.mutedForeground }, suffixStyle], allowFontScaling: true }, effectiveSuffix) : /* @__PURE__ */ React24.createElement(View, { style: styles2.suffixContainer }, effectiveSuffix) : null
|
|
328
|
+
), error ? /* @__PURE__ */ React24.createElement(Text, { style: [styles2.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React24.createElement(Text, { style: [styles2.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
|
|
279
329
|
}
|
|
280
330
|
var styles2 = StyleSheet.create({
|
|
281
331
|
container: {
|
|
@@ -334,7 +384,8 @@ var sizeIconGap = {
|
|
|
334
384
|
md: s(6),
|
|
335
385
|
lg: s(6)
|
|
336
386
|
};
|
|
337
|
-
|
|
387
|
+
var sizeIconSize = { sm: 10, md: 12, lg: 14 };
|
|
388
|
+
function Badge({ label, children, variant = "default", size = "md", icon, iconName, iconColor, style }) {
|
|
338
389
|
const { colors } = useTheme();
|
|
339
390
|
const containerStyle = {
|
|
340
391
|
default: { backgroundColor: colors.primary },
|
|
@@ -348,8 +399,9 @@ function Badge({ label, children, variant = "default", size = "md", icon, style
|
|
|
348
399
|
destructive: colors.destructiveForeground,
|
|
349
400
|
outline: colors.foreground
|
|
350
401
|
}[variant];
|
|
402
|
+
const effectiveIcon = iconName ? renderIcon(iconName, sizeIconSize[size], iconColor ?? textColor) : icon;
|
|
351
403
|
const content = children ?? label;
|
|
352
|
-
return /* @__PURE__ */
|
|
404
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles3.container, containerStyle, sizePadding[size], { gap: sizeIconGap[size] }, style] }, effectiveIcon ? /* @__PURE__ */ React24.createElement(View, { style: styles3.iconContainer }, effectiveIcon) : null, typeof content === "string" ? /* @__PURE__ */ React24.createElement(Text, { style: [styles3.label, { color: textColor }, sizeFontSize[size]], allowFontScaling: true }, content) : content);
|
|
353
405
|
}
|
|
354
406
|
var styles3 = StyleSheet.create({
|
|
355
407
|
container: {
|
|
@@ -416,9 +468,9 @@ function Card({ children, variant = "elevated", onPress, style }) {
|
|
|
416
468
|
elevation: 0
|
|
417
469
|
}
|
|
418
470
|
}[variant];
|
|
419
|
-
const cardContent = /* @__PURE__ */
|
|
471
|
+
const cardContent = /* @__PURE__ */ React24.createElement(View, { style: [styles4.card, variantStyle, style] }, children);
|
|
420
472
|
if (onPress) {
|
|
421
|
-
return /* @__PURE__ */
|
|
473
|
+
return /* @__PURE__ */ React24.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React24.createElement(
|
|
422
474
|
TouchableOpacity,
|
|
423
475
|
{
|
|
424
476
|
onPress: handlePress,
|
|
@@ -433,21 +485,21 @@ function Card({ children, variant = "elevated", onPress, style }) {
|
|
|
433
485
|
return cardContent;
|
|
434
486
|
}
|
|
435
487
|
function CardHeader({ children, style }) {
|
|
436
|
-
return /* @__PURE__ */
|
|
488
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles4.header, style] }, children);
|
|
437
489
|
}
|
|
438
490
|
function CardTitle({ children, style }) {
|
|
439
491
|
const { colors } = useTheme();
|
|
440
|
-
return /* @__PURE__ */
|
|
492
|
+
return /* @__PURE__ */ React24.createElement(Text, { style: [styles4.title, { color: colors.cardForeground }, style], allowFontScaling: true }, children);
|
|
441
493
|
}
|
|
442
494
|
function CardDescription({ children, style }) {
|
|
443
495
|
const { colors } = useTheme();
|
|
444
|
-
return /* @__PURE__ */
|
|
496
|
+
return /* @__PURE__ */ React24.createElement(Text, { style: [styles4.description, { color: colors.mutedForeground }, style], allowFontScaling: true }, children);
|
|
445
497
|
}
|
|
446
498
|
function CardContent({ children, style }) {
|
|
447
|
-
return /* @__PURE__ */
|
|
499
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles4.content, style] }, children);
|
|
448
500
|
}
|
|
449
501
|
function CardFooter({ children, style }) {
|
|
450
|
-
return /* @__PURE__ */
|
|
502
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles4.footer, style] }, children);
|
|
451
503
|
}
|
|
452
504
|
var styles4 = StyleSheet.create({
|
|
453
505
|
card: {
|
|
@@ -480,7 +532,7 @@ var styles4 = StyleSheet.create({
|
|
|
480
532
|
});
|
|
481
533
|
function Separator({ orientation = "horizontal", style }) {
|
|
482
534
|
const { colors } = useTheme();
|
|
483
|
-
return /* @__PURE__ */
|
|
535
|
+
return /* @__PURE__ */ React24.createElement(
|
|
484
536
|
View,
|
|
485
537
|
{
|
|
486
538
|
style: [
|
|
@@ -508,7 +560,7 @@ var sizeMap = {
|
|
|
508
560
|
};
|
|
509
561
|
function Spinner({ size = "md", color, ...props }) {
|
|
510
562
|
const { colors } = useTheme();
|
|
511
|
-
return /* @__PURE__ */
|
|
563
|
+
return /* @__PURE__ */ React24.createElement(ActivityIndicator, { size: sizeMap[size], color: color ?? colors.primary, ...props });
|
|
512
564
|
}
|
|
513
565
|
function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
|
|
514
566
|
const { colors, colorScheme } = useTheme();
|
|
@@ -530,7 +582,7 @@ function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
|
|
|
530
582
|
inputRange: [0, 1],
|
|
531
583
|
outputRange: [-containerWidth, containerWidth]
|
|
532
584
|
});
|
|
533
|
-
return /* @__PURE__ */
|
|
585
|
+
return /* @__PURE__ */ React24.createElement(
|
|
534
586
|
View,
|
|
535
587
|
{
|
|
536
588
|
style: [
|
|
@@ -540,7 +592,7 @@ function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
|
|
|
540
592
|
],
|
|
541
593
|
onLayout: (e) => setContainerWidth(e.nativeEvent.layout.width)
|
|
542
594
|
},
|
|
543
|
-
/* @__PURE__ */
|
|
595
|
+
/* @__PURE__ */ React24.createElement(Animated.View, { style: [StyleSheet.absoluteFill, { transform: [{ translateX }] }] }, /* @__PURE__ */ React24.createElement(
|
|
544
596
|
LinearGradient,
|
|
545
597
|
{
|
|
546
598
|
colors: ["transparent", shimmerHighlight, "transparent"],
|
|
@@ -580,14 +632,14 @@ function Avatar({ src, fallback, size = "md", style }) {
|
|
|
580
632
|
backgroundColor: colors.muted,
|
|
581
633
|
overflow: "hidden"
|
|
582
634
|
};
|
|
583
|
-
return /* @__PURE__ */
|
|
635
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles7.base, containerStyle, style] }, !showFallback ? /* @__PURE__ */ React24.createElement(
|
|
584
636
|
Image,
|
|
585
637
|
{
|
|
586
638
|
source: { uri: src },
|
|
587
639
|
style: { width: dimension, height: dimension },
|
|
588
640
|
onError: () => setImageError(true)
|
|
589
641
|
}
|
|
590
|
-
) : /* @__PURE__ */
|
|
642
|
+
) : /* @__PURE__ */ React24.createElement(
|
|
591
643
|
Text,
|
|
592
644
|
{
|
|
593
645
|
style: [styles7.fallback, { color: colors.mutedForeground, fontSize: fontSizeMap[size] }],
|
|
@@ -605,13 +657,14 @@ var styles7 = StyleSheet.create({
|
|
|
605
657
|
fontWeight: "500"
|
|
606
658
|
}
|
|
607
659
|
});
|
|
608
|
-
function AlertBanner({ title, description, variant = "default", icon, style }) {
|
|
660
|
+
function AlertBanner({ title, description, variant = "default", icon, iconName, iconColor, style }) {
|
|
609
661
|
const { colors } = useTheme();
|
|
610
662
|
const borderColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.border;
|
|
611
663
|
const titleColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.foreground;
|
|
612
664
|
const descColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.mutedForeground;
|
|
613
|
-
const defaultIcon = variant === "success" ? /* @__PURE__ */
|
|
614
|
-
|
|
665
|
+
const defaultIcon = variant === "success" ? /* @__PURE__ */ React24.createElement(FontAwesome5$1, { name: "check-circle", size: 18, color: titleColor }) : variant === "destructive" ? /* @__PURE__ */ React24.createElement(MaterialIcons$1, { name: "error-outline", size: 20, color: titleColor }) : /* @__PURE__ */ React24.createElement(Entypo$1, { name: "info-with-circle", size: 18, color: titleColor });
|
|
666
|
+
const effectiveIcon = iconName ? renderIcon(iconName, 18, iconColor ?? titleColor) : icon ?? defaultIcon;
|
|
667
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] }, /* @__PURE__ */ React24.createElement(View, { style: styles8.icon }, effectiveIcon), /* @__PURE__ */ React24.createElement(View, { style: styles8.content }, title ? /* @__PURE__ */ React24.createElement(Text, { style: [styles8.title, { color: titleColor }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React24.createElement(Text, { style: [styles8.description, { color: descColor }], allowFontScaling: true }, description) : null));
|
|
615
668
|
}
|
|
616
669
|
var styles8 = StyleSheet.create({
|
|
617
670
|
container: {
|
|
@@ -657,13 +710,13 @@ function Progress({ value = 0, max = 100, style }) {
|
|
|
657
710
|
bounciness: 0
|
|
658
711
|
}).start();
|
|
659
712
|
}, [percent, trackWidth]);
|
|
660
|
-
return /* @__PURE__ */
|
|
713
|
+
return /* @__PURE__ */ React24.createElement(
|
|
661
714
|
View,
|
|
662
715
|
{
|
|
663
716
|
style: [styles9.track, { backgroundColor: colors.muted }, style],
|
|
664
717
|
onLayout: (e) => setTrackWidth(e.nativeEvent.layout.width)
|
|
665
718
|
},
|
|
666
|
-
/* @__PURE__ */
|
|
719
|
+
/* @__PURE__ */ React24.createElement(
|
|
667
720
|
Animated.View,
|
|
668
721
|
{
|
|
669
722
|
style: [styles9.indicator, { width: animatedWidth, backgroundColor: colors.primary }]
|
|
@@ -683,10 +736,11 @@ var styles9 = StyleSheet.create({
|
|
|
683
736
|
borderRadius: 999
|
|
684
737
|
}
|
|
685
738
|
});
|
|
686
|
-
function EmptyState({ icon, title, description, action, size = "default", style }) {
|
|
739
|
+
function EmptyState({ icon, iconName, iconColor, title, description, action, size = "default", style }) {
|
|
687
740
|
const { colors } = useTheme();
|
|
688
741
|
const isCompact = size === "compact";
|
|
689
|
-
|
|
742
|
+
const effectiveIcon = iconName ? renderIcon(iconName, isCompact ? 32 : 48, iconColor ?? colors.mutedForeground) : icon;
|
|
743
|
+
return /* @__PURE__ */ React24.createElement(
|
|
690
744
|
View,
|
|
691
745
|
{
|
|
692
746
|
style: [
|
|
@@ -696,7 +750,7 @@ function EmptyState({ icon, title, description, action, size = "default", style
|
|
|
696
750
|
style
|
|
697
751
|
]
|
|
698
752
|
},
|
|
699
|
-
|
|
753
|
+
effectiveIcon ? /* @__PURE__ */ React24.createElement(
|
|
700
754
|
View,
|
|
701
755
|
{
|
|
702
756
|
style: [
|
|
@@ -705,17 +759,17 @@ function EmptyState({ icon, title, description, action, size = "default", style
|
|
|
705
759
|
{ backgroundColor: colors.muted }
|
|
706
760
|
]
|
|
707
761
|
},
|
|
708
|
-
|
|
762
|
+
effectiveIcon
|
|
709
763
|
) : null,
|
|
710
|
-
/* @__PURE__ */
|
|
764
|
+
/* @__PURE__ */ React24.createElement(View, { style: styles10.textWrapper }, /* @__PURE__ */ React24.createElement(
|
|
711
765
|
Text,
|
|
712
766
|
{
|
|
713
767
|
style: [styles10.title, isCompact && styles10.titleCompact, { color: colors.foreground }],
|
|
714
768
|
allowFontScaling: true
|
|
715
769
|
},
|
|
716
770
|
title
|
|
717
|
-
), description && !isCompact ? /* @__PURE__ */
|
|
718
|
-
action && !isCompact ? /* @__PURE__ */
|
|
771
|
+
), description && !isCompact ? /* @__PURE__ */ React24.createElement(Text, { style: [styles10.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null),
|
|
772
|
+
action && !isCompact ? /* @__PURE__ */ React24.createElement(View, { style: styles10.action }, action) : null
|
|
719
773
|
);
|
|
720
774
|
}
|
|
721
775
|
var styles10 = StyleSheet.create({
|
|
@@ -780,7 +834,7 @@ function Textarea({
|
|
|
780
834
|
}) {
|
|
781
835
|
const { colors } = useTheme();
|
|
782
836
|
const [focused, setFocused] = useState(false);
|
|
783
|
-
return /* @__PURE__ */
|
|
837
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles11.container, containerStyle] }, label ? /* @__PURE__ */ React24.createElement(Text, { style: [styles11.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React24.createElement(
|
|
784
838
|
TextInput,
|
|
785
839
|
{
|
|
786
840
|
multiline: true,
|
|
@@ -809,7 +863,7 @@ function Textarea({
|
|
|
809
863
|
allowFontScaling: true,
|
|
810
864
|
...props
|
|
811
865
|
}
|
|
812
|
-
), error ? /* @__PURE__ */
|
|
866
|
+
), error ? /* @__PURE__ */ React24.createElement(Text, { style: [styles11.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React24.createElement(Text, { style: [styles11.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
|
|
813
867
|
}
|
|
814
868
|
var styles11 = StyleSheet.create({
|
|
815
869
|
container: {
|
|
@@ -847,7 +901,7 @@ function Checkbox({
|
|
|
847
901
|
const handlePressOut = () => {
|
|
848
902
|
Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver3, speed: 40, bounciness: 4 }).start();
|
|
849
903
|
};
|
|
850
|
-
return /* @__PURE__ */
|
|
904
|
+
return /* @__PURE__ */ React24.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React24.createElement(
|
|
851
905
|
TouchableOpacity,
|
|
852
906
|
{
|
|
853
907
|
style: [styles12.row, style],
|
|
@@ -861,7 +915,7 @@ function Checkbox({
|
|
|
861
915
|
activeOpacity: 1,
|
|
862
916
|
touchSoundDisabled: true
|
|
863
917
|
},
|
|
864
|
-
/* @__PURE__ */
|
|
918
|
+
/* @__PURE__ */ React24.createElement(
|
|
865
919
|
View,
|
|
866
920
|
{
|
|
867
921
|
style: [
|
|
@@ -873,9 +927,9 @@ function Checkbox({
|
|
|
873
927
|
}
|
|
874
928
|
]
|
|
875
929
|
},
|
|
876
|
-
checked ? /* @__PURE__ */
|
|
930
|
+
checked ? /* @__PURE__ */ React24.createElement(View, { style: [styles12.checkmark, { borderColor: colors.primaryForeground }] }) : null
|
|
877
931
|
),
|
|
878
|
-
label ? /* @__PURE__ */
|
|
932
|
+
label ? /* @__PURE__ */ React24.createElement(
|
|
879
933
|
Text,
|
|
880
934
|
{
|
|
881
935
|
style: [styles12.label, { color: disabled ? colors.mutedForeground : colors.foreground }]
|
|
@@ -938,7 +992,7 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
|
|
|
938
992
|
inputRange: [0, 1],
|
|
939
993
|
outputRange: [colors.muted, colors.primary]
|
|
940
994
|
});
|
|
941
|
-
return /* @__PURE__ */
|
|
995
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [{ opacity: disabled ? 0.45 : 1 }, style] }, /* @__PURE__ */ React24.createElement(
|
|
942
996
|
TouchableOpacity,
|
|
943
997
|
{
|
|
944
998
|
onPress: () => {
|
|
@@ -950,7 +1004,7 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
|
|
|
950
1004
|
touchSoundDisabled: true,
|
|
951
1005
|
style: styles13.wrapper
|
|
952
1006
|
},
|
|
953
|
-
/* @__PURE__ */
|
|
1007
|
+
/* @__PURE__ */ React24.createElement(Animated.View, { style: [styles13.track, { backgroundColor: trackColor }] }, /* @__PURE__ */ React24.createElement(
|
|
954
1008
|
Animated.View,
|
|
955
1009
|
{
|
|
956
1010
|
style: [
|
|
@@ -989,6 +1043,7 @@ var sizeStyles = {
|
|
|
989
1043
|
md: { paddingHorizontal: s(16), paddingVertical: vs(12), minWidth: s(44), minHeight: vs(44) },
|
|
990
1044
|
lg: { paddingHorizontal: s(20), paddingVertical: vs(14), minWidth: s(48), minHeight: vs(48) }
|
|
991
1045
|
};
|
|
1046
|
+
var iconSizeMap2 = { sm: 16, md: 18, lg: 20 };
|
|
992
1047
|
function Toggle({
|
|
993
1048
|
pressed = false,
|
|
994
1049
|
onPressedChange,
|
|
@@ -997,6 +1052,10 @@ function Toggle({
|
|
|
997
1052
|
label,
|
|
998
1053
|
icon,
|
|
999
1054
|
activeIcon,
|
|
1055
|
+
iconName,
|
|
1056
|
+
activeIconName,
|
|
1057
|
+
iconColor,
|
|
1058
|
+
activeIconColor,
|
|
1000
1059
|
disabled,
|
|
1001
1060
|
style,
|
|
1002
1061
|
...props
|
|
@@ -1031,6 +1090,7 @@ function Toggle({
|
|
|
1031
1090
|
inputRange: [0, 1],
|
|
1032
1091
|
outputRange: [colors.foreground, colors.primary]
|
|
1033
1092
|
});
|
|
1093
|
+
const iconSize = iconSizeMap2[size];
|
|
1034
1094
|
const LeftIcon = () => {
|
|
1035
1095
|
const renderProp = (prop) => {
|
|
1036
1096
|
if (!prop) return null;
|
|
@@ -1038,15 +1098,17 @@ function Toggle({
|
|
|
1038
1098
|
return prop;
|
|
1039
1099
|
};
|
|
1040
1100
|
if (pressed) {
|
|
1101
|
+
if (activeIconName) return /* @__PURE__ */ React24.createElement(React24.Fragment, null, renderIcon(activeIconName, iconSize, activeIconColor ?? colors.primary));
|
|
1041
1102
|
const active = renderProp(activeIcon);
|
|
1042
|
-
if (active) return /* @__PURE__ */
|
|
1043
|
-
return /* @__PURE__ */
|
|
1103
|
+
if (active) return /* @__PURE__ */ React24.createElement(React24.Fragment, null, active);
|
|
1104
|
+
return /* @__PURE__ */ React24.createElement(FontAwesome5$1, { name: "check-circle", size: iconSize, color: colors.primary });
|
|
1044
1105
|
}
|
|
1106
|
+
if (iconName) return /* @__PURE__ */ React24.createElement(React24.Fragment, null, renderIcon(iconName, iconSize, iconColor ?? colors.mutedForeground));
|
|
1045
1107
|
const custom = renderProp(icon);
|
|
1046
|
-
if (custom) return /* @__PURE__ */
|
|
1047
|
-
return /* @__PURE__ */
|
|
1108
|
+
if (custom) return /* @__PURE__ */ React24.createElement(React24.Fragment, null, custom);
|
|
1109
|
+
return /* @__PURE__ */ React24.createElement(FontAwesome5$1, { name: "circle", size: iconSize, color: colors.mutedForeground });
|
|
1048
1110
|
};
|
|
1049
|
-
return /* @__PURE__ */
|
|
1111
|
+
return /* @__PURE__ */ React24.createElement(Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles14.disabled, style] }, /* @__PURE__ */ React24.createElement(
|
|
1050
1112
|
TouchableOpacity,
|
|
1051
1113
|
{
|
|
1052
1114
|
onPress: () => {
|
|
@@ -1060,7 +1122,7 @@ function Toggle({
|
|
|
1060
1122
|
touchSoundDisabled: true,
|
|
1061
1123
|
...props
|
|
1062
1124
|
},
|
|
1063
|
-
/* @__PURE__ */
|
|
1125
|
+
/* @__PURE__ */ React24.createElement(
|
|
1064
1126
|
Animated.View,
|
|
1065
1127
|
{
|
|
1066
1128
|
style: [
|
|
@@ -1069,7 +1131,7 @@ function Toggle({
|
|
|
1069
1131
|
{ borderColor, backgroundColor, borderWidth: 2 }
|
|
1070
1132
|
]
|
|
1071
1133
|
},
|
|
1072
|
-
/* @__PURE__ */
|
|
1134
|
+
/* @__PURE__ */ React24.createElement(View, { style: styles14.inner }, /* @__PURE__ */ React24.createElement(LeftIcon, null), label ? /* @__PURE__ */ React24.createElement(Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null)
|
|
1073
1135
|
)
|
|
1074
1136
|
));
|
|
1075
1137
|
}
|
|
@@ -1106,7 +1168,7 @@ function RadioItem({
|
|
|
1106
1168
|
const handlePressOut = () => {
|
|
1107
1169
|
Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver5, speed: 40, bounciness: 4 }).start();
|
|
1108
1170
|
};
|
|
1109
|
-
return /* @__PURE__ */
|
|
1171
|
+
return /* @__PURE__ */ React24.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React24.createElement(
|
|
1110
1172
|
TouchableOpacity,
|
|
1111
1173
|
{
|
|
1112
1174
|
style: styles15.row,
|
|
@@ -1122,7 +1184,7 @@ function RadioItem({
|
|
|
1122
1184
|
touchSoundDisabled: true,
|
|
1123
1185
|
disabled: option.disabled
|
|
1124
1186
|
},
|
|
1125
|
-
/* @__PURE__ */
|
|
1187
|
+
/* @__PURE__ */ React24.createElement(
|
|
1126
1188
|
View,
|
|
1127
1189
|
{
|
|
1128
1190
|
style: [
|
|
@@ -1133,9 +1195,9 @@ function RadioItem({
|
|
|
1133
1195
|
}
|
|
1134
1196
|
]
|
|
1135
1197
|
},
|
|
1136
|
-
selected ? /* @__PURE__ */
|
|
1198
|
+
selected ? /* @__PURE__ */ React24.createElement(View, { style: [styles15.dot, { backgroundColor: colors.primary }] }) : null
|
|
1137
1199
|
),
|
|
1138
|
-
/* @__PURE__ */
|
|
1200
|
+
/* @__PURE__ */ React24.createElement(
|
|
1139
1201
|
Text,
|
|
1140
1202
|
{
|
|
1141
1203
|
style: [
|
|
@@ -1154,7 +1216,7 @@ function RadioGroup({
|
|
|
1154
1216
|
orientation = "vertical",
|
|
1155
1217
|
style
|
|
1156
1218
|
}) {
|
|
1157
|
-
return /* @__PURE__ */
|
|
1219
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles15.container, orientation === "horizontal" && styles15.horizontal, style] }, options.map((option) => /* @__PURE__ */ React24.createElement(
|
|
1158
1220
|
RadioItem,
|
|
1159
1221
|
{
|
|
1160
1222
|
key: option.value,
|
|
@@ -1210,7 +1272,7 @@ function TabTrigger({
|
|
|
1210
1272
|
const handlePressOut = () => {
|
|
1211
1273
|
Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver6, speed: 40, bounciness: 4 }).start();
|
|
1212
1274
|
};
|
|
1213
|
-
return /* @__PURE__ */
|
|
1275
|
+
return /* @__PURE__ */ React24.createElement(
|
|
1214
1276
|
TouchableOpacity,
|
|
1215
1277
|
{
|
|
1216
1278
|
style: styles16.trigger,
|
|
@@ -1221,7 +1283,7 @@ function TabTrigger({
|
|
|
1221
1283
|
activeOpacity: 1,
|
|
1222
1284
|
touchSoundDisabled: true
|
|
1223
1285
|
},
|
|
1224
|
-
/* @__PURE__ */
|
|
1286
|
+
/* @__PURE__ */ React24.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React24.createElement(View, { style: styles16.triggerInner }, tab.icon ? /* @__PURE__ */ React24.createElement(View, { style: styles16.triggerIcon }, typeof tab.icon === "function" ? tab.icon(isActive) : tab.icon) : null, /* @__PURE__ */ React24.createElement(
|
|
1225
1287
|
Text,
|
|
1226
1288
|
{
|
|
1227
1289
|
style: [
|
|
@@ -1275,7 +1337,7 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
|
|
|
1275
1337
|
if (!value) setInternal(v);
|
|
1276
1338
|
onValueChange?.(v);
|
|
1277
1339
|
};
|
|
1278
|
-
return /* @__PURE__ */
|
|
1340
|
+
return /* @__PURE__ */ React24.createElement(View, { style }, /* @__PURE__ */ React24.createElement(View, { style: [styles16.list, { backgroundColor: colors.muted }] }, /* @__PURE__ */ React24.createElement(
|
|
1279
1341
|
Animated.View,
|
|
1280
1342
|
{
|
|
1281
1343
|
style: [
|
|
@@ -1296,7 +1358,7 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
|
|
|
1296
1358
|
}
|
|
1297
1359
|
]
|
|
1298
1360
|
}
|
|
1299
|
-
), tabs.map((tab) => /* @__PURE__ */
|
|
1361
|
+
), tabs.map((tab) => /* @__PURE__ */ React24.createElement(
|
|
1300
1362
|
TabTrigger,
|
|
1301
1363
|
{
|
|
1302
1364
|
key: tab.value,
|
|
@@ -1316,7 +1378,7 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
|
|
|
1316
1378
|
}
|
|
1317
1379
|
function TabsContent({ value, activeValue, children, style }) {
|
|
1318
1380
|
if (value !== activeValue) return null;
|
|
1319
|
-
return /* @__PURE__ */
|
|
1381
|
+
return /* @__PURE__ */ React24.createElement(View, { style }, children);
|
|
1320
1382
|
}
|
|
1321
1383
|
var styles16 = StyleSheet.create({
|
|
1322
1384
|
list: {
|
|
@@ -1362,7 +1424,7 @@ function AccordionItemComponent({
|
|
|
1362
1424
|
const { colors } = useTheme();
|
|
1363
1425
|
const isExpanded = useSharedValue(isOpen);
|
|
1364
1426
|
const height = useSharedValue(0);
|
|
1365
|
-
|
|
1427
|
+
React24.useEffect(() => {
|
|
1366
1428
|
isExpanded.value = isOpen;
|
|
1367
1429
|
}, [isOpen]);
|
|
1368
1430
|
const derivedHeight = useDerivedValue(
|
|
@@ -1384,7 +1446,7 @@ function AccordionItemComponent({
|
|
|
1384
1446
|
const rotationStyle = useAnimatedStyle(() => ({
|
|
1385
1447
|
transform: [{ rotate: `${derivedRotation.value * 180}deg` }]
|
|
1386
1448
|
}));
|
|
1387
|
-
return /* @__PURE__ */
|
|
1449
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles17.item, { borderBottomColor: colors.border }] }, /* @__PURE__ */ React24.createElement(
|
|
1388
1450
|
Pressable,
|
|
1389
1451
|
{
|
|
1390
1452
|
style: ({ pressed }) => [styles17.trigger, { opacity: pressed ? 0.6 : 1 }],
|
|
@@ -1393,9 +1455,9 @@ function AccordionItemComponent({
|
|
|
1393
1455
|
onToggle();
|
|
1394
1456
|
}
|
|
1395
1457
|
},
|
|
1396
|
-
/* @__PURE__ */
|
|
1397
|
-
/* @__PURE__ */
|
|
1398
|
-
), /* @__PURE__ */
|
|
1458
|
+
/* @__PURE__ */ React24.createElement(Text, { style: [styles17.triggerText, { color: colors.foreground }] }, item.trigger),
|
|
1459
|
+
/* @__PURE__ */ React24.createElement(Animated10.View, { style: [styles17.chevron, rotationStyle] }, /* @__PURE__ */ React24.createElement(Entypo$1, { name: "chevron-down", size: 20, color: colors.foreground }))
|
|
1460
|
+
), /* @__PURE__ */ React24.createElement(Animated10.View, { style: bodyStyle }, /* @__PURE__ */ React24.createElement(
|
|
1399
1461
|
View,
|
|
1400
1462
|
{
|
|
1401
1463
|
style: styles17.content,
|
|
@@ -1420,7 +1482,7 @@ function Accordion({ items, type = "single", defaultValue, style }) {
|
|
|
1420
1482
|
);
|
|
1421
1483
|
}
|
|
1422
1484
|
};
|
|
1423
|
-
return /* @__PURE__ */
|
|
1485
|
+
return /* @__PURE__ */ React24.createElement(View, { style }, items.map((item) => /* @__PURE__ */ React24.createElement(
|
|
1424
1486
|
AccordionItemComponent,
|
|
1425
1487
|
{
|
|
1426
1488
|
key: item.value,
|
|
@@ -1479,7 +1541,7 @@ function Slider({
|
|
|
1479
1541
|
}
|
|
1480
1542
|
onValueChange?.(v);
|
|
1481
1543
|
};
|
|
1482
|
-
return /* @__PURE__ */
|
|
1544
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles18.wrapper, style], accessibilityLabel }, label || showValue ? /* @__PURE__ */ React24.createElement(View, { style: styles18.header }, label ? /* @__PURE__ */ React24.createElement(Text, { style: [styles18.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, showValue ? /* @__PURE__ */ React24.createElement(Text, { style: [styles18.valueText, { color: colors.mutedForeground }], allowFontScaling: true }, formatValue2(value)) : null) : null, /* @__PURE__ */ React24.createElement(View, { style: disabled ? styles18.disabled : void 0 }, /* @__PURE__ */ React24.createElement(
|
|
1483
1545
|
RNSlider,
|
|
1484
1546
|
{
|
|
1485
1547
|
value,
|
|
@@ -1541,7 +1603,7 @@ function Sheet({
|
|
|
1541
1603
|
ref.current?.dismiss();
|
|
1542
1604
|
}
|
|
1543
1605
|
}, [open]);
|
|
1544
|
-
const renderBackdrop = (props) => /* @__PURE__ */
|
|
1606
|
+
const renderBackdrop = (props) => /* @__PURE__ */ React24.createElement(
|
|
1545
1607
|
BottomSheetBackdrop,
|
|
1546
1608
|
{
|
|
1547
1609
|
...props,
|
|
@@ -1550,7 +1612,7 @@ function Sheet({
|
|
|
1550
1612
|
pressBehavior: "close"
|
|
1551
1613
|
}
|
|
1552
1614
|
);
|
|
1553
|
-
return /* @__PURE__ */
|
|
1615
|
+
return /* @__PURE__ */ React24.createElement(
|
|
1554
1616
|
BottomSheetModal,
|
|
1555
1617
|
{
|
|
1556
1618
|
ref,
|
|
@@ -1561,7 +1623,7 @@ function Sheet({
|
|
|
1561
1623
|
handleIndicatorStyle: [styles19.handle, { backgroundColor: colors.border }],
|
|
1562
1624
|
enablePanDownToClose: true
|
|
1563
1625
|
},
|
|
1564
|
-
/* @__PURE__ */
|
|
1626
|
+
/* @__PURE__ */ React24.createElement(BottomSheetView, { style: [styles19.content, style] }, title || description ? /* @__PURE__ */ React24.createElement(View, { style: styles19.header }, title ? /* @__PURE__ */ React24.createElement(Text, { style: [styles19.title, { color: colors.cardForeground }] }, title) : null, description ? /* @__PURE__ */ React24.createElement(Text, { style: [styles19.description, { color: colors.mutedForeground }] }, description) : null) : null, children)
|
|
1565
1627
|
);
|
|
1566
1628
|
}
|
|
1567
1629
|
var styles19 = StyleSheet.create({
|
|
@@ -1637,7 +1699,7 @@ function Select({
|
|
|
1637
1699
|
}
|
|
1638
1700
|
setPickerVisible(false);
|
|
1639
1701
|
};
|
|
1640
|
-
return /* @__PURE__ */
|
|
1702
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles20.container, style] }, label ? /* @__PURE__ */ React24.createElement(Text, { style: [styles20.label, { color: colors.foreground }] }, label) : null, !isWeb2 ? /* @__PURE__ */ React24.createElement(Animated.View, { style: { transform: [{ scale: scale2 }], opacity: disabled ? 0.45 : 1 } }, /* @__PURE__ */ React24.createElement(
|
|
1641
1703
|
TouchableOpacity,
|
|
1642
1704
|
{
|
|
1643
1705
|
style: [
|
|
@@ -1653,7 +1715,7 @@ function Select({
|
|
|
1653
1715
|
activeOpacity: 1,
|
|
1654
1716
|
touchSoundDisabled: true
|
|
1655
1717
|
},
|
|
1656
|
-
/* @__PURE__ */
|
|
1718
|
+
/* @__PURE__ */ React24.createElement(
|
|
1657
1719
|
Text,
|
|
1658
1720
|
{
|
|
1659
1721
|
style: [
|
|
@@ -1665,8 +1727,8 @@ function Select({
|
|
|
1665
1727
|
},
|
|
1666
1728
|
selected?.label ?? placeholder
|
|
1667
1729
|
),
|
|
1668
|
-
/* @__PURE__ */
|
|
1669
|
-
)) : null, isIOS ? /* @__PURE__ */
|
|
1730
|
+
/* @__PURE__ */ React24.createElement(Entypo$1, { name: "chevron-with-circle-down", size: 20, color: colors.mutedForeground })
|
|
1731
|
+
)) : null, isIOS ? /* @__PURE__ */ React24.createElement(
|
|
1670
1732
|
Modal,
|
|
1671
1733
|
{
|
|
1672
1734
|
visible: pickerVisible,
|
|
@@ -1674,16 +1736,16 @@ function Select({
|
|
|
1674
1736
|
animationType: "slide",
|
|
1675
1737
|
onRequestClose: handleDismiss
|
|
1676
1738
|
},
|
|
1677
|
-
/* @__PURE__ */
|
|
1678
|
-
/* @__PURE__ */
|
|
1739
|
+
/* @__PURE__ */ React24.createElement(TouchableOpacity, { style: styles20.iosBackdrop, activeOpacity: 1, onPress: handleDismiss }),
|
|
1740
|
+
/* @__PURE__ */ React24.createElement(View, { style: [styles20.iosSheet, { backgroundColor: colors.card }] }, /* @__PURE__ */ React24.createElement(View, { style: [styles20.iosToolbar, { borderBottomColor: colors.border }] }, label ? /* @__PURE__ */ React24.createElement(Text, { style: [styles20.iosToolbarTitle, { color: colors.foreground }], allowFontScaling: true }, label) : /* @__PURE__ */ React24.createElement(View, null), /* @__PURE__ */ React24.createElement(TouchableOpacity, { onPress: handleConfirm, style: styles20.iosDoneBtn, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 } }, /* @__PURE__ */ React24.createElement(Text, { style: [styles20.iosDoneBtnText, { color: colors.primary }], allowFontScaling: true }, "Done"))), /* @__PURE__ */ React24.createElement(
|
|
1679
1741
|
Picker,
|
|
1680
1742
|
{
|
|
1681
1743
|
selectedValue: pendingValue ?? "",
|
|
1682
1744
|
onValueChange: (val) => setPendingValue(val),
|
|
1683
1745
|
itemStyle: { color: colors.foreground }
|
|
1684
1746
|
},
|
|
1685
|
-
!value ? /* @__PURE__ */
|
|
1686
|
-
options.map((o) => /* @__PURE__ */
|
|
1747
|
+
!value ? /* @__PURE__ */ React24.createElement(Picker.Item, { label: placeholder, value: "", color: colors.mutedForeground, enabled: false }) : null,
|
|
1748
|
+
options.map((o) => /* @__PURE__ */ React24.createElement(
|
|
1687
1749
|
Picker.Item,
|
|
1688
1750
|
{
|
|
1689
1751
|
key: o.value,
|
|
@@ -1694,7 +1756,7 @@ function Select({
|
|
|
1694
1756
|
}
|
|
1695
1757
|
))
|
|
1696
1758
|
))
|
|
1697
|
-
) : null, isAndroid ? /* @__PURE__ */
|
|
1759
|
+
) : null, isAndroid ? /* @__PURE__ */ React24.createElement(
|
|
1698
1760
|
Picker,
|
|
1699
1761
|
{
|
|
1700
1762
|
ref: pickerRef,
|
|
@@ -1710,8 +1772,8 @@ function Select({
|
|
|
1710
1772
|
prompt: label,
|
|
1711
1773
|
style: styles20.androidHiddenPicker
|
|
1712
1774
|
},
|
|
1713
|
-
!value ? /* @__PURE__ */
|
|
1714
|
-
options.map((o) => /* @__PURE__ */
|
|
1775
|
+
!value ? /* @__PURE__ */ React24.createElement(Picker.Item, { label: placeholder, value: "", enabled: false }) : null,
|
|
1776
|
+
options.map((o) => /* @__PURE__ */ React24.createElement(
|
|
1715
1777
|
Picker.Item,
|
|
1716
1778
|
{
|
|
1717
1779
|
key: o.value,
|
|
@@ -1720,7 +1782,7 @@ function Select({
|
|
|
1720
1782
|
enabled: !o.disabled
|
|
1721
1783
|
}
|
|
1722
1784
|
))
|
|
1723
|
-
) : null, isWeb2 ? /* @__PURE__ */
|
|
1785
|
+
) : null, isWeb2 ? /* @__PURE__ */ React24.createElement(
|
|
1724
1786
|
Picker,
|
|
1725
1787
|
{
|
|
1726
1788
|
selectedValue: value ?? "",
|
|
@@ -1740,8 +1802,8 @@ function Select({
|
|
|
1740
1802
|
}
|
|
1741
1803
|
]
|
|
1742
1804
|
},
|
|
1743
|
-
/* @__PURE__ */
|
|
1744
|
-
options.map((o) => /* @__PURE__ */
|
|
1805
|
+
/* @__PURE__ */ React24.createElement(Picker.Item, { label: placeholder, value: "", enabled: false }),
|
|
1806
|
+
options.map((o) => /* @__PURE__ */ React24.createElement(
|
|
1745
1807
|
Picker.Item,
|
|
1746
1808
|
{
|
|
1747
1809
|
key: o.value,
|
|
@@ -1750,7 +1812,7 @@ function Select({
|
|
|
1750
1812
|
enabled: !o.disabled
|
|
1751
1813
|
}
|
|
1752
1814
|
))
|
|
1753
|
-
) : null, error ? /* @__PURE__ */
|
|
1815
|
+
) : null, error ? /* @__PURE__ */ React24.createElement(Text, { style: [styles20.helperText, { color: colors.destructive }] }, error) : null);
|
|
1754
1816
|
}
|
|
1755
1817
|
var styles20 = StyleSheet.create({
|
|
1756
1818
|
container: {
|
|
@@ -1880,9 +1942,9 @@ function ToastNotification({ item, onDismiss }) {
|
|
|
1880
1942
|
destructive: colors.destructiveForeground,
|
|
1881
1943
|
success: colors.successForeground
|
|
1882
1944
|
}[item.variant ?? "default"];
|
|
1883
|
-
const defaultIcon = item.variant === "success" ? /* @__PURE__ */
|
|
1884
|
-
const leftIcon = item.icon ?? defaultIcon;
|
|
1885
|
-
return /* @__PURE__ */
|
|
1945
|
+
const defaultIcon = item.variant === "success" ? /* @__PURE__ */ React24.createElement(FontAwesome5$1, { name: "check-circle", size: 22, color: textColor }) : item.variant === "destructive" ? /* @__PURE__ */ React24.createElement(MaterialIcons$1, { name: "error-outline", size: 24, color: textColor }) : /* @__PURE__ */ React24.createElement(Entypo$1, { name: "info-with-circle", size: 22, color: textColor });
|
|
1946
|
+
const leftIcon = item.iconName ? renderIcon(item.iconName, 22, item.iconColor ?? textColor) : item.icon ?? defaultIcon;
|
|
1947
|
+
return /* @__PURE__ */ React24.createElement(GestureDetector, { gesture: panGesture }, /* @__PURE__ */ React24.createElement(Animated10.View, { style: [styles21.toast, { backgroundColor: bgColor }, animatedStyle] }, /* @__PURE__ */ React24.createElement(View, { style: styles21.leftIconContainer }, leftIcon), /* @__PURE__ */ React24.createElement(View, { style: styles21.toastContent }, item.title ? /* @__PURE__ */ React24.createElement(Text, { style: [styles21.toastTitle, { color: textColor }] }, item.title) : null, item.description ? /* @__PURE__ */ React24.createElement(Text, { style: [styles21.toastDescription, { color: textColor, opacity: 0.85 }] }, item.description) : null), /* @__PURE__ */ React24.createElement(TouchableOpacity, { onPress: onDismiss, style: styles21.dismissButton, touchSoundDisabled: true }, /* @__PURE__ */ React24.createElement(AntDesign$1, { name: "close-circle", size: 18, color: textColor }))));
|
|
1886
1948
|
}
|
|
1887
1949
|
function ToastProvider({ children }) {
|
|
1888
1950
|
const [toasts, setToasts] = useState([]);
|
|
@@ -1901,7 +1963,7 @@ function ToastProvider({ children }) {
|
|
|
1901
1963
|
const dismiss = useCallback((id) => {
|
|
1902
1964
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
1903
1965
|
}, []);
|
|
1904
|
-
return /* @__PURE__ */
|
|
1966
|
+
return /* @__PURE__ */ React24.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React24.createElement(View, { style: [styles21.container, Platform.OS === "web" && styles21.containerWeb, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React24.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
|
|
1905
1967
|
}
|
|
1906
1968
|
var styles21 = StyleSheet.create({
|
|
1907
1969
|
container: {
|
|
@@ -1981,7 +2043,7 @@ function CurrencyInput({
|
|
|
1981
2043
|
onChangeValue?.(isNaN(raw) ? 0 : raw);
|
|
1982
2044
|
};
|
|
1983
2045
|
const inputStyle = size === "large" ? { fontSize: ms(36) } : {};
|
|
1984
|
-
return /* @__PURE__ */
|
|
2046
|
+
return /* @__PURE__ */ React24.createElement(
|
|
1985
2047
|
Input,
|
|
1986
2048
|
{
|
|
1987
2049
|
value,
|
|
@@ -2012,7 +2074,7 @@ function formatValue(value, prefix, showDecimals) {
|
|
|
2012
2074
|
function CurrencyDisplay({ value, prefix = "$", showDecimals = false, textColor, style }) {
|
|
2013
2075
|
const { colors } = useTheme();
|
|
2014
2076
|
const formatted = formatValue(value, prefix, showDecimals);
|
|
2015
|
-
return /* @__PURE__ */
|
|
2077
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles22.container, style] }, /* @__PURE__ */ React24.createElement(Text, { style: [styles22.amount, { color: textColor ?? colors.foreground }], allowFontScaling: true }, formatted));
|
|
2016
2078
|
}
|
|
2017
2079
|
var styles22 = StyleSheet.create({
|
|
2018
2080
|
container: {},
|
|
@@ -2027,6 +2089,10 @@ function ListItem({
|
|
|
2027
2089
|
rightRender,
|
|
2028
2090
|
trailing,
|
|
2029
2091
|
icon,
|
|
2092
|
+
leftIcon,
|
|
2093
|
+
rightIcon,
|
|
2094
|
+
leftIconColor,
|
|
2095
|
+
rightIconColor,
|
|
2030
2096
|
title,
|
|
2031
2097
|
subtitle,
|
|
2032
2098
|
caption,
|
|
@@ -2063,8 +2129,8 @@ function ListItem({
|
|
|
2063
2129
|
selectionAsync();
|
|
2064
2130
|
onPress?.();
|
|
2065
2131
|
};
|
|
2066
|
-
const effectiveLeft = leftRender ?? icon;
|
|
2067
|
-
const effectiveRight = rightRender ?? trailing;
|
|
2132
|
+
const effectiveLeft = leftIcon ? renderIcon(leftIcon, 24, leftIconColor ?? colors.foreground) : leftRender ?? icon;
|
|
2133
|
+
const effectiveRight = rightIcon ? renderIcon(rightIcon, 24, rightIconColor ?? colors.mutedForeground) : rightRender ?? trailing;
|
|
2068
2134
|
const cardStyle = variant === "card" ? {
|
|
2069
2135
|
backgroundColor: colors.card,
|
|
2070
2136
|
borderRadius: 12,
|
|
@@ -2076,7 +2142,7 @@ function ListItem({
|
|
|
2076
2142
|
shadowRadius: 6,
|
|
2077
2143
|
elevation: 2
|
|
2078
2144
|
} : {};
|
|
2079
|
-
return /* @__PURE__ */
|
|
2145
|
+
return /* @__PURE__ */ React24.createElement(Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles23.disabled] }, /* @__PURE__ */ React24.createElement(
|
|
2080
2146
|
TouchableOpacity,
|
|
2081
2147
|
{
|
|
2082
2148
|
style: [styles23.container, cardStyle, style],
|
|
@@ -2087,8 +2153,8 @@ function ListItem({
|
|
|
2087
2153
|
activeOpacity: 1,
|
|
2088
2154
|
touchSoundDisabled: true
|
|
2089
2155
|
},
|
|
2090
|
-
effectiveLeft ? /* @__PURE__ */
|
|
2091
|
-
/* @__PURE__ */
|
|
2156
|
+
effectiveLeft ? /* @__PURE__ */ React24.createElement(View, { style: styles23.leftContainer }, effectiveLeft) : null,
|
|
2157
|
+
/* @__PURE__ */ React24.createElement(View, { style: styles23.content }, /* @__PURE__ */ React24.createElement(
|
|
2092
2158
|
Text,
|
|
2093
2159
|
{
|
|
2094
2160
|
style: [styles23.title, { color: colors.foreground }, titleStyle],
|
|
@@ -2096,7 +2162,7 @@ function ListItem({
|
|
|
2096
2162
|
allowFontScaling: true
|
|
2097
2163
|
},
|
|
2098
2164
|
title
|
|
2099
|
-
), subtitle ? /* @__PURE__ */
|
|
2165
|
+
), subtitle ? /* @__PURE__ */ React24.createElement(
|
|
2100
2166
|
Text,
|
|
2101
2167
|
{
|
|
2102
2168
|
style: [styles23.subtitle, { color: colors.mutedForeground }, subtitleStyle],
|
|
@@ -2104,7 +2170,7 @@ function ListItem({
|
|
|
2104
2170
|
allowFontScaling: true
|
|
2105
2171
|
},
|
|
2106
2172
|
subtitle
|
|
2107
|
-
) : null, caption ? /* @__PURE__ */
|
|
2173
|
+
) : null, caption ? /* @__PURE__ */ React24.createElement(
|
|
2108
2174
|
Text,
|
|
2109
2175
|
{
|
|
2110
2176
|
style: [styles23.caption, { color: colors.mutedForeground }, captionStyle],
|
|
@@ -2113,15 +2179,15 @@ function ListItem({
|
|
|
2113
2179
|
},
|
|
2114
2180
|
caption
|
|
2115
2181
|
) : null),
|
|
2116
|
-
effectiveRight !== void 0 ? /* @__PURE__ */
|
|
2182
|
+
effectiveRight !== void 0 ? /* @__PURE__ */ React24.createElement(View, { style: styles23.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React24.createElement(
|
|
2117
2183
|
Text,
|
|
2118
2184
|
{
|
|
2119
2185
|
style: [styles23.rightText, { color: colors.mutedForeground }],
|
|
2120
2186
|
allowFontScaling: true
|
|
2121
2187
|
},
|
|
2122
2188
|
effectiveRight
|
|
2123
|
-
) : effectiveRight) : showChevron ? /* @__PURE__ */
|
|
2124
|
-
), showSeparator ? /* @__PURE__ */
|
|
2189
|
+
) : effectiveRight) : showChevron ? /* @__PURE__ */ React24.createElement(Entypo$1, { name: "chevron-with-circle-right", size: 20, color: colors.mutedForeground }) : null
|
|
2190
|
+
), showSeparator ? /* @__PURE__ */ React24.createElement(
|
|
2125
2191
|
View,
|
|
2126
2192
|
{
|
|
2127
2193
|
style: [
|
|
@@ -2231,7 +2297,7 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2231
2297
|
inputRange: [0, 1],
|
|
2232
2298
|
outputRange: [colors.border, colors.primary]
|
|
2233
2299
|
});
|
|
2234
|
-
return /* @__PURE__ */
|
|
2300
|
+
return /* @__PURE__ */ React24.createElement(Animated.View, { style: [styles24.wrapper, { transform: [{ scale: scale2 }] }, style] }, /* @__PURE__ */ React24.createElement(
|
|
2235
2301
|
TouchableOpacity,
|
|
2236
2302
|
{
|
|
2237
2303
|
onPress: handlePress,
|
|
@@ -2240,7 +2306,7 @@ function Chip({ label, selected = false, onPress, style }) {
|
|
|
2240
2306
|
activeOpacity: 1,
|
|
2241
2307
|
touchSoundDisabled: true
|
|
2242
2308
|
},
|
|
2243
|
-
/* @__PURE__ */
|
|
2309
|
+
/* @__PURE__ */ React24.createElement(Animated.View, { style: [styles24.chip, { backgroundColor, borderColor }] }, /* @__PURE__ */ React24.createElement(Animated.Text, { style: [styles24.label, { color: textColor }], allowFontScaling: true }, label))
|
|
2244
2310
|
));
|
|
2245
2311
|
}
|
|
2246
2312
|
function ChipGroup({ options, value, onValueChange, multiSelect = false, style }) {
|
|
@@ -2265,7 +2331,7 @@ function ChipGroup({ options, value, onValueChange, multiSelect = false, style }
|
|
|
2265
2331
|
}
|
|
2266
2332
|
return optionValue === value;
|
|
2267
2333
|
};
|
|
2268
|
-
return /* @__PURE__ */
|
|
2334
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles24.group, style] }, options.map((opt) => /* @__PURE__ */ React24.createElement(
|
|
2269
2335
|
Chip,
|
|
2270
2336
|
{
|
|
2271
2337
|
key: opt.value,
|
|
@@ -2307,15 +2373,15 @@ function ConfirmDialog({
|
|
|
2307
2373
|
onCancel
|
|
2308
2374
|
}) {
|
|
2309
2375
|
const { colors } = useTheme();
|
|
2310
|
-
return /* @__PURE__ */
|
|
2376
|
+
return /* @__PURE__ */ React24.createElement(Modal, { visible, transparent: true, animationType: "fade", onRequestClose: onCancel }, /* @__PURE__ */ React24.createElement(TouchableOpacity, { style: styles25.overlay, activeOpacity: 1, onPress: onCancel }, /* @__PURE__ */ React24.createElement(
|
|
2311
2377
|
View,
|
|
2312
2378
|
{
|
|
2313
2379
|
style: [styles25.dialog, { backgroundColor: colors.card }],
|
|
2314
2380
|
onStartShouldSetResponder: () => true
|
|
2315
2381
|
},
|
|
2316
|
-
/* @__PURE__ */
|
|
2317
|
-
description ? /* @__PURE__ */
|
|
2318
|
-
/* @__PURE__ */
|
|
2382
|
+
/* @__PURE__ */ React24.createElement(Text, { style: [styles25.title, { color: colors.cardForeground }], allowFontScaling: true }, title),
|
|
2383
|
+
description ? /* @__PURE__ */ React24.createElement(Text, { style: [styles25.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null,
|
|
2384
|
+
/* @__PURE__ */ React24.createElement(View, { style: styles25.actions }, /* @__PURE__ */ React24.createElement(Button, { label: cancelLabel, variant: "outline", fullWidth: true, onPress: onCancel }), /* @__PURE__ */ React24.createElement(Button, { label: confirmLabel, variant: confirmVariant, fullWidth: true, onPress: onConfirm }))
|
|
2319
2385
|
)));
|
|
2320
2386
|
}
|
|
2321
2387
|
var styles25 = StyleSheet.create({
|
|
@@ -2354,7 +2420,7 @@ var styles25 = StyleSheet.create({
|
|
|
2354
2420
|
});
|
|
2355
2421
|
function LabelValue({ label, value, style }) {
|
|
2356
2422
|
const { colors } = useTheme();
|
|
2357
|
-
return /* @__PURE__ */
|
|
2423
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles26.container, style] }, /* @__PURE__ */ React24.createElement(Text, { style: [styles26.label, { color: colors.mutedForeground }], allowFontScaling: true }, label), typeof value === "string" ? /* @__PURE__ */ React24.createElement(Text, { style: [styles26.value, { color: colors.foreground }], allowFontScaling: true }, value) : value);
|
|
2358
2424
|
}
|
|
2359
2425
|
var styles26 = StyleSheet.create({
|
|
2360
2426
|
container: {
|
|
@@ -2406,7 +2472,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2406
2472
|
onChange({ month: value.month + 1, year: value.year });
|
|
2407
2473
|
}
|
|
2408
2474
|
};
|
|
2409
|
-
return /* @__PURE__ */
|
|
2475
|
+
return /* @__PURE__ */ React24.createElement(View, { style: [styles27.container, style] }, /* @__PURE__ */ React24.createElement(
|
|
2410
2476
|
TouchableOpacity,
|
|
2411
2477
|
{
|
|
2412
2478
|
style: styles27.arrow,
|
|
@@ -2414,8 +2480,8 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2414
2480
|
activeOpacity: 0.6,
|
|
2415
2481
|
touchSoundDisabled: true
|
|
2416
2482
|
},
|
|
2417
|
-
/* @__PURE__ */
|
|
2418
|
-
), /* @__PURE__ */
|
|
2483
|
+
/* @__PURE__ */ React24.createElement(Entypo$1, { name: "chevron-left", size: 22, color: colors.foreground })
|
|
2484
|
+
), /* @__PURE__ */ React24.createElement(Text, { style: [styles27.label, { color: colors.foreground }], allowFontScaling: true }, MONTH_NAMES[value.month - 1], " ", value.year), /* @__PURE__ */ React24.createElement(
|
|
2419
2485
|
TouchableOpacity,
|
|
2420
2486
|
{
|
|
2421
2487
|
style: styles27.arrow,
|
|
@@ -2423,7 +2489,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2423
2489
|
activeOpacity: 0.6,
|
|
2424
2490
|
touchSoundDisabled: true
|
|
2425
2491
|
},
|
|
2426
|
-
/* @__PURE__ */
|
|
2492
|
+
/* @__PURE__ */ React24.createElement(Entypo$1, { name: "chevron-right", size: 22, color: colors.foreground })
|
|
2427
2493
|
));
|
|
2428
2494
|
}
|
|
2429
2495
|
var styles27 = StyleSheet.create({
|
|
@@ -2447,4 +2513,4 @@ var styles27 = StyleSheet.create({
|
|
|
2447
2513
|
}
|
|
2448
2514
|
});
|
|
2449
2515
|
|
|
2450
|
-
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 };
|
|
2516
|
+
export { Accordion, AlertBanner, Avatar, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Chip, ChipGroup, ConfirmDialog, CurrencyDisplay, CurrencyInput, CurrencyInput as CurrencyInputLarge, EmptyState, Icon, Input, LabelValue, ListItem, MonthPicker, Progress, RadioGroup, Select, Separator, Sheet, Skeleton, Slider, Spinner, Switch, Tabs, TabsContent, Text2 as Text, Textarea, ThemeProvider, ToastProvider, Toggle, defaultDark, defaultLight, renderIcon, useTheme, useToast };
|