@retray-dev/ui-kit 2.6.0 → 2.8.0

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