@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/dist/index.mjs CHANGED
@@ -1,7 +1,13 @@
1
- import React23, { createContext, useMemo, useContext, useRef, useState, useEffect, useCallback } from 'react';
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 { AntDesign, Entypo, FontAwesome5, MaterialIcons } from '@expo/vector-icons';
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__ */ React23.createElement(ThemeContext.Provider, { value: { colors, colorScheme: resolvedScheme } }, children);
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__ */ React23.createElement(Animated.View, { style: [fullWidth && styles.fullWidth, { transform: [{ scale: scale2 }] }] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(ActivityIndicator, { size: "small", color: spinnerColor }) : /* @__PURE__ */ React23.createElement(React23.Fragment, null, icon && iconPosition === "left" && /* @__PURE__ */ React23.createElement(React23.Fragment, null, typeof icon === "function" ? icon({ label, size, variant }) : icon), /* @__PURE__ */ React23.createElement(Text, { style: [styles.label, labelVariantStyle, labelSizeStyles[size], icon ? styles.labelWithIcon : void 0] }, label), icon && iconPosition === "right" && /* @__PURE__ */ React23.createElement(React23.Fragment, null, typeof icon === "function" ? icon({ label, size, variant }) : icon))
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__ */ React23.createElement(
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 effectiveSuffix = isPassword && !suffix ? /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles2.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React23.createElement(AntDesign, { name: showPassword ? "eye" : "eye-invisible", size: 20, color: colors.mutedForeground })) : suffix;
240
- return /* @__PURE__ */ React23.createElement(View, { style: [styles2.container, containerStyle] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React23.createElement(
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
- prefix ? typeof prefix === "string" ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.prefixText, { color: colors.mutedForeground }, prefixStyle], allowFontScaling: true }, prefix) : /* @__PURE__ */ React23.createElement(View, { style: styles2.prefixContainer }, prefix) : null,
252
- /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Text, { style: [styles2.suffixText, { color: colors.mutedForeground }, suffixStyle], allowFontScaling: true }, effectiveSuffix) : /* @__PURE__ */ React23.createElement(View, { style: styles2.suffixContainer }, effectiveSuffix) : null
278
- ), error ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
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
- function Badge({ label, children, variant = "default", size = "md", icon, style }) {
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__ */ React23.createElement(View, { style: [styles3.container, containerStyle, sizePadding[size], { gap: sizeIconGap[size] }, style] }, icon ? /* @__PURE__ */ React23.createElement(View, { style: styles3.iconContainer }, icon) : null, typeof content === "string" ? /* @__PURE__ */ React23.createElement(Text, { style: [styles3.label, { color: textColor }, sizeFontSize[size]], allowFontScaling: true }, content) : content);
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__ */ React23.createElement(View, { style: [styles4.card, variantStyle, style] }, children);
471
+ const cardContent = /* @__PURE__ */ React24.createElement(View, { style: [styles4.card, variantStyle, style] }, children);
420
472
  if (onPress) {
421
- return /* @__PURE__ */ React23.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(View, { style: [styles4.header, style] }, children);
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__ */ React23.createElement(Text, { style: [styles4.title, { color: colors.cardForeground }, style], allowFontScaling: true }, children);
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__ */ React23.createElement(Text, { style: [styles4.description, { color: colors.mutedForeground }, style], allowFontScaling: true }, children);
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__ */ React23.createElement(View, { style: [styles4.content, style] }, children);
499
+ return /* @__PURE__ */ React24.createElement(View, { style: [styles4.content, style] }, children);
448
500
  }
449
501
  function CardFooter({ children, style }) {
450
- return /* @__PURE__ */ React23.createElement(View, { style: [styles4.footer, style] }, children);
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__ */ React23.createElement(
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__ */ React23.createElement(ActivityIndicator, { size: sizeMap[size], color: color ?? colors.primary, ...props });
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__ */ React23.createElement(
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__ */ React23.createElement(Animated.View, { style: [StyleSheet.absoluteFill, { transform: [{ translateX }] }] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(View, { style: [styles7.base, containerStyle, style] }, !showFallback ? /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 18, color: titleColor }) : variant === "destructive" ? /* @__PURE__ */ React23.createElement(MaterialIcons, { name: "error-outline", size: 20, color: titleColor }) : /* @__PURE__ */ React23.createElement(Entypo, { name: "info-with-circle", size: 18, color: titleColor });
614
- return /* @__PURE__ */ React23.createElement(View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] }, /* @__PURE__ */ React23.createElement(View, { style: styles8.icon }, icon ?? defaultIcon), /* @__PURE__ */ React23.createElement(View, { style: styles8.content }, title ? /* @__PURE__ */ React23.createElement(Text, { style: [styles8.title, { color: titleColor }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React23.createElement(Text, { style: [styles8.description, { color: descColor }], allowFontScaling: true }, description) : null));
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__ */ React23.createElement(
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__ */ React23.createElement(
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
- return /* @__PURE__ */ React23.createElement(
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
- icon ? /* @__PURE__ */ React23.createElement(
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
- icon
762
+ effectiveIcon
709
763
  ) : null,
710
- /* @__PURE__ */ React23.createElement(View, { style: styles10.textWrapper }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Text, { style: [styles10.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null),
718
- action && !isCompact ? /* @__PURE__ */ React23.createElement(View, { style: styles10.action }, action) : null
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__ */ React23.createElement(View, { style: [styles11.container, containerStyle] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles11.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Text, { style: [styles11.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React23.createElement(Text, { style: [styles11.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
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__ */ React23.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(View, { style: [styles12.checkmark, { borderColor: colors.primaryForeground }] }) : null
930
+ checked ? /* @__PURE__ */ React24.createElement(View, { style: [styles12.checkmark, { borderColor: colors.primaryForeground }] }) : null
877
931
  ),
878
- label ? /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(View, { style: [{ opacity: disabled ? 0.45 : 1 }, style] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Animated.View, { style: [styles13.track, { backgroundColor: trackColor }] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(React23.Fragment, null, active);
1043
- return /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 20, color: colors.primary });
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__ */ React23.createElement(React23.Fragment, null, custom);
1047
- return /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "circle", size: 20, color: colors.mutedForeground });
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__ */ React23.createElement(Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles14.disabled, style] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(View, { style: styles14.inner }, /* @__PURE__ */ React23.createElement(LeftIcon, null), label ? /* @__PURE__ */ React23.createElement(Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null)
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__ */ React23.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(View, { style: [styles15.dot, { backgroundColor: colors.primary }] }) : null
1198
+ selected ? /* @__PURE__ */ React24.createElement(View, { style: [styles15.dot, { backgroundColor: colors.primary }] }) : null
1137
1199
  ),
1138
- /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(View, { style: [styles15.container, orientation === "horizontal" && styles15.horizontal, style] }, options.map((option) => /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React23.createElement(View, { style: styles16.triggerInner }, tab.icon ? /* @__PURE__ */ React23.createElement(View, { style: styles16.triggerIcon }, typeof tab.icon === "function" ? tab.icon(isActive) : tab.icon) : null, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(View, { style }, /* @__PURE__ */ React23.createElement(View, { style: [styles16.list, { backgroundColor: colors.muted }] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(View, { style }, children);
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
- React23.useEffect(() => {
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__ */ React23.createElement(View, { style: [styles17.item, { borderBottomColor: colors.border }] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Text, { style: [styles17.triggerText, { color: colors.foreground }] }, item.trigger),
1397
- /* @__PURE__ */ React23.createElement(Animated10.View, { style: [styles17.chevron, rotationStyle] }, /* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-down", size: 20, color: colors.foreground }))
1398
- ), /* @__PURE__ */ React23.createElement(Animated10.View, { style: bodyStyle }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(View, { style }, items.map((item) => /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(View, { style: [styles18.wrapper, style], accessibilityLabel }, label || showValue ? /* @__PURE__ */ React23.createElement(View, { style: styles18.header }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles18.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, showValue ? /* @__PURE__ */ React23.createElement(Text, { style: [styles18.valueText, { color: colors.mutedForeground }], allowFontScaling: true }, formatValue2(value)) : null) : null, /* @__PURE__ */ React23.createElement(View, { style: disabled ? styles18.disabled : void 0 }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(BottomSheetView, { style: [styles19.content, style] }, title || description ? /* @__PURE__ */ React23.createElement(View, { style: styles19.header }, title ? /* @__PURE__ */ React23.createElement(Text, { style: [styles19.title, { color: colors.cardForeground }] }, title) : null, description ? /* @__PURE__ */ React23.createElement(Text, { style: [styles19.description, { color: colors.mutedForeground }] }, description) : null) : null, children)
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__ */ React23.createElement(View, { style: [styles20.container, style] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles20.label, { color: colors.foreground }] }, label) : null, !isWeb2 ? /* @__PURE__ */ React23.createElement(Animated.View, { style: { transform: [{ scale: scale2 }], opacity: disabled ? 0.45 : 1 } }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(Entypo, { name: "chevron-with-circle-down", size: 20, color: colors.mutedForeground })
1669
- )) : null, isIOS ? /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(TouchableOpacity, { style: styles20.iosBackdrop, activeOpacity: 1, onPress: handleDismiss }),
1678
- /* @__PURE__ */ React23.createElement(View, { style: [styles20.iosSheet, { backgroundColor: colors.card }] }, /* @__PURE__ */ React23.createElement(View, { style: [styles20.iosToolbar, { borderBottomColor: colors.border }] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles20.iosToolbarTitle, { color: colors.foreground }], allowFontScaling: true }, label) : /* @__PURE__ */ React23.createElement(View, null), /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: handleConfirm, style: styles20.iosDoneBtn, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 } }, /* @__PURE__ */ React23.createElement(Text, { style: [styles20.iosDoneBtnText, { color: colors.primary }], allowFontScaling: true }, "Done"))), /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Picker.Item, { label: placeholder, value: "", color: colors.mutedForeground, enabled: false }) : null,
1686
- options.map((o) => /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(Picker.Item, { label: placeholder, value: "", enabled: false }) : null,
1714
- options.map((o) => /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(Picker.Item, { label: placeholder, value: "", enabled: false }),
1744
- options.map((o) => /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Text, { style: [styles20.helperText, { color: colors.destructive }] }, error) : null);
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__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 22, color: textColor }) : item.variant === "destructive" ? /* @__PURE__ */ React23.createElement(MaterialIcons, { name: "error-outline", size: 24, color: textColor }) : /* @__PURE__ */ React23.createElement(Entypo, { name: "info-with-circle", size: 22, color: textColor });
1884
- const leftIcon = item.icon ?? defaultIcon;
1885
- return /* @__PURE__ */ React23.createElement(GestureDetector, { gesture: panGesture }, /* @__PURE__ */ React23.createElement(Animated10.View, { style: [styles21.toast, { backgroundColor: bgColor }, animatedStyle] }, /* @__PURE__ */ React23.createElement(View, { style: styles21.leftIconContainer }, leftIcon), /* @__PURE__ */ React23.createElement(View, { style: styles21.toastContent }, item.title ? /* @__PURE__ */ React23.createElement(Text, { style: [styles21.toastTitle, { color: textColor }] }, item.title) : null, item.description ? /* @__PURE__ */ React23.createElement(Text, { style: [styles21.toastDescription, { color: textColor, opacity: 0.85 }] }, item.description) : null), /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: onDismiss, style: styles21.dismissButton, touchSoundDisabled: true }, /* @__PURE__ */ React23.createElement(AntDesign, { name: "close-circle", size: 18, color: textColor }))));
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__ */ React23.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React23.createElement(View, { style: [styles21.container, Platform.OS === "web" && styles21.containerWeb, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React23.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
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__ */ React23.createElement(
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__ */ React23.createElement(View, { style: [styles22.container, style] }, /* @__PURE__ */ React23.createElement(Text, { style: [styles22.amount, { color: textColor ?? colors.foreground }], allowFontScaling: true }, formatted));
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__ */ React23.createElement(Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles23.disabled] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(View, { style: styles23.leftContainer }, effectiveLeft) : null,
2091
- /* @__PURE__ */ React23.createElement(View, { style: styles23.content }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(
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__ */ React23.createElement(View, { style: styles23.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Entypo, { name: "chevron-with-circle-right", size: 20, color: colors.mutedForeground }) : null
2124
- ), showSeparator ? /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Animated.View, { style: [styles24.wrapper, { transform: [{ scale: scale2 }] }, style] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Animated.View, { style: [styles24.chip, { backgroundColor, borderColor }] }, /* @__PURE__ */ React23.createElement(Animated.Text, { style: [styles24.label, { color: textColor }], allowFontScaling: true }, label))
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__ */ React23.createElement(View, { style: [styles24.group, style] }, options.map((opt) => /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Modal, { visible, transparent: true, animationType: "fade", onRequestClose: onCancel }, /* @__PURE__ */ React23.createElement(TouchableOpacity, { style: styles25.overlay, activeOpacity: 1, onPress: onCancel }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Text, { style: [styles25.title, { color: colors.cardForeground }], allowFontScaling: true }, title),
2317
- description ? /* @__PURE__ */ React23.createElement(Text, { style: [styles25.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null,
2318
- /* @__PURE__ */ React23.createElement(View, { style: styles25.actions }, /* @__PURE__ */ React23.createElement(Button, { label: cancelLabel, variant: "outline", fullWidth: true, onPress: onCancel }), /* @__PURE__ */ React23.createElement(Button, { label: confirmLabel, variant: confirmVariant, fullWidth: true, onPress: onConfirm }))
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__ */ React23.createElement(View, { style: [styles26.container, style] }, /* @__PURE__ */ React23.createElement(Text, { style: [styles26.label, { color: colors.mutedForeground }], allowFontScaling: true }, label), typeof value === "string" ? /* @__PURE__ */ React23.createElement(Text, { style: [styles26.value, { color: colors.foreground }], allowFontScaling: true }, value) : value);
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__ */ React23.createElement(View, { style: [styles27.container, style] }, /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Entypo, { name: "chevron-left", size: 22, color: colors.foreground })
2418
- ), /* @__PURE__ */ React23.createElement(Text, { style: [styles27.label, { color: colors.foreground }], allowFontScaling: true }, MONTH_NAMES[value.month - 1], " ", value.year), /* @__PURE__ */ React23.createElement(
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__ */ React23.createElement(Entypo, { name: "chevron-right", size: 22, color: colors.foreground })
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 };