@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.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var React24 = require('react');
3
+ var React25 = require('react');
4
4
  var reactNative = require('react-native');
5
5
  var reactNativeSizeMatters = require('react-native-size-matters');
6
6
  var AntDesign = require('@expo/vector-icons/AntDesign');
@@ -11,7 +11,7 @@ var MaterialIcons = require('@expo/vector-icons/MaterialIcons');
11
11
  var Ionicons = require('@expo/vector-icons/Ionicons');
12
12
  var vectorIcons = require('@expo/vector-icons');
13
13
  var expoLinearGradient = require('expo-linear-gradient');
14
- var Animated10 = require('react-native-reanimated');
14
+ var Animated11 = require('react-native-reanimated');
15
15
  var RNSlider = require('@react-native-community/slider');
16
16
  var bottomSheet = require('@gorhom/bottom-sheet');
17
17
  var picker = require('@react-native-picker/picker');
@@ -21,22 +21,17 @@ var reactNativeSafeAreaContext = require('react-native-safe-area-context');
21
21
 
22
22
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
23
23
 
24
- var React24__default = /*#__PURE__*/_interopDefault(React24);
24
+ var React25__default = /*#__PURE__*/_interopDefault(React25);
25
25
  var AntDesign__default = /*#__PURE__*/_interopDefault(AntDesign);
26
26
  var Entypo__default = /*#__PURE__*/_interopDefault(Entypo);
27
27
  var Feather__default = /*#__PURE__*/_interopDefault(Feather);
28
28
  var FontAwesome5__default = /*#__PURE__*/_interopDefault(FontAwesome5);
29
29
  var MaterialIcons__default = /*#__PURE__*/_interopDefault(MaterialIcons);
30
30
  var Ionicons__default = /*#__PURE__*/_interopDefault(Ionicons);
31
- var Animated10__default = /*#__PURE__*/_interopDefault(Animated10);
31
+ var Animated11__default = /*#__PURE__*/_interopDefault(Animated11);
32
32
  var RNSlider__default = /*#__PURE__*/_interopDefault(RNSlider);
33
33
 
34
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
35
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
36
- }) : x)(function(x) {
37
- if (typeof require !== "undefined") return require.apply(this, arguments);
38
- throw Error('Dynamic require of "' + x + '" is not supported');
39
- });
34
+ // src/theme/ThemeProvider.tsx
40
35
 
41
36
  // src/theme/colors.ts
42
37
  var defaultLight = {
@@ -83,42 +78,50 @@ var defaultDark = {
83
78
  };
84
79
 
85
80
  // src/theme/ThemeProvider.tsx
86
- var ThemeContext = React24.createContext({
81
+ var ThemeContext = React25.createContext({
87
82
  colors: defaultLight,
88
83
  colorScheme: "light"
89
84
  });
90
85
  function ThemeProvider({ children, theme, colorScheme = "system" }) {
91
86
  const systemScheme = reactNative.useColorScheme() ?? "light";
92
87
  const resolvedScheme = colorScheme === "system" ? systemScheme : colorScheme;
93
- const colors = React24.useMemo(() => {
88
+ const colors = React25.useMemo(() => {
94
89
  const base = resolvedScheme === "dark" ? defaultDark : defaultLight;
95
90
  const override = resolvedScheme === "dark" ? theme?.dark : theme?.light;
96
91
  return override ? { ...base, ...override } : base;
97
92
  }, [resolvedScheme, theme]);
98
- return /* @__PURE__ */ React24__default.default.createElement(ThemeContext.Provider, { value: { colors, colorScheme: resolvedScheme } }, children);
93
+ return /* @__PURE__ */ React25__default.default.createElement(ThemeContext.Provider, { value: { colors, colorScheme: resolvedScheme } }, children);
99
94
  }
100
95
  function useTheme() {
101
- const context = React24.useContext(ThemeContext);
96
+ const context = React25.useContext(ThemeContext);
102
97
  if (!context) {
103
98
  throw new Error("useTheme must be used within a ThemeProvider");
104
99
  }
105
100
  return context;
106
101
  }
107
- var Haptics = null;
108
- if (reactNative.Platform.OS !== "web") {
109
- Haptics = __require("expo-haptics");
102
+ var _haptics = null;
103
+ async function getHaptics() {
104
+ if (reactNative.Platform.OS === "web") return null;
105
+ if (!_haptics) {
106
+ _haptics = await import('expo-haptics');
107
+ }
108
+ return _haptics;
110
109
  }
111
110
  function selectionAsync() {
112
- Haptics?.selectionAsync();
111
+ if (reactNative.Platform.OS === "web") return;
112
+ getHaptics().then((h) => h?.selectionAsync());
113
113
  }
114
114
  function impactLight() {
115
- Haptics?.impactAsync(Haptics.ImpactFeedbackStyle.Light);
115
+ if (reactNative.Platform.OS === "web") return;
116
+ getHaptics().then((h) => h?.impactAsync(h.ImpactFeedbackStyle.Light));
116
117
  }
117
118
  function notificationSuccess() {
118
- Haptics?.notificationAsync(Haptics.NotificationFeedbackType.Success);
119
+ if (reactNative.Platform.OS === "web") return;
120
+ getHaptics().then((h) => h?.notificationAsync(h.NotificationFeedbackType.Success));
119
121
  }
120
122
  function notificationError() {
121
- Haptics?.notificationAsync(Haptics.NotificationFeedbackType.Error);
123
+ if (reactNative.Platform.OS === "web") return;
124
+ getHaptics().then((h) => h?.notificationAsync(h.NotificationFeedbackType.Error));
122
125
  }
123
126
  var isWeb = reactNative.Platform.OS === "web";
124
127
  var s = isWeb ? (n) => n : reactNativeSizeMatters.scale;
@@ -159,10 +162,10 @@ function Icon({ name, size, color, family }) {
159
162
  }
160
163
  if (!resolved) return null;
161
164
  const Component = resolved.component;
162
- return React24__default.default.createElement(Component, { name, size, color });
165
+ return React25__default.default.createElement(Component, { name, size, color });
163
166
  }
164
167
  function renderIcon(name, size, color) {
165
- return React24__default.default.createElement(Icon, { name, size, color });
168
+ return React25__default.default.createElement(Icon, { name, size, color });
166
169
  }
167
170
 
168
171
  // src/components/Button/Button.tsx
@@ -195,7 +198,7 @@ function Button({
195
198
  }) {
196
199
  const { colors } = useTheme();
197
200
  const isDisabled = disabled || loading;
198
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
201
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
199
202
  const handlePressIn = () => {
200
203
  if (isDisabled) return;
201
204
  reactNative.Animated.spring(scale2, {
@@ -228,7 +231,7 @@ function Button({
228
231
  }[variant];
229
232
  const effectiveIcon = iconName ? renderIcon(iconName, iconSizeMap[size], iconColor ?? labelVariantStyle.color) : typeof icon === "function" ? icon({ label, size, variant }) : icon;
230
233
  const spinnerColor = variant === "destructive" ? colors.destructiveForeground : variant === "primary" || variant === "secondary" ? colors.primaryForeground : colors.foreground;
231
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: [fullWidth && styles.fullWidth, { transform: [{ scale: scale2 }] }] }, /* @__PURE__ */ React24__default.default.createElement(
234
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: [fullWidth && styles.fullWidth, { transform: [{ scale: scale2 }] }] }, /* @__PURE__ */ React25__default.default.createElement(
232
235
  reactNative.TouchableOpacity,
233
236
  {
234
237
  style: [
@@ -247,7 +250,7 @@ function Button({
247
250
  onPressOut: handlePressOut,
248
251
  ...props
249
252
  },
250
- loading ? /* @__PURE__ */ React24__default.default.createElement(reactNative.ActivityIndicator, { size: "small", color: spinnerColor }) : /* @__PURE__ */ React24__default.default.createElement(React24__default.default.Fragment, null, effectiveIcon && iconPosition === "left" && /* @__PURE__ */ React24__default.default.createElement(React24__default.default.Fragment, null, effectiveIcon), /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles.label, labelVariantStyle, labelSizeStyles[size], effectiveIcon ? styles.labelWithIcon : void 0] }, label), effectiveIcon && iconPosition === "right" && /* @__PURE__ */ React24__default.default.createElement(React24__default.default.Fragment, null, effectiveIcon))
253
+ loading ? /* @__PURE__ */ React25__default.default.createElement(reactNative.ActivityIndicator, { size: "small", color: spinnerColor }) : /* @__PURE__ */ React25__default.default.createElement(React25__default.default.Fragment, null, effectiveIcon && iconPosition === "left" && /* @__PURE__ */ React25__default.default.createElement(React25__default.default.Fragment, null, effectiveIcon), /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles.label, labelVariantStyle, labelSizeStyles[size], effectiveIcon ? styles.labelWithIcon : void 0], allowFontScaling: true }, label), effectiveIcon && iconPosition === "right" && /* @__PURE__ */ React25__default.default.createElement(React25__default.default.Fragment, null, effectiveIcon))
251
254
  ));
252
255
  }
253
256
  var styles = reactNative.StyleSheet.create({
@@ -270,6 +273,96 @@ var styles = reactNative.StyleSheet.create({
270
273
  marginHorizontal: s(8)
271
274
  }
272
275
  });
276
+ var nativeDriver2 = reactNative.Platform.OS !== "web";
277
+ var sizeMap = {
278
+ sm: { container: s(40), icon: 18 },
279
+ md: { container: s(44), icon: 20 },
280
+ lg: { container: s(52), icon: 24 }
281
+ };
282
+ function IconButton({
283
+ iconName,
284
+ icon,
285
+ iconColor,
286
+ variant = "primary",
287
+ size = "md",
288
+ loading = false,
289
+ disabled,
290
+ style,
291
+ onPress,
292
+ ...props
293
+ }) {
294
+ const { colors } = useTheme();
295
+ const isDisabled = disabled || loading;
296
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
297
+ const handlePressIn = () => {
298
+ if (isDisabled) return;
299
+ reactNative.Animated.spring(scale2, {
300
+ toValue: 0.95,
301
+ useNativeDriver: nativeDriver2,
302
+ speed: 40,
303
+ bounciness: 0
304
+ }).start();
305
+ };
306
+ const handlePressOut = () => {
307
+ reactNative.Animated.spring(scale2, {
308
+ toValue: 1,
309
+ useNativeDriver: nativeDriver2,
310
+ speed: 40,
311
+ bounciness: 4
312
+ }).start();
313
+ };
314
+ const handlePress = (e) => {
315
+ impactLight();
316
+ onPress?.(e);
317
+ };
318
+ const containerVariantStyle = {
319
+ primary: { backgroundColor: colors.primary },
320
+ secondary: { backgroundColor: colors.secondary },
321
+ outline: { backgroundColor: "transparent", borderWidth: 1.5, borderColor: colors.border },
322
+ ghost: { backgroundColor: "transparent" },
323
+ destructive: { backgroundColor: colors.destructive }
324
+ }[variant];
325
+ const defaultIconColor = {
326
+ primary: colors.primaryForeground,
327
+ secondary: colors.secondaryForeground,
328
+ outline: colors.foreground,
329
+ ghost: colors.foreground,
330
+ destructive: colors.destructiveForeground
331
+ }[variant];
332
+ const spinnerColor = variant === "destructive" ? colors.destructiveForeground : variant === "primary" || variant === "secondary" ? colors.primaryForeground : colors.foreground;
333
+ const { container: containerSize, icon: iconSize } = sizeMap[size];
334
+ const resolvedIcon = iconName ? renderIcon(iconName, iconSize, iconColor ?? defaultIconColor) : icon;
335
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25__default.default.createElement(
336
+ reactNative.TouchableOpacity,
337
+ {
338
+ style: [
339
+ styles2.base,
340
+ containerVariantStyle,
341
+ { width: containerSize, height: containerSize },
342
+ isDisabled && styles2.disabled,
343
+ style
344
+ ],
345
+ disabled: isDisabled,
346
+ activeOpacity: 1,
347
+ touchSoundDisabled: true,
348
+ onPress: handlePress,
349
+ onPressIn: handlePressIn,
350
+ onPressOut: handlePressOut,
351
+ ...props
352
+ },
353
+ loading ? /* @__PURE__ */ React25__default.default.createElement(reactNative.ActivityIndicator, { size: "small", color: spinnerColor }) : resolvedIcon
354
+ ));
355
+ }
356
+ var styles2 = reactNative.StyleSheet.create({
357
+ base: {
358
+ borderRadius: 999,
359
+ alignItems: "center",
360
+ justifyContent: "center"
361
+ },
362
+ disabled: {
363
+ opacity: 0.5
364
+ }
365
+ });
273
366
  var variantStyles = {
274
367
  h1: { fontSize: ms(40), fontWeight: "700", lineHeight: mvs(52) },
275
368
  h2: { fontSize: ms(28), fontWeight: "700", lineHeight: mvs(36) },
@@ -281,7 +374,7 @@ var variantStyles = {
281
374
  function Text2({ variant = "body", color, style, children, ...props }) {
282
375
  const { colors } = useTheme();
283
376
  const defaultColor = variant === "caption" ? colors.mutedForeground : colors.foreground;
284
- return /* @__PURE__ */ React24__default.default.createElement(
377
+ return /* @__PURE__ */ React25__default.default.createElement(
285
378
  reactNative.Text,
286
379
  {
287
380
  style: [variantStyles[variant], { color: color ?? defaultColor }, style],
@@ -294,29 +387,29 @@ function Text2({ variant = "body", color, style, children, ...props }) {
294
387
  var webInputResetStyle = reactNative.Platform.OS === "web" ? { outlineStyle: "none", outlineWidth: 0, outlineColor: "transparent", boxShadow: "none" } : {};
295
388
  function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, prefixIcon, suffixIcon, prefixIconColor, suffixIconColor, type = "text", containerStyle, style, onFocus, onBlur, secureTextEntry, ...props }) {
296
389
  const { colors } = useTheme();
297
- const [focused, setFocused] = React24.useState(false);
298
- const [showPassword, setShowPassword] = React24.useState(false);
390
+ const [focused, setFocused] = React25.useState(false);
391
+ const [showPassword, setShowPassword] = React25.useState(false);
299
392
  const isPassword = type === "password";
300
393
  const effectiveSecure = isPassword ? !showPassword : secureTextEntry;
301
394
  const effectivePrefix = prefixIcon ? renderIcon(prefixIcon, 20, prefixIconColor ?? colors.mutedForeground) : prefix;
302
- const effectiveSuffix = isPassword && !suffix && !suffixIcon ? /* @__PURE__ */ React24__default.default.createElement(reactNative.TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles2.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React24__default.default.createElement(vectorIcons.AntDesign, { name: showPassword ? "eye" : "eye-invisible", size: 20, color: colors.mutedForeground })) : suffixIcon ? renderIcon(suffixIcon, 20, suffixIconColor ?? colors.mutedForeground) : suffix;
303
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles2.container, containerStyle] }, label ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles2.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React24__default.default.createElement(
395
+ const effectiveSuffix = isPassword && !suffix && !suffixIcon ? /* @__PURE__ */ React25__default.default.createElement(reactNative.TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles3.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React25__default.default.createElement(vectorIcons.AntDesign, { name: showPassword ? "eye" : "eye-invisible", size: 20, color: colors.mutedForeground })) : suffixIcon ? renderIcon(suffixIcon, 20, suffixIconColor ?? colors.mutedForeground) : suffix;
396
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles3.container, containerStyle] }, label ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles3.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React25__default.default.createElement(
304
397
  reactNative.View,
305
398
  {
306
399
  style: [
307
- styles2.inputWrapper,
400
+ styles3.inputWrapper,
308
401
  {
309
402
  borderColor: error ? colors.destructive : focused ? colors.ring ?? colors.primary : colors.border,
310
403
  backgroundColor: colors.background
311
404
  }
312
405
  ]
313
406
  },
314
- effectivePrefix ? typeof effectivePrefix === "string" ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles2.prefixText, { color: colors.mutedForeground }, prefixStyle], allowFontScaling: true }, effectivePrefix) : /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles2.prefixContainer }, effectivePrefix) : null,
315
- /* @__PURE__ */ React24__default.default.createElement(
407
+ effectivePrefix ? typeof effectivePrefix === "string" ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles3.prefixText, { color: colors.mutedForeground }, prefixStyle], allowFontScaling: true }, effectivePrefix) : /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles3.prefixContainer }, effectivePrefix) : null,
408
+ /* @__PURE__ */ React25__default.default.createElement(
316
409
  reactNative.TextInput,
317
410
  {
318
411
  style: [
319
- styles2.input,
412
+ styles3.input,
320
413
  {
321
414
  color: colors.foreground
322
415
  },
@@ -337,10 +430,10 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, p
337
430
  ...props
338
431
  }
339
432
  ),
340
- effectiveSuffix ? typeof effectiveSuffix === "string" ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles2.suffixText, { color: colors.mutedForeground }, suffixStyle], allowFontScaling: true }, effectiveSuffix) : /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles2.suffixContainer }, effectiveSuffix) : null
341
- ), error ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles2.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles2.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
433
+ effectiveSuffix ? typeof effectiveSuffix === "string" ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles3.suffixText, { color: colors.mutedForeground }, suffixStyle], allowFontScaling: true }, effectiveSuffix) : /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles3.suffixContainer }, effectiveSuffix) : null
434
+ ), error ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles3.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles3.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
342
435
  }
343
- var styles2 = reactNative.StyleSheet.create({
436
+ var styles3 = reactNative.StyleSheet.create({
344
437
  container: {
345
438
  gap: vs(8)
346
439
  },
@@ -414,9 +507,9 @@ function Badge({ label, children, variant = "default", size = "md", icon, iconNa
414
507
  }[variant];
415
508
  const effectiveIcon = iconName ? renderIcon(iconName, sizeIconSize[size], iconColor ?? textColor) : icon;
416
509
  const content = children ?? label;
417
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles3.container, containerStyle, sizePadding[size], { gap: sizeIconGap[size] }, style] }, effectiveIcon ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles3.iconContainer }, effectiveIcon) : null, typeof content === "string" ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles3.label, { color: textColor }, sizeFontSize[size]], allowFontScaling: true }, content) : content);
510
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles4.container, containerStyle, sizePadding[size], { gap: sizeIconGap[size] }, style] }, effectiveIcon ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles4.iconContainer }, effectiveIcon) : null, typeof content === "string" ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles4.label, { color: textColor }, sizeFontSize[size]], allowFontScaling: true }, content) : content);
418
511
  }
419
- var styles3 = reactNative.StyleSheet.create({
512
+ var styles4 = reactNative.StyleSheet.create({
420
513
  container: {
421
514
  borderRadius: ms(6),
422
515
  alignSelf: "flex-start",
@@ -431,15 +524,15 @@ var styles3 = reactNative.StyleSheet.create({
431
524
  fontWeight: "500"
432
525
  }
433
526
  });
434
- var nativeDriver2 = reactNative.Platform.OS !== "web";
527
+ var nativeDriver3 = reactNative.Platform.OS !== "web";
435
528
  function Card({ children, variant = "elevated", onPress, style }) {
436
529
  const { colors } = useTheme();
437
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
530
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
438
531
  const handlePressIn = () => {
439
532
  if (!onPress) return;
440
533
  reactNative.Animated.spring(scale2, {
441
534
  toValue: 0.98,
442
- useNativeDriver: nativeDriver2,
535
+ useNativeDriver: nativeDriver3,
443
536
  speed: 40,
444
537
  bounciness: 0
445
538
  }).start();
@@ -448,7 +541,7 @@ function Card({ children, variant = "elevated", onPress, style }) {
448
541
  if (!onPress) return;
449
542
  reactNative.Animated.spring(scale2, {
450
543
  toValue: 1,
451
- useNativeDriver: nativeDriver2,
544
+ useNativeDriver: nativeDriver3,
452
545
  speed: 40,
453
546
  bounciness: 4
454
547
  }).start();
@@ -481,9 +574,9 @@ function Card({ children, variant = "elevated", onPress, style }) {
481
574
  elevation: 0
482
575
  }
483
576
  }[variant];
484
- const cardContent = /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles4.card, variantStyle, style] }, children);
577
+ const cardContent = /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles5.card, variantStyle, style] }, children);
485
578
  if (onPress) {
486
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React24__default.default.createElement(
579
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25__default.default.createElement(
487
580
  reactNative.TouchableOpacity,
488
581
  {
489
582
  onPress: handlePress,
@@ -498,23 +591,23 @@ function Card({ children, variant = "elevated", onPress, style }) {
498
591
  return cardContent;
499
592
  }
500
593
  function CardHeader({ children, style }) {
501
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles4.header, style] }, children);
594
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles5.header, style] }, children);
502
595
  }
503
596
  function CardTitle({ children, style }) {
504
597
  const { colors } = useTheme();
505
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles4.title, { color: colors.cardForeground }, style], allowFontScaling: true }, children);
598
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles5.title, { color: colors.cardForeground }, style], allowFontScaling: true }, children);
506
599
  }
507
600
  function CardDescription({ children, style }) {
508
601
  const { colors } = useTheme();
509
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles4.description, { color: colors.mutedForeground }, style], allowFontScaling: true }, children);
602
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles5.description, { color: colors.mutedForeground }, style], allowFontScaling: true }, children);
510
603
  }
511
604
  function CardContent({ children, style }) {
512
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles4.content, style] }, children);
605
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles5.content, style] }, children);
513
606
  }
514
607
  function CardFooter({ children, style }) {
515
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles4.footer, style] }, children);
608
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles5.footer, style] }, children);
516
609
  }
517
- var styles4 = reactNative.StyleSheet.create({
610
+ var styles5 = reactNative.StyleSheet.create({
518
611
  card: {
519
612
  borderRadius: ms(12),
520
613
  borderWidth: 1
@@ -545,18 +638,18 @@ var styles4 = reactNative.StyleSheet.create({
545
638
  });
546
639
  function Separator({ orientation = "horizontal", style }) {
547
640
  const { colors } = useTheme();
548
- return /* @__PURE__ */ React24__default.default.createElement(
641
+ return /* @__PURE__ */ React25__default.default.createElement(
549
642
  reactNative.View,
550
643
  {
551
644
  style: [
552
- orientation === "horizontal" ? styles5.horizontal : styles5.vertical,
645
+ orientation === "horizontal" ? styles6.horizontal : styles6.vertical,
553
646
  { backgroundColor: colors.border },
554
647
  style
555
648
  ]
556
649
  }
557
650
  );
558
651
  }
559
- var styles5 = reactNative.StyleSheet.create({
652
+ var styles6 = reactNative.StyleSheet.create({
560
653
  horizontal: {
561
654
  height: 1,
562
655
  width: "100%"
@@ -566,21 +659,21 @@ var styles5 = reactNative.StyleSheet.create({
566
659
  height: "100%"
567
660
  }
568
661
  });
569
- var sizeMap = {
662
+ var sizeMap2 = {
570
663
  sm: "small",
571
664
  md: "small",
572
665
  lg: "large"
573
666
  };
574
667
  function Spinner({ size = "md", color, ...props }) {
575
668
  const { colors } = useTheme();
576
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.ActivityIndicator, { size: sizeMap[size], color: color ?? colors.primary, ...props });
669
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.ActivityIndicator, { size: sizeMap2[size], color: color ?? colors.primary, ...props });
577
670
  }
578
671
  function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
579
672
  const { colors, colorScheme } = useTheme();
580
- const shimmerAnim = React24.useRef(new reactNative.Animated.Value(0)).current;
581
- const [containerWidth, setContainerWidth] = React24.useState(300);
673
+ const shimmerAnim = React25.useRef(new reactNative.Animated.Value(0)).current;
674
+ const [containerWidth, setContainerWidth] = React25.useState(300);
582
675
  const shimmerHighlight = colorScheme === "dark" ? "rgba(255,255,255,0.08)" : "rgba(255,255,255,0.7)";
583
- React24.useEffect(() => {
676
+ React25.useEffect(() => {
584
677
  const animation = reactNative.Animated.loop(
585
678
  reactNative.Animated.timing(shimmerAnim, {
586
679
  toValue: 1,
@@ -595,17 +688,17 @@ function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
595
688
  inputRange: [0, 1],
596
689
  outputRange: [-containerWidth, containerWidth]
597
690
  });
598
- return /* @__PURE__ */ React24__default.default.createElement(
691
+ return /* @__PURE__ */ React25__default.default.createElement(
599
692
  reactNative.View,
600
693
  {
601
694
  style: [
602
- styles6.base,
695
+ styles7.base,
603
696
  { width, height, borderRadius, backgroundColor: colors.muted },
604
697
  style
605
698
  ],
606
699
  onLayout: (e) => setContainerWidth(e.nativeEvent.layout.width)
607
700
  },
608
- /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: [reactNative.StyleSheet.absoluteFill, { transform: [{ translateX }] }] }, /* @__PURE__ */ React24__default.default.createElement(
701
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: [reactNative.StyleSheet.absoluteFill, { transform: [{ translateX }] }] }, /* @__PURE__ */ React25__default.default.createElement(
609
702
  expoLinearGradient.LinearGradient,
610
703
  {
611
704
  colors: ["transparent", shimmerHighlight, "transparent"],
@@ -616,12 +709,12 @@ function Skeleton({ width = "100%", height = 16, borderRadius = 6, style }) {
616
709
  ))
617
710
  );
618
711
  }
619
- var styles6 = reactNative.StyleSheet.create({
712
+ var styles7 = reactNative.StyleSheet.create({
620
713
  base: {
621
714
  overflow: "hidden"
622
715
  }
623
716
  });
624
- var sizeMap2 = {
717
+ var sizeMap3 = {
625
718
  sm: s(28),
626
719
  md: s(40),
627
720
  lg: s(56),
@@ -635,8 +728,8 @@ var fontSizeMap = {
635
728
  };
636
729
  function Avatar({ src, fallback, size = "md", style }) {
637
730
  const { colors } = useTheme();
638
- const [imageError, setImageError] = React24.useState(false);
639
- const dimension = sizeMap2[size];
731
+ const [imageError, setImageError] = React25.useState(false);
732
+ const dimension = sizeMap3[size];
640
733
  const showFallback = !src || imageError;
641
734
  const containerStyle = {
642
735
  width: dimension,
@@ -645,23 +738,23 @@ function Avatar({ src, fallback, size = "md", style }) {
645
738
  backgroundColor: colors.muted,
646
739
  overflow: "hidden"
647
740
  };
648
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles7.base, containerStyle, style] }, !showFallback ? /* @__PURE__ */ React24__default.default.createElement(
741
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles8.base, containerStyle, style] }, !showFallback ? /* @__PURE__ */ React25__default.default.createElement(
649
742
  reactNative.Image,
650
743
  {
651
744
  source: { uri: src },
652
745
  style: { width: dimension, height: dimension },
653
746
  onError: () => setImageError(true)
654
747
  }
655
- ) : /* @__PURE__ */ React24__default.default.createElement(
748
+ ) : /* @__PURE__ */ React25__default.default.createElement(
656
749
  reactNative.Text,
657
750
  {
658
- style: [styles7.fallback, { color: colors.mutedForeground, fontSize: fontSizeMap[size] }],
751
+ style: [styles8.fallback, { color: colors.mutedForeground, fontSize: fontSizeMap[size] }],
659
752
  allowFontScaling: true
660
753
  },
661
754
  fallback?.slice(0, 2).toUpperCase() ?? "?"
662
755
  ));
663
756
  }
664
- var styles7 = reactNative.StyleSheet.create({
757
+ var styles8 = reactNative.StyleSheet.create({
665
758
  base: {
666
759
  alignItems: "center",
667
760
  justifyContent: "center"
@@ -675,11 +768,11 @@ function AlertBanner({ title, description, variant = "default", icon, iconName,
675
768
  const borderColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.border;
676
769
  const titleColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.foreground;
677
770
  const descColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.mutedForeground;
678
- const defaultIcon = variant === "success" ? /* @__PURE__ */ React24__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: 18, color: titleColor }) : variant === "destructive" ? /* @__PURE__ */ React24__default.default.createElement(vectorIcons.MaterialIcons, { name: "error-outline", size: 20, color: titleColor }) : /* @__PURE__ */ React24__default.default.createElement(vectorIcons.Entypo, { name: "info-with-circle", size: 18, color: titleColor });
771
+ const defaultIcon = variant === "success" ? /* @__PURE__ */ React25__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: 18, color: titleColor }) : variant === "destructive" ? /* @__PURE__ */ React25__default.default.createElement(vectorIcons.MaterialIcons, { name: "error-outline", size: 20, color: titleColor }) : /* @__PURE__ */ React25__default.default.createElement(vectorIcons.Entypo, { name: "info-with-circle", size: 18, color: titleColor });
679
772
  const effectiveIcon = iconName ? renderIcon(iconName, 18, iconColor ?? titleColor) : icon ?? defaultIcon;
680
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] }, /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles8.icon }, effectiveIcon), /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles8.content }, title ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles8.title, { color: titleColor }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles8.description, { color: descColor }], allowFontScaling: true }, description) : null));
773
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles9.container, { backgroundColor: colors.card, borderColor }, style] }, /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles9.icon }, effectiveIcon), /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles9.content }, title ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles9.title, { color: titleColor }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles9.description, { color: descColor }], allowFontScaling: true }, description) : null));
681
774
  }
682
- var styles8 = reactNative.StyleSheet.create({
775
+ var styles9 = reactNative.StyleSheet.create({
683
776
  container: {
684
777
  flexDirection: "row",
685
778
  borderWidth: 1,
@@ -712,9 +805,9 @@ var styles8 = reactNative.StyleSheet.create({
712
805
  function Progress({ value = 0, max = 100, style }) {
713
806
  const { colors } = useTheme();
714
807
  const percent = Math.min(Math.max(value / max * 100, 0), 100);
715
- const [trackWidth, setTrackWidth] = React24.useState(0);
716
- const animatedWidth = React24.useRef(new reactNative.Animated.Value(0)).current;
717
- React24.useEffect(() => {
808
+ const [trackWidth, setTrackWidth] = React25.useState(0);
809
+ const animatedWidth = React25.useRef(new reactNative.Animated.Value(0)).current;
810
+ React25.useEffect(() => {
718
811
  if (trackWidth === 0) return;
719
812
  reactNative.Animated.spring(animatedWidth, {
720
813
  toValue: percent / 100 * trackWidth,
@@ -723,21 +816,21 @@ function Progress({ value = 0, max = 100, style }) {
723
816
  bounciness: 0
724
817
  }).start();
725
818
  }, [percent, trackWidth]);
726
- return /* @__PURE__ */ React24__default.default.createElement(
819
+ return /* @__PURE__ */ React25__default.default.createElement(
727
820
  reactNative.View,
728
821
  {
729
- style: [styles9.track, { backgroundColor: colors.muted }, style],
822
+ style: [styles10.track, { backgroundColor: colors.muted }, style],
730
823
  onLayout: (e) => setTrackWidth(e.nativeEvent.layout.width)
731
824
  },
732
- /* @__PURE__ */ React24__default.default.createElement(
825
+ /* @__PURE__ */ React25__default.default.createElement(
733
826
  reactNative.Animated.View,
734
827
  {
735
- style: [styles9.indicator, { width: animatedWidth, backgroundColor: colors.primary }]
828
+ style: [styles10.indicator, { width: animatedWidth, backgroundColor: colors.primary }]
736
829
  }
737
830
  )
738
831
  );
739
832
  }
740
- var styles9 = reactNative.StyleSheet.create({
833
+ var styles10 = reactNative.StyleSheet.create({
741
834
  track: {
742
835
  height: vs(8),
743
836
  borderRadius: 999,
@@ -753,39 +846,39 @@ function EmptyState({ icon, iconName, iconColor, title, description, action, siz
753
846
  const { colors } = useTheme();
754
847
  const isCompact = size === "compact";
755
848
  const effectiveIcon = iconName ? renderIcon(iconName, isCompact ? 32 : 48, iconColor ?? colors.mutedForeground) : icon;
756
- return /* @__PURE__ */ React24__default.default.createElement(
849
+ return /* @__PURE__ */ React25__default.default.createElement(
757
850
  reactNative.View,
758
851
  {
759
852
  style: [
760
- styles10.container,
761
- isCompact && styles10.containerCompact,
853
+ styles11.container,
854
+ isCompact && styles11.containerCompact,
762
855
  { borderColor: colors.border },
763
856
  style
764
857
  ]
765
858
  },
766
- effectiveIcon ? /* @__PURE__ */ React24__default.default.createElement(
859
+ effectiveIcon ? /* @__PURE__ */ React25__default.default.createElement(
767
860
  reactNative.View,
768
861
  {
769
862
  style: [
770
- styles10.iconWrapper,
771
- isCompact && styles10.iconWrapperCompact,
863
+ styles11.iconWrapper,
864
+ isCompact && styles11.iconWrapperCompact,
772
865
  { backgroundColor: colors.muted }
773
866
  ]
774
867
  },
775
868
  effectiveIcon
776
869
  ) : null,
777
- /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles10.textWrapper }, /* @__PURE__ */ React24__default.default.createElement(
870
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles11.textWrapper }, /* @__PURE__ */ React25__default.default.createElement(
778
871
  reactNative.Text,
779
872
  {
780
- style: [styles10.title, isCompact && styles10.titleCompact, { color: colors.foreground }],
873
+ style: [styles11.title, isCompact && styles11.titleCompact, { color: colors.foreground }],
781
874
  allowFontScaling: true
782
875
  },
783
876
  title
784
- ), description && !isCompact ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles10.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null),
785
- action && !isCompact ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles10.action }, action) : null
877
+ ), description && !isCompact ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles11.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null),
878
+ action && !isCompact ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles11.action }, action) : null
786
879
  );
787
880
  }
788
- var styles10 = reactNative.StyleSheet.create({
881
+ var styles11 = reactNative.StyleSheet.create({
789
882
  container: {
790
883
  alignItems: "center",
791
884
  justifyContent: "center",
@@ -846,15 +939,15 @@ function Textarea({
846
939
  ...props
847
940
  }) {
848
941
  const { colors } = useTheme();
849
- const [focused, setFocused] = React24.useState(false);
850
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles11.container, containerStyle] }, label ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles11.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React24__default.default.createElement(
942
+ const [focused, setFocused] = React25.useState(false);
943
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles12.container, containerStyle] }, label ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles12.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React25__default.default.createElement(
851
944
  reactNative.TextInput,
852
945
  {
853
946
  multiline: true,
854
947
  numberOfLines: rows,
855
948
  textAlignVertical: "top",
856
949
  style: [
857
- styles11.input,
950
+ styles12.input,
858
951
  {
859
952
  borderColor: error ? colors.destructive : focused ? colors.ring ?? colors.primary : colors.border,
860
953
  color: colors.foreground,
@@ -876,9 +969,9 @@ function Textarea({
876
969
  allowFontScaling: true,
877
970
  ...props
878
971
  }
879
- ), error ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles11.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles11.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
972
+ ), error ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles12.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null, !error && hint ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles12.helperText, { color: colors.mutedForeground }], allowFontScaling: true }, hint) : null);
880
973
  }
881
- var styles11 = reactNative.StyleSheet.create({
974
+ var styles12 = reactNative.StyleSheet.create({
882
975
  container: {
883
976
  gap: vs(8)
884
977
  },
@@ -897,7 +990,7 @@ var styles11 = reactNative.StyleSheet.create({
897
990
  fontSize: ms(13)
898
991
  }
899
992
  });
900
- var nativeDriver3 = reactNative.Platform.OS !== "web";
993
+ var nativeDriver4 = reactNative.Platform.OS !== "web";
901
994
  function Checkbox({
902
995
  checked = false,
903
996
  onCheckedChange,
@@ -906,18 +999,18 @@ function Checkbox({
906
999
  style
907
1000
  }) {
908
1001
  const { colors } = useTheme();
909
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
1002
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
910
1003
  const handlePressIn = () => {
911
1004
  if (disabled) return;
912
- reactNative.Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver3, speed: 40, bounciness: 0 }).start();
1005
+ reactNative.Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver4, speed: 40, bounciness: 0 }).start();
913
1006
  };
914
1007
  const handlePressOut = () => {
915
- reactNative.Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver3, speed: 40, bounciness: 4 }).start();
1008
+ reactNative.Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver4, speed: 40, bounciness: 4 }).start();
916
1009
  };
917
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React24__default.default.createElement(
1010
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25__default.default.createElement(
918
1011
  reactNative.TouchableOpacity,
919
1012
  {
920
- style: [styles12.row, style],
1013
+ style: [styles13.row, style],
921
1014
  onPress: () => {
922
1015
  selectionAsync();
923
1016
  onCheckedChange?.(!checked);
@@ -928,11 +1021,11 @@ function Checkbox({
928
1021
  activeOpacity: 1,
929
1022
  touchSoundDisabled: true
930
1023
  },
931
- /* @__PURE__ */ React24__default.default.createElement(
1024
+ /* @__PURE__ */ React25__default.default.createElement(
932
1025
  reactNative.View,
933
1026
  {
934
1027
  style: [
935
- styles12.box,
1028
+ styles13.box,
936
1029
  {
937
1030
  borderColor: checked ? colors.primary : colors.border,
938
1031
  backgroundColor: checked ? colors.primary : "transparent",
@@ -940,18 +1033,19 @@ function Checkbox({
940
1033
  }
941
1034
  ]
942
1035
  },
943
- checked ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles12.checkmark, { borderColor: colors.primaryForeground }] }) : null
1036
+ checked ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles13.checkmark, { borderColor: colors.primaryForeground }] }) : null
944
1037
  ),
945
- label ? /* @__PURE__ */ React24__default.default.createElement(
1038
+ label ? /* @__PURE__ */ React25__default.default.createElement(
946
1039
  reactNative.Text,
947
1040
  {
948
- style: [styles12.label, { color: disabled ? colors.mutedForeground : colors.foreground }]
1041
+ style: [styles13.label, { color: disabled ? colors.mutedForeground : colors.foreground }],
1042
+ allowFontScaling: true
949
1043
  },
950
1044
  label
951
1045
  ) : null
952
1046
  ));
953
1047
  }
954
- var styles12 = reactNative.StyleSheet.create({
1048
+ var styles13 = reactNative.StyleSheet.create({
955
1049
  row: {
956
1050
  flexDirection: "row",
957
1051
  alignItems: "center",
@@ -977,7 +1071,7 @@ var styles12 = reactNative.StyleSheet.create({
977
1071
  lineHeight: mvs(22)
978
1072
  }
979
1073
  });
980
- var nativeDriver4 = reactNative.Platform.OS !== "web";
1074
+ var nativeDriver5 = reactNative.Platform.OS !== "web";
981
1075
  var TRACK_WIDTH = s(60);
982
1076
  var TRACK_HEIGHT = vs(36);
983
1077
  var THUMB_SIZE = s(28);
@@ -985,13 +1079,13 @@ var THUMB_OFFSET = s(4);
985
1079
  var THUMB_TRAVEL = TRACK_WIDTH - THUMB_SIZE - THUMB_OFFSET * 2;
986
1080
  function Switch({ checked = false, onCheckedChange, disabled, style }) {
987
1081
  const { colors } = useTheme();
988
- const translateX = React24.useRef(new reactNative.Animated.Value(checked ? THUMB_TRAVEL : 0)).current;
989
- const trackOpacity = React24.useRef(new reactNative.Animated.Value(checked ? 1 : 0)).current;
990
- React24.useEffect(() => {
1082
+ const translateX = React25.useRef(new reactNative.Animated.Value(checked ? THUMB_TRAVEL : 0)).current;
1083
+ const trackOpacity = React25.useRef(new reactNative.Animated.Value(checked ? 1 : 0)).current;
1084
+ React25.useEffect(() => {
991
1085
  reactNative.Animated.parallel([
992
1086
  reactNative.Animated.spring(translateX, {
993
1087
  toValue: checked ? THUMB_TRAVEL : 0,
994
- useNativeDriver: nativeDriver4,
1088
+ useNativeDriver: nativeDriver5,
995
1089
  bounciness: 4
996
1090
  }),
997
1091
  reactNative.Animated.timing(trackOpacity, {
@@ -1005,7 +1099,7 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
1005
1099
  inputRange: [0, 1],
1006
1100
  outputRange: [colors.muted, colors.primary]
1007
1101
  });
1008
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [{ opacity: disabled ? 0.45 : 1 }, style] }, /* @__PURE__ */ React24__default.default.createElement(
1102
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [{ opacity: disabled ? 0.45 : 1 }, style] }, /* @__PURE__ */ React25__default.default.createElement(
1009
1103
  reactNative.TouchableOpacity,
1010
1104
  {
1011
1105
  onPress: () => {
@@ -1015,20 +1109,20 @@ function Switch({ checked = false, onCheckedChange, disabled, style }) {
1015
1109
  disabled,
1016
1110
  activeOpacity: 0.8,
1017
1111
  touchSoundDisabled: true,
1018
- style: styles13.wrapper
1112
+ style: styles14.wrapper
1019
1113
  },
1020
- /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: [styles13.track, { backgroundColor: trackColor }] }, /* @__PURE__ */ React24__default.default.createElement(
1114
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: [styles14.track, { backgroundColor: trackColor }] }, /* @__PURE__ */ React25__default.default.createElement(
1021
1115
  reactNative.Animated.View,
1022
1116
  {
1023
1117
  style: [
1024
- styles13.thumb,
1118
+ styles14.thumb,
1025
1119
  { backgroundColor: colors.primaryForeground, transform: [{ translateX }] }
1026
1120
  ]
1027
1121
  }
1028
1122
  ))
1029
1123
  ));
1030
1124
  }
1031
- var styles13 = reactNative.StyleSheet.create({
1125
+ var styles14 = reactNative.StyleSheet.create({
1032
1126
  wrapper: {},
1033
1127
  track: {
1034
1128
  width: TRACK_WIDTH,
@@ -1074,9 +1168,9 @@ function Toggle({
1074
1168
  ...props
1075
1169
  }) {
1076
1170
  const { colors } = useTheme();
1077
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
1078
- const pressAnim = React24.useRef(new reactNative.Animated.Value(pressed ? 1 : 0)).current;
1079
- React24.useEffect(() => {
1171
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
1172
+ const pressAnim = React25.useRef(new reactNative.Animated.Value(pressed ? 1 : 0)).current;
1173
+ React25.useEffect(() => {
1080
1174
  reactNative.Animated.timing(pressAnim, {
1081
1175
  toValue: pressed ? 1 : 0,
1082
1176
  duration: 150,
@@ -1111,17 +1205,17 @@ function Toggle({
1111
1205
  return prop;
1112
1206
  };
1113
1207
  if (pressed) {
1114
- if (activeIconName) return /* @__PURE__ */ React24__default.default.createElement(React24__default.default.Fragment, null, renderIcon(activeIconName, iconSize, activeIconColor ?? colors.primary));
1208
+ if (activeIconName) return /* @__PURE__ */ React25__default.default.createElement(React25__default.default.Fragment, null, renderIcon(activeIconName, iconSize, activeIconColor ?? colors.primary));
1115
1209
  const active = renderProp(activeIcon);
1116
- if (active) return /* @__PURE__ */ React24__default.default.createElement(React24__default.default.Fragment, null, active);
1117
- return /* @__PURE__ */ React24__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: iconSize, color: colors.primary });
1210
+ if (active) return /* @__PURE__ */ React25__default.default.createElement(React25__default.default.Fragment, null, active);
1211
+ return /* @__PURE__ */ React25__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: iconSize, color: colors.primary });
1118
1212
  }
1119
- if (iconName) return /* @__PURE__ */ React24__default.default.createElement(React24__default.default.Fragment, null, renderIcon(iconName, iconSize, iconColor ?? colors.mutedForeground));
1213
+ if (iconName) return /* @__PURE__ */ React25__default.default.createElement(React25__default.default.Fragment, null, renderIcon(iconName, iconSize, iconColor ?? colors.mutedForeground));
1120
1214
  const custom = renderProp(icon);
1121
- if (custom) return /* @__PURE__ */ React24__default.default.createElement(React24__default.default.Fragment, null, custom);
1122
- return /* @__PURE__ */ React24__default.default.createElement(vectorIcons.FontAwesome5, { name: "circle", size: iconSize, color: colors.mutedForeground });
1215
+ if (custom) return /* @__PURE__ */ React25__default.default.createElement(React25__default.default.Fragment, null, custom);
1216
+ return /* @__PURE__ */ React25__default.default.createElement(vectorIcons.FontAwesome5, { name: "circle", size: iconSize, color: colors.mutedForeground });
1123
1217
  };
1124
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles14.disabled, style] }, /* @__PURE__ */ React24__default.default.createElement(
1218
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles15.disabled, style] }, /* @__PURE__ */ React25__default.default.createElement(
1125
1219
  reactNative.TouchableOpacity,
1126
1220
  {
1127
1221
  onPress: () => {
@@ -1135,20 +1229,20 @@ function Toggle({
1135
1229
  touchSoundDisabled: true,
1136
1230
  ...props
1137
1231
  },
1138
- /* @__PURE__ */ React24__default.default.createElement(
1232
+ /* @__PURE__ */ React25__default.default.createElement(
1139
1233
  reactNative.Animated.View,
1140
1234
  {
1141
1235
  style: [
1142
- styles14.base,
1236
+ styles15.base,
1143
1237
  sizeStyles[size],
1144
1238
  { borderColor, backgroundColor, borderWidth: 2 }
1145
1239
  ]
1146
1240
  },
1147
- /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles14.inner }, /* @__PURE__ */ React24__default.default.createElement(LeftIcon, null), label ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null)
1241
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles15.inner }, /* @__PURE__ */ React25__default.default.createElement(LeftIcon, null), label ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.Text, { style: [styles15.label, { color: textColor }], allowFontScaling: true }, label) : null)
1148
1242
  )
1149
1243
  ));
1150
1244
  }
1151
- var styles14 = reactNative.StyleSheet.create({
1245
+ var styles15 = reactNative.StyleSheet.create({
1152
1246
  base: {
1153
1247
  borderRadius: ms(8)
1154
1248
  },
@@ -1166,25 +1260,25 @@ var styles14 = reactNative.StyleSheet.create({
1166
1260
  fontWeight: "500"
1167
1261
  }
1168
1262
  });
1169
- var nativeDriver5 = reactNative.Platform.OS !== "web";
1263
+ var nativeDriver6 = reactNative.Platform.OS !== "web";
1170
1264
  function RadioItem({
1171
1265
  option,
1172
1266
  selected,
1173
1267
  onSelect
1174
1268
  }) {
1175
1269
  const { colors } = useTheme();
1176
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
1270
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
1177
1271
  const handlePressIn = () => {
1178
1272
  if (option.disabled) return;
1179
- reactNative.Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver5, speed: 40, bounciness: 0 }).start();
1273
+ reactNative.Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver6, speed: 40, bounciness: 0 }).start();
1180
1274
  };
1181
1275
  const handlePressOut = () => {
1182
- reactNative.Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver5, speed: 40, bounciness: 4 }).start();
1276
+ reactNative.Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver6, speed: 40, bounciness: 4 }).start();
1183
1277
  };
1184
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React24__default.default.createElement(
1278
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25__default.default.createElement(
1185
1279
  reactNative.TouchableOpacity,
1186
1280
  {
1187
- style: styles15.row,
1281
+ style: styles16.row,
1188
1282
  onPress: () => {
1189
1283
  if (!option.disabled) {
1190
1284
  selectionAsync();
@@ -1197,26 +1291,27 @@ function RadioItem({
1197
1291
  touchSoundDisabled: true,
1198
1292
  disabled: option.disabled
1199
1293
  },
1200
- /* @__PURE__ */ React24__default.default.createElement(
1294
+ /* @__PURE__ */ React25__default.default.createElement(
1201
1295
  reactNative.View,
1202
1296
  {
1203
1297
  style: [
1204
- styles15.radio,
1298
+ styles16.radio,
1205
1299
  {
1206
1300
  borderColor: selected ? colors.primary : colors.border,
1207
1301
  opacity: option.disabled ? 0.45 : 1
1208
1302
  }
1209
1303
  ]
1210
1304
  },
1211
- selected ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles15.dot, { backgroundColor: colors.primary }] }) : null
1305
+ selected ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles16.dot, { backgroundColor: colors.primary }] }) : null
1212
1306
  ),
1213
- /* @__PURE__ */ React24__default.default.createElement(
1307
+ /* @__PURE__ */ React25__default.default.createElement(
1214
1308
  reactNative.Text,
1215
1309
  {
1216
1310
  style: [
1217
- styles15.label,
1311
+ styles16.label,
1218
1312
  { color: option.disabled ? colors.mutedForeground : colors.foreground }
1219
- ]
1313
+ ],
1314
+ allowFontScaling: true
1220
1315
  },
1221
1316
  option.label
1222
1317
  )
@@ -1229,7 +1324,7 @@ function RadioGroup({
1229
1324
  orientation = "vertical",
1230
1325
  style
1231
1326
  }) {
1232
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles15.container, orientation === "horizontal" && styles15.horizontal, style] }, options.map((option) => /* @__PURE__ */ React24__default.default.createElement(
1327
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles16.container, orientation === "horizontal" && styles16.horizontal, style] }, options.map((option) => /* @__PURE__ */ React25__default.default.createElement(
1233
1328
  RadioItem,
1234
1329
  {
1235
1330
  key: option.value,
@@ -1239,7 +1334,7 @@ function RadioGroup({
1239
1334
  }
1240
1335
  )));
1241
1336
  }
1242
- var styles15 = reactNative.StyleSheet.create({
1337
+ var styles16 = reactNative.StyleSheet.create({
1243
1338
  container: {
1244
1339
  gap: vs(12)
1245
1340
  },
@@ -1270,7 +1365,7 @@ var styles15 = reactNative.StyleSheet.create({
1270
1365
  lineHeight: mvs(20)
1271
1366
  }
1272
1367
  });
1273
- var nativeDriver6 = reactNative.Platform.OS !== "web";
1368
+ var nativeDriver7 = reactNative.Platform.OS !== "web";
1274
1369
  function TabTrigger({
1275
1370
  tab,
1276
1371
  isActive,
@@ -1278,17 +1373,17 @@ function TabTrigger({
1278
1373
  onLayout
1279
1374
  }) {
1280
1375
  const { colors } = useTheme();
1281
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
1376
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
1282
1377
  const handlePressIn = () => {
1283
- reactNative.Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver6, speed: 40, bounciness: 0 }).start();
1378
+ reactNative.Animated.spring(scale2, { toValue: 0.95, useNativeDriver: nativeDriver7, speed: 40, bounciness: 0 }).start();
1284
1379
  };
1285
1380
  const handlePressOut = () => {
1286
- reactNative.Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver6, speed: 40, bounciness: 4 }).start();
1381
+ reactNative.Animated.spring(scale2, { toValue: 1, useNativeDriver: nativeDriver7, speed: 40, bounciness: 4 }).start();
1287
1382
  };
1288
- return /* @__PURE__ */ React24__default.default.createElement(
1383
+ return /* @__PURE__ */ React25__default.default.createElement(
1289
1384
  reactNative.TouchableOpacity,
1290
1385
  {
1291
- style: styles16.trigger,
1386
+ style: styles17.trigger,
1292
1387
  onPress,
1293
1388
  onPressIn: handlePressIn,
1294
1389
  onPressOut: handlePressOut,
@@ -1296,27 +1391,28 @@ function TabTrigger({
1296
1391
  activeOpacity: 1,
1297
1392
  touchSoundDisabled: true
1298
1393
  },
1299
- /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles16.triggerInner }, tab.icon ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles16.triggerIcon }, typeof tab.icon === "function" ? tab.icon(isActive) : tab.icon) : null, /* @__PURE__ */ React24__default.default.createElement(
1394
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }] } }, /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles17.triggerInner }, tab.icon ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles17.triggerIcon }, typeof tab.icon === "function" ? tab.icon(isActive) : tab.icon) : null, /* @__PURE__ */ React25__default.default.createElement(
1300
1395
  reactNative.Text,
1301
1396
  {
1302
1397
  style: [
1303
- styles16.triggerLabel,
1398
+ styles17.triggerLabel,
1304
1399
  { color: isActive ? colors.foreground : colors.mutedForeground },
1305
- isActive && styles16.activeTriggerLabel
1306
- ]
1400
+ isActive && styles17.activeTriggerLabel
1401
+ ],
1402
+ allowFontScaling: true
1307
1403
  },
1308
1404
  tab.label
1309
1405
  )))
1310
1406
  );
1311
1407
  }
1312
1408
  function Tabs({ tabs, value, onValueChange, children, style }) {
1313
- const [internal, setInternal] = React24.useState(tabs[0]?.value ?? "");
1409
+ const [internal, setInternal] = React25.useState(tabs[0]?.value ?? "");
1314
1410
  const { colors } = useTheme();
1315
1411
  const active = value ?? internal;
1316
- const tabLayouts = React24.useRef({});
1317
- const pillX = React24.useRef(new reactNative.Animated.Value(0)).current;
1318
- const pillWidth = React24.useRef(new reactNative.Animated.Value(0)).current;
1319
- const initialised = React24.useRef(false);
1412
+ const tabLayouts = React25.useRef({});
1413
+ const pillX = React25.useRef(new reactNative.Animated.Value(0)).current;
1414
+ const pillWidth = React25.useRef(new reactNative.Animated.Value(0)).current;
1415
+ const initialised = React25.useRef(false);
1320
1416
  const animatePill = (tabValue, animate) => {
1321
1417
  const layout = tabLayouts.current[tabValue];
1322
1418
  if (!layout) return;
@@ -1340,7 +1436,7 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
1340
1436
  pillWidth.setValue(layout.width);
1341
1437
  }
1342
1438
  };
1343
- React24.useEffect(() => {
1439
+ React25.useEffect(() => {
1344
1440
  if (initialised.current) {
1345
1441
  animatePill(active, true);
1346
1442
  }
@@ -1350,11 +1446,11 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
1350
1446
  if (!value) setInternal(v);
1351
1447
  onValueChange?.(v);
1352
1448
  };
1353
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style }, /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles16.list, { backgroundColor: colors.muted }] }, /* @__PURE__ */ React24__default.default.createElement(
1449
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style }, /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles17.list, { backgroundColor: colors.muted }] }, /* @__PURE__ */ React25__default.default.createElement(
1354
1450
  reactNative.Animated.View,
1355
1451
  {
1356
1452
  style: [
1357
- styles16.pill,
1453
+ styles17.pill,
1358
1454
  {
1359
1455
  backgroundColor: colors.background,
1360
1456
  position: "absolute",
@@ -1371,7 +1467,7 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
1371
1467
  }
1372
1468
  ]
1373
1469
  }
1374
- ), tabs.map((tab) => /* @__PURE__ */ React24__default.default.createElement(
1470
+ ), tabs.map((tab) => /* @__PURE__ */ React25__default.default.createElement(
1375
1471
  TabTrigger,
1376
1472
  {
1377
1473
  key: tab.value,
@@ -1391,9 +1487,9 @@ function Tabs({ tabs, value, onValueChange, children, style }) {
1391
1487
  }
1392
1488
  function TabsContent({ value, activeValue, children, style }) {
1393
1489
  if (value !== activeValue) return null;
1394
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style }, children);
1490
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style }, children);
1395
1491
  }
1396
- var styles16 = reactNative.StyleSheet.create({
1492
+ var styles17 = reactNative.StyleSheet.create({
1397
1493
  list: {
1398
1494
  flexDirection: "row",
1399
1495
  borderRadius: ms(12),
@@ -1435,45 +1531,45 @@ function AccordionItemComponent({
1435
1531
  onToggle
1436
1532
  }) {
1437
1533
  const { colors } = useTheme();
1438
- const isExpanded = Animated10.useSharedValue(isOpen);
1439
- const height = Animated10.useSharedValue(0);
1440
- React24__default.default.useEffect(() => {
1534
+ const isExpanded = Animated11.useSharedValue(isOpen);
1535
+ const height = Animated11.useSharedValue(0);
1536
+ React25__default.default.useEffect(() => {
1441
1537
  isExpanded.value = isOpen;
1442
1538
  }, [isOpen]);
1443
- const derivedHeight = Animated10.useDerivedValue(
1444
- () => Animated10.withTiming(height.value * Number(isExpanded.value), {
1539
+ const derivedHeight = Animated11.useDerivedValue(
1540
+ () => Animated11.withTiming(height.value * Number(isExpanded.value), {
1445
1541
  duration: 220,
1446
- easing: isExpanded.value ? Animated10.Easing.out(Animated10.Easing.ease) : Animated10.Easing.in(Animated10.Easing.ease)
1542
+ easing: isExpanded.value ? Animated11.Easing.out(Animated11.Easing.ease) : Animated11.Easing.in(Animated11.Easing.ease)
1447
1543
  })
1448
1544
  );
1449
- const derivedRotation = Animated10.useDerivedValue(
1450
- () => Animated10.withTiming(isExpanded.value ? 1 : 0, {
1545
+ const derivedRotation = Animated11.useDerivedValue(
1546
+ () => Animated11.withTiming(isExpanded.value ? 1 : 0, {
1451
1547
  duration: 220,
1452
- easing: isExpanded.value ? Animated10.Easing.out(Animated10.Easing.ease) : Animated10.Easing.in(Animated10.Easing.ease)
1548
+ easing: isExpanded.value ? Animated11.Easing.out(Animated11.Easing.ease) : Animated11.Easing.in(Animated11.Easing.ease)
1453
1549
  })
1454
1550
  );
1455
- const bodyStyle = Animated10.useAnimatedStyle(() => ({
1551
+ const bodyStyle = Animated11.useAnimatedStyle(() => ({
1456
1552
  height: derivedHeight.value,
1457
1553
  overflow: "hidden"
1458
1554
  }));
1459
- const rotationStyle = Animated10.useAnimatedStyle(() => ({
1555
+ const rotationStyle = Animated11.useAnimatedStyle(() => ({
1460
1556
  transform: [{ rotate: `${derivedRotation.value * 180}deg` }]
1461
1557
  }));
1462
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles17.item, { borderBottomColor: colors.border }] }, /* @__PURE__ */ React24__default.default.createElement(
1558
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles18.item, { borderBottomColor: colors.border }] }, /* @__PURE__ */ React25__default.default.createElement(
1463
1559
  reactNative.Pressable,
1464
1560
  {
1465
- style: ({ pressed }) => [styles17.trigger, { opacity: pressed ? 0.6 : 1 }],
1561
+ style: ({ pressed }) => [styles18.trigger, { opacity: pressed ? 0.6 : 1 }],
1466
1562
  onPress: () => {
1467
1563
  selectionAsync();
1468
1564
  onToggle();
1469
1565
  }
1470
1566
  },
1471
- /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles17.triggerText, { color: colors.foreground }] }, item.trigger),
1472
- /* @__PURE__ */ React24__default.default.createElement(Animated10__default.default.View, { style: [styles17.chevron, rotationStyle] }, /* @__PURE__ */ React24__default.default.createElement(vectorIcons.Entypo, { name: "chevron-down", size: 20, color: colors.foreground }))
1473
- ), /* @__PURE__ */ React24__default.default.createElement(Animated10__default.default.View, { style: bodyStyle }, /* @__PURE__ */ React24__default.default.createElement(
1567
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles18.triggerText, { color: colors.foreground }] }, item.trigger),
1568
+ /* @__PURE__ */ React25__default.default.createElement(Animated11__default.default.View, { style: [styles18.chevron, rotationStyle] }, /* @__PURE__ */ React25__default.default.createElement(vectorIcons.Entypo, { name: "chevron-down", size: 20, color: colors.foreground }))
1569
+ ), /* @__PURE__ */ React25__default.default.createElement(Animated11__default.default.View, { style: bodyStyle }, /* @__PURE__ */ React25__default.default.createElement(
1474
1570
  reactNative.View,
1475
1571
  {
1476
- style: styles17.content,
1572
+ style: styles18.content,
1477
1573
  onLayout: (e) => {
1478
1574
  height.value = e.nativeEvent.layout.height;
1479
1575
  }
@@ -1482,7 +1578,7 @@ function AccordionItemComponent({
1482
1578
  )));
1483
1579
  }
1484
1580
  function Accordion({ items, type = "single", defaultValue, style }) {
1485
- const [openValues, setOpenValues] = React24.useState(() => {
1581
+ const [openValues, setOpenValues] = React25.useState(() => {
1486
1582
  if (!defaultValue) return [];
1487
1583
  return Array.isArray(defaultValue) ? defaultValue : [defaultValue];
1488
1584
  });
@@ -1495,7 +1591,7 @@ function Accordion({ items, type = "single", defaultValue, style }) {
1495
1591
  );
1496
1592
  }
1497
1593
  };
1498
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style }, items.map((item) => /* @__PURE__ */ React24__default.default.createElement(
1594
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style }, items.map((item) => /* @__PURE__ */ React25__default.default.createElement(
1499
1595
  AccordionItemComponent,
1500
1596
  {
1501
1597
  key: item.value,
@@ -1505,7 +1601,7 @@ function Accordion({ items, type = "single", defaultValue, style }) {
1505
1601
  }
1506
1602
  )));
1507
1603
  }
1508
- var styles17 = reactNative.StyleSheet.create({
1604
+ var styles18 = reactNative.StyleSheet.create({
1509
1605
  item: {
1510
1606
  borderBottomWidth: 1
1511
1607
  },
@@ -1546,7 +1642,7 @@ function Slider({
1546
1642
  style
1547
1643
  }) {
1548
1644
  const { colors } = useTheme();
1549
- const lastSteppedValue = React24.useRef(value);
1645
+ const lastSteppedValue = React25.useRef(value);
1550
1646
  const handleValueChange = (v) => {
1551
1647
  if (step && v !== lastSteppedValue.current) {
1552
1648
  lastSteppedValue.current = v;
@@ -1554,7 +1650,7 @@ function Slider({
1554
1650
  }
1555
1651
  onValueChange?.(v);
1556
1652
  };
1557
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles18.wrapper, style], accessibilityLabel }, label || showValue ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles18.header }, label ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles18.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, showValue ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles18.valueText, { color: colors.mutedForeground }], allowFontScaling: true }, formatValue2(value)) : null) : null, /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: disabled ? styles18.disabled : void 0 }, /* @__PURE__ */ React24__default.default.createElement(
1653
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles19.wrapper, style], accessibilityLabel }, label || showValue ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles19.header }, label ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles19.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, showValue ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles19.valueText, { color: colors.mutedForeground }], allowFontScaling: true }, formatValue2(value)) : null) : null, /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: disabled ? styles19.disabled : void 0 }, /* @__PURE__ */ React25__default.default.createElement(
1558
1654
  RNSlider__default.default,
1559
1655
  {
1560
1656
  value,
@@ -1567,12 +1663,12 @@ function Slider({
1567
1663
  minimumTrackTintColor: colors.primary,
1568
1664
  maximumTrackTintColor: colors.muted,
1569
1665
  thumbTintColor: colors.primary,
1570
- style: styles18.slider,
1666
+ style: styles19.slider,
1571
1667
  accessibilityLabel
1572
1668
  }
1573
1669
  )));
1574
1670
  }
1575
- var styles18 = reactNative.StyleSheet.create({
1671
+ var styles19 = reactNative.StyleSheet.create({
1576
1672
  wrapper: {
1577
1673
  gap: vs(8)
1578
1674
  },
@@ -1607,8 +1703,8 @@ function Sheet({
1607
1703
  style
1608
1704
  }) {
1609
1705
  const { colors } = useTheme();
1610
- const ref = React24.useRef(null);
1611
- React24.useEffect(() => {
1706
+ const ref = React25.useRef(null);
1707
+ React25.useEffect(() => {
1612
1708
  if (open) {
1613
1709
  impactLight();
1614
1710
  ref.current?.present();
@@ -1616,7 +1712,7 @@ function Sheet({
1616
1712
  ref.current?.dismiss();
1617
1713
  }
1618
1714
  }, [open]);
1619
- const renderBackdrop = (props) => /* @__PURE__ */ React24__default.default.createElement(
1715
+ const renderBackdrop = (props) => /* @__PURE__ */ React25__default.default.createElement(
1620
1716
  bottomSheet.BottomSheetBackdrop,
1621
1717
  {
1622
1718
  ...props,
@@ -1625,21 +1721,21 @@ function Sheet({
1625
1721
  pressBehavior: "close"
1626
1722
  }
1627
1723
  );
1628
- return /* @__PURE__ */ React24__default.default.createElement(
1724
+ return /* @__PURE__ */ React25__default.default.createElement(
1629
1725
  bottomSheet.BottomSheetModal,
1630
1726
  {
1631
1727
  ref,
1632
1728
  snapPoints,
1633
1729
  onDismiss: onClose,
1634
1730
  backdropComponent: renderBackdrop,
1635
- backgroundStyle: [styles19.background, { backgroundColor: colors.card }],
1636
- handleIndicatorStyle: [styles19.handle, { backgroundColor: colors.border }],
1731
+ backgroundStyle: [styles20.background, { backgroundColor: colors.card }],
1732
+ handleIndicatorStyle: [styles20.handle, { backgroundColor: colors.border }],
1637
1733
  enablePanDownToClose: true
1638
1734
  },
1639
- /* @__PURE__ */ React24__default.default.createElement(bottomSheet.BottomSheetView, { style: [styles19.content, style] }, title || description ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles19.header }, title ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles19.title, { color: colors.cardForeground }] }, title) : null, description ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles19.description, { color: colors.mutedForeground }] }, description) : null) : null, children)
1735
+ /* @__PURE__ */ React25__default.default.createElement(bottomSheet.BottomSheetView, { style: [styles20.content, style] }, title || description ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles20.header }, title ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles20.title, { color: colors.cardForeground }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles20.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null) : null, children)
1640
1736
  );
1641
1737
  }
1642
- var styles19 = reactNative.StyleSheet.create({
1738
+ var styles20 = reactNative.StyleSheet.create({
1643
1739
  background: {
1644
1740
  borderTopLeftRadius: ms(16),
1645
1741
  borderTopRightRadius: ms(16)
@@ -1680,10 +1776,10 @@ function Select({
1680
1776
  style
1681
1777
  }) {
1682
1778
  const { colors } = useTheme();
1683
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
1684
- const [pickerVisible, setPickerVisible] = React24.useState(false);
1685
- const [pendingValue, setPendingValue] = React24.useState(value);
1686
- const pickerRef = React24.useRef(null);
1779
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
1780
+ const [pickerVisible, setPickerVisible] = React25.useState(false);
1781
+ const [pendingValue, setPendingValue] = React25.useState(value);
1782
+ const pickerRef = React25.useRef(null);
1687
1783
  const selected = options.find((o) => o.value === value);
1688
1784
  const handlePressIn = () => {
1689
1785
  if (disabled) return;
@@ -1712,11 +1808,11 @@ function Select({
1712
1808
  }
1713
1809
  setPickerVisible(false);
1714
1810
  };
1715
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles20.container, style] }, label ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles20.label, { color: colors.foreground }] }, label) : null, !isWeb2 ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }], opacity: disabled ? 0.45 : 1 } }, /* @__PURE__ */ React24__default.default.createElement(
1811
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles21.container, style] }, label ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles21.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, !isWeb2 ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale: scale2 }], opacity: disabled ? 0.45 : 1 } }, /* @__PURE__ */ React25__default.default.createElement(
1716
1812
  reactNative.TouchableOpacity,
1717
1813
  {
1718
1814
  style: [
1719
- styles20.trigger,
1815
+ styles21.trigger,
1720
1816
  {
1721
1817
  borderColor: error ? colors.destructive : colors.border,
1722
1818
  backgroundColor: colors.background
@@ -1728,11 +1824,11 @@ function Select({
1728
1824
  activeOpacity: 1,
1729
1825
  touchSoundDisabled: true
1730
1826
  },
1731
- /* @__PURE__ */ React24__default.default.createElement(
1827
+ /* @__PURE__ */ React25__default.default.createElement(
1732
1828
  reactNative.Text,
1733
1829
  {
1734
1830
  style: [
1735
- styles20.triggerText,
1831
+ styles21.triggerText,
1736
1832
  { color: selected ? colors.foreground : colors.mutedForeground }
1737
1833
  ],
1738
1834
  numberOfLines: 1,
@@ -1740,8 +1836,8 @@ function Select({
1740
1836
  },
1741
1837
  selected?.label ?? placeholder
1742
1838
  ),
1743
- /* @__PURE__ */ React24__default.default.createElement(vectorIcons.Entypo, { name: "chevron-with-circle-down", size: 20, color: colors.mutedForeground })
1744
- )) : null, isIOS ? /* @__PURE__ */ React24__default.default.createElement(
1839
+ /* @__PURE__ */ React25__default.default.createElement(vectorIcons.Entypo, { name: "chevron-with-circle-down", size: 20, color: colors.mutedForeground })
1840
+ )) : null, isIOS ? /* @__PURE__ */ React25__default.default.createElement(
1745
1841
  reactNative.Modal,
1746
1842
  {
1747
1843
  visible: pickerVisible,
@@ -1749,16 +1845,16 @@ function Select({
1749
1845
  animationType: "slide",
1750
1846
  onRequestClose: handleDismiss
1751
1847
  },
1752
- /* @__PURE__ */ React24__default.default.createElement(reactNative.TouchableOpacity, { style: styles20.iosBackdrop, activeOpacity: 1, onPress: handleDismiss }),
1753
- /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles20.iosSheet, { backgroundColor: colors.card }] }, /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles20.iosToolbar, { borderBottomColor: colors.border }] }, label ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles20.iosToolbarTitle, { color: colors.foreground }], allowFontScaling: true }, label) : /* @__PURE__ */ React24__default.default.createElement(reactNative.View, null), /* @__PURE__ */ React24__default.default.createElement(reactNative.TouchableOpacity, { onPress: handleConfirm, style: styles20.iosDoneBtn, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 } }, /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles20.iosDoneBtnText, { color: colors.primary }], allowFontScaling: true }, "Done"))), /* @__PURE__ */ React24__default.default.createElement(
1848
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.TouchableOpacity, { style: styles21.iosBackdrop, activeOpacity: 1, onPress: handleDismiss }),
1849
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles21.iosSheet, { backgroundColor: colors.card }] }, /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles21.iosToolbar, { borderBottomColor: colors.border }] }, label ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles21.iosToolbarTitle, { color: colors.foreground }], allowFontScaling: true }, label) : /* @__PURE__ */ React25__default.default.createElement(reactNative.View, null), /* @__PURE__ */ React25__default.default.createElement(reactNative.TouchableOpacity, { onPress: handleConfirm, style: styles21.iosDoneBtn, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 } }, /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles21.iosDoneBtnText, { color: colors.primary }], allowFontScaling: true }, "Done"))), /* @__PURE__ */ React25__default.default.createElement(
1754
1850
  picker.Picker,
1755
1851
  {
1756
1852
  selectedValue: pendingValue ?? "",
1757
1853
  onValueChange: (val) => setPendingValue(val),
1758
1854
  itemStyle: { color: colors.foreground }
1759
1855
  },
1760
- !value ? /* @__PURE__ */ React24__default.default.createElement(picker.Picker.Item, { label: placeholder, value: "", color: colors.mutedForeground, enabled: false }) : null,
1761
- options.map((o) => /* @__PURE__ */ React24__default.default.createElement(
1856
+ !value ? /* @__PURE__ */ React25__default.default.createElement(picker.Picker.Item, { label: placeholder, value: "", color: colors.mutedForeground, enabled: false }) : null,
1857
+ options.map((o) => /* @__PURE__ */ React25__default.default.createElement(
1762
1858
  picker.Picker.Item,
1763
1859
  {
1764
1860
  key: o.value,
@@ -1769,7 +1865,7 @@ function Select({
1769
1865
  }
1770
1866
  ))
1771
1867
  ))
1772
- ) : null, isAndroid ? /* @__PURE__ */ React24__default.default.createElement(
1868
+ ) : null, isAndroid ? /* @__PURE__ */ React25__default.default.createElement(
1773
1869
  picker.Picker,
1774
1870
  {
1775
1871
  ref: pickerRef,
@@ -1783,10 +1879,10 @@ function Select({
1783
1879
  mode: "dialog",
1784
1880
  enabled: !disabled,
1785
1881
  prompt: label,
1786
- style: styles20.androidHiddenPicker
1882
+ style: styles21.androidHiddenPicker
1787
1883
  },
1788
- !value ? /* @__PURE__ */ React24__default.default.createElement(picker.Picker.Item, { label: placeholder, value: "", enabled: false }) : null,
1789
- options.map((o) => /* @__PURE__ */ React24__default.default.createElement(
1884
+ !value ? /* @__PURE__ */ React25__default.default.createElement(picker.Picker.Item, { label: placeholder, value: "", enabled: false }) : null,
1885
+ options.map((o) => /* @__PURE__ */ React25__default.default.createElement(
1790
1886
  picker.Picker.Item,
1791
1887
  {
1792
1888
  key: o.value,
@@ -1795,7 +1891,7 @@ function Select({
1795
1891
  enabled: !o.disabled
1796
1892
  }
1797
1893
  ))
1798
- ) : null, isWeb2 ? /* @__PURE__ */ React24__default.default.createElement(
1894
+ ) : null, isWeb2 ? /* @__PURE__ */ React25__default.default.createElement(
1799
1895
  picker.Picker,
1800
1896
  {
1801
1897
  selectedValue: value ?? "",
@@ -1806,7 +1902,7 @@ function Select({
1806
1902
  },
1807
1903
  enabled: !disabled,
1808
1904
  style: [
1809
- styles20.webPicker,
1905
+ styles21.webPicker,
1810
1906
  {
1811
1907
  borderColor: error ? colors.destructive : colors.border,
1812
1908
  color: selected ? colors.foreground : colors.mutedForeground,
@@ -1815,8 +1911,8 @@ function Select({
1815
1911
  }
1816
1912
  ]
1817
1913
  },
1818
- /* @__PURE__ */ React24__default.default.createElement(picker.Picker.Item, { label: placeholder, value: "", enabled: false }),
1819
- options.map((o) => /* @__PURE__ */ React24__default.default.createElement(
1914
+ /* @__PURE__ */ React25__default.default.createElement(picker.Picker.Item, { label: placeholder, value: "", enabled: false }),
1915
+ options.map((o) => /* @__PURE__ */ React25__default.default.createElement(
1820
1916
  picker.Picker.Item,
1821
1917
  {
1822
1918
  key: o.value,
@@ -1825,9 +1921,9 @@ function Select({
1825
1921
  enabled: !o.disabled
1826
1922
  }
1827
1923
  ))
1828
- ) : null, error ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles20.helperText, { color: colors.destructive }] }, error) : null);
1924
+ ) : null, error ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles21.helperText, { color: colors.destructive }], allowFontScaling: true }, error) : null);
1829
1925
  }
1830
- var styles20 = reactNative.StyleSheet.create({
1926
+ var styles21 = reactNative.StyleSheet.create({
1831
1927
  container: {
1832
1928
  gap: vs(8)
1833
1929
  },
@@ -1900,28 +1996,28 @@ var styles20 = reactNative.StyleSheet.create({
1900
1996
  fontSize: ms(17)
1901
1997
  }
1902
1998
  });
1903
- var ToastContext = React24.createContext({
1999
+ var ToastContext = React25.createContext({
1904
2000
  toast: () => {
1905
2001
  },
1906
2002
  dismiss: () => {
1907
2003
  }
1908
2004
  });
1909
2005
  function useToast() {
1910
- return React24.useContext(ToastContext);
2006
+ return React25.useContext(ToastContext);
1911
2007
  }
1912
2008
  var SWIPE_THRESHOLD = 80;
1913
2009
  var VELOCITY_THRESHOLD = 800;
1914
2010
  function ToastNotification({ item, onDismiss }) {
1915
2011
  const { colors } = useTheme();
1916
- const translateY = Animated10.useSharedValue(-80);
1917
- const translateX = Animated10.useSharedValue(0);
1918
- const opacity = Animated10.useSharedValue(0);
1919
- React24.useEffect(() => {
1920
- translateY.value = Animated10.withTiming(0, { duration: 120, easing: Animated10.Easing.out(Animated10.Easing.exp) });
1921
- opacity.value = Animated10.withTiming(1, { duration: 100 });
2012
+ const translateY = Animated11.useSharedValue(-80);
2013
+ const translateX = Animated11.useSharedValue(0);
2014
+ const opacity = Animated11.useSharedValue(0);
2015
+ React25.useEffect(() => {
2016
+ translateY.value = Animated11.withTiming(0, { duration: 120, easing: Animated11.Easing.out(Animated11.Easing.exp) });
2017
+ opacity.value = Animated11.withTiming(1, { duration: 100 });
1922
2018
  const timer = setTimeout(() => {
1923
- translateY.value = Animated10.withTiming(-80, { duration: 200 });
1924
- opacity.value = Animated10.withTiming(0, { duration: 200 }, (done) => {
2019
+ translateY.value = Animated11.withTiming(-80, { duration: 200 });
2020
+ opacity.value = Animated11.withTiming(0, { duration: 200 }, (done) => {
1925
2021
  if (done) reactNativeWorklets.scheduleOnRN(onDismiss);
1926
2022
  });
1927
2023
  }, item.duration ?? 3e3);
@@ -1933,15 +2029,15 @@ function ToastNotification({ item, onDismiss }) {
1933
2029
  const shouldDismiss = Math.abs(translateX.value) > SWIPE_THRESHOLD || Math.abs(e.velocityX) > VELOCITY_THRESHOLD;
1934
2030
  if (shouldDismiss) {
1935
2031
  const direction = translateX.value > 0 ? 1 : -1;
1936
- translateX.value = Animated10.withTiming(direction * 500, { duration: 200 }, (done) => {
2032
+ translateX.value = Animated11.withTiming(direction * 500, { duration: 200 }, (done) => {
1937
2033
  if (done) reactNativeWorklets.scheduleOnRN(onDismiss);
1938
2034
  });
1939
- opacity.value = Animated10.withTiming(0, { duration: 150 });
2035
+ opacity.value = Animated11.withTiming(0, { duration: 150 });
1940
2036
  } else {
1941
- translateX.value = Animated10.withSpring(0, { damping: 20, stiffness: 300 });
2037
+ translateX.value = Animated11.withSpring(0, { damping: 20, stiffness: 300 });
1942
2038
  }
1943
2039
  });
1944
- const animatedStyle = Animated10.useAnimatedStyle(() => ({
2040
+ const animatedStyle = Animated11.useAnimatedStyle(() => ({
1945
2041
  opacity: opacity.value,
1946
2042
  transform: [{ translateY: translateY.value }, { translateX: translateX.value }]
1947
2043
  }));
@@ -1955,14 +2051,14 @@ function ToastNotification({ item, onDismiss }) {
1955
2051
  destructive: colors.destructiveForeground,
1956
2052
  success: colors.successForeground
1957
2053
  }[item.variant ?? "default"];
1958
- const defaultIcon = item.variant === "success" ? /* @__PURE__ */ React24__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: 22, color: textColor }) : item.variant === "destructive" ? /* @__PURE__ */ React24__default.default.createElement(vectorIcons.MaterialIcons, { name: "error-outline", size: 24, color: textColor }) : /* @__PURE__ */ React24__default.default.createElement(vectorIcons.Entypo, { name: "info-with-circle", size: 22, color: textColor });
2054
+ const defaultIcon = item.variant === "success" ? /* @__PURE__ */ React25__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: 22, color: textColor }) : item.variant === "destructive" ? /* @__PURE__ */ React25__default.default.createElement(vectorIcons.MaterialIcons, { name: "error-outline", size: 24, color: textColor }) : /* @__PURE__ */ React25__default.default.createElement(vectorIcons.Entypo, { name: "info-with-circle", size: 22, color: textColor });
1959
2055
  const leftIcon = item.iconName ? renderIcon(item.iconName, 22, item.iconColor ?? textColor) : item.icon ?? defaultIcon;
1960
- return /* @__PURE__ */ React24__default.default.createElement(reactNativeGestureHandler.GestureDetector, { gesture: panGesture }, /* @__PURE__ */ React24__default.default.createElement(Animated10__default.default.View, { style: [styles21.toast, { backgroundColor: bgColor }, animatedStyle] }, /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles21.leftIconContainer }, leftIcon), /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles21.toastContent }, item.title ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles21.toastTitle, { color: textColor }] }, item.title) : null, item.description ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles21.toastDescription, { color: textColor, opacity: 0.85 }] }, item.description) : null), /* @__PURE__ */ React24__default.default.createElement(reactNative.TouchableOpacity, { onPress: onDismiss, style: styles21.dismissButton, touchSoundDisabled: true }, /* @__PURE__ */ React24__default.default.createElement(vectorIcons.AntDesign, { name: "close-circle", size: 18, color: textColor }))));
2056
+ return /* @__PURE__ */ React25__default.default.createElement(reactNativeGestureHandler.GestureDetector, { gesture: panGesture }, /* @__PURE__ */ React25__default.default.createElement(Animated11__default.default.View, { style: [styles22.toast, { backgroundColor: bgColor }, animatedStyle] }, /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles22.leftIconContainer }, leftIcon), /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles22.toastContent }, item.title ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles22.toastTitle, { color: textColor }], allowFontScaling: true }, item.title) : null, item.description ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles22.toastDescription, { color: textColor, opacity: 0.85 }], allowFontScaling: true }, item.description) : null), /* @__PURE__ */ React25__default.default.createElement(reactNative.TouchableOpacity, { onPress: onDismiss, style: styles22.dismissButton, touchSoundDisabled: true }, /* @__PURE__ */ React25__default.default.createElement(vectorIcons.AntDesign, { name: "close-circle", size: 18, color: textColor }))));
1961
2057
  }
1962
2058
  function ToastProvider({ children }) {
1963
- const [toasts, setToasts] = React24.useState([]);
2059
+ const [toasts, setToasts] = React25.useState([]);
1964
2060
  const insets = reactNativeSafeAreaContext.useSafeAreaInsets();
1965
- const toast = React24.useCallback((item) => {
2061
+ const toast = React25.useCallback((item) => {
1966
2062
  const id = Math.random().toString(36).slice(2);
1967
2063
  if (item.variant === "success") {
1968
2064
  notificationSuccess();
@@ -1973,12 +2069,12 @@ function ToastProvider({ children }) {
1973
2069
  }
1974
2070
  setToasts((prev) => [{ ...item, id }, ...prev].slice(0, 3));
1975
2071
  }, []);
1976
- const dismiss = React24.useCallback((id) => {
2072
+ const dismiss = React25.useCallback((id) => {
1977
2073
  setToasts((prev) => prev.filter((t) => t.id !== id));
1978
2074
  }, []);
1979
- return /* @__PURE__ */ React24__default.default.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles21.container, reactNative.Platform.OS === "web" && styles21.containerWeb, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React24__default.default.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
2075
+ return /* @__PURE__ */ React25__default.default.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles22.container, reactNative.Platform.OS === "web" && styles22.containerWeb, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React25__default.default.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
1980
2076
  }
1981
- var styles21 = reactNative.StyleSheet.create({
2077
+ var styles22 = reactNative.StyleSheet.create({
1982
2078
  container: {
1983
2079
  position: "absolute",
1984
2080
  left: s(16),
@@ -2056,7 +2152,7 @@ function CurrencyInput({
2056
2152
  onChangeValue?.(isNaN(raw) ? 0 : raw);
2057
2153
  };
2058
2154
  const inputStyle = size === "large" ? { fontSize: ms(36) } : {};
2059
- return /* @__PURE__ */ React24__default.default.createElement(
2155
+ return /* @__PURE__ */ React25__default.default.createElement(
2060
2156
  Input,
2061
2157
  {
2062
2158
  value,
@@ -2087,16 +2183,16 @@ function formatValue(value, prefix, showDecimals) {
2087
2183
  function CurrencyDisplay({ value, prefix = "$", showDecimals = false, textColor, style }) {
2088
2184
  const { colors } = useTheme();
2089
2185
  const formatted = formatValue(value, prefix, showDecimals);
2090
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles22.container, style] }, /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles22.amount, { color: textColor ?? colors.foreground }], allowFontScaling: true }, formatted));
2186
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles23.container, style] }, /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles23.amount, { color: textColor ?? colors.foreground }], allowFontScaling: true }, formatted));
2091
2187
  }
2092
- var styles22 = reactNative.StyleSheet.create({
2188
+ var styles23 = reactNative.StyleSheet.create({
2093
2189
  container: {},
2094
2190
  amount: {
2095
2191
  fontSize: ms(56),
2096
2192
  fontWeight: "700"
2097
2193
  }
2098
2194
  });
2099
- var nativeDriver7 = reactNative.Platform.OS !== "web";
2195
+ var nativeDriver8 = reactNative.Platform.OS !== "web";
2100
2196
  function ListItem({
2101
2197
  leftRender,
2102
2198
  rightRender,
@@ -2120,12 +2216,12 @@ function ListItem({
2120
2216
  captionStyle
2121
2217
  }) {
2122
2218
  const { colors } = useTheme();
2123
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
2219
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
2124
2220
  const handlePressIn = () => {
2125
2221
  if (!onPress || disabled) return;
2126
2222
  reactNative.Animated.spring(scale2, {
2127
2223
  toValue: 0.97,
2128
- useNativeDriver: nativeDriver7,
2224
+ useNativeDriver: nativeDriver8,
2129
2225
  speed: 40,
2130
2226
  bounciness: 0
2131
2227
  }).start();
@@ -2133,7 +2229,7 @@ function ListItem({
2133
2229
  const handlePressOut = () => {
2134
2230
  reactNative.Animated.spring(scale2, {
2135
2231
  toValue: 1,
2136
- useNativeDriver: nativeDriver7,
2232
+ useNativeDriver: nativeDriver8,
2137
2233
  speed: 40,
2138
2234
  bounciness: 4
2139
2235
  }).start();
@@ -2155,10 +2251,10 @@ function ListItem({
2155
2251
  shadowRadius: 6,
2156
2252
  elevation: 2
2157
2253
  } : {};
2158
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles23.disabled] }, /* @__PURE__ */ React24__default.default.createElement(
2254
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: [{ transform: [{ scale: scale2 }] }, disabled && styles24.disabled] }, /* @__PURE__ */ React25__default.default.createElement(
2159
2255
  reactNative.TouchableOpacity,
2160
2256
  {
2161
- style: [styles23.container, cardStyle, style],
2257
+ style: [styles24.container, cardStyle, style],
2162
2258
  onPress: onPress ? handlePress : void 0,
2163
2259
  onPressIn: handlePressIn,
2164
2260
  onPressOut: handlePressOut,
@@ -2166,51 +2262,51 @@ function ListItem({
2166
2262
  activeOpacity: 1,
2167
2263
  touchSoundDisabled: true
2168
2264
  },
2169
- effectiveLeft ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles23.leftContainer }, effectiveLeft) : null,
2170
- /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles23.content }, /* @__PURE__ */ React24__default.default.createElement(
2265
+ effectiveLeft ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles24.leftContainer }, effectiveLeft) : null,
2266
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles24.content }, /* @__PURE__ */ React25__default.default.createElement(
2171
2267
  reactNative.Text,
2172
2268
  {
2173
- style: [styles23.title, { color: colors.foreground }, titleStyle],
2269
+ style: [styles24.title, { color: colors.foreground }, titleStyle],
2174
2270
  numberOfLines: 2,
2175
2271
  allowFontScaling: true
2176
2272
  },
2177
2273
  title
2178
- ), subtitle ? /* @__PURE__ */ React24__default.default.createElement(
2274
+ ), subtitle ? /* @__PURE__ */ React25__default.default.createElement(
2179
2275
  reactNative.Text,
2180
2276
  {
2181
- style: [styles23.subtitle, { color: colors.mutedForeground }, subtitleStyle],
2277
+ style: [styles24.subtitle, { color: colors.mutedForeground }, subtitleStyle],
2182
2278
  numberOfLines: 2,
2183
2279
  allowFontScaling: true
2184
2280
  },
2185
2281
  subtitle
2186
- ) : null, caption ? /* @__PURE__ */ React24__default.default.createElement(
2282
+ ) : null, caption ? /* @__PURE__ */ React25__default.default.createElement(
2187
2283
  reactNative.Text,
2188
2284
  {
2189
- style: [styles23.caption, { color: colors.mutedForeground }, captionStyle],
2285
+ style: [styles24.caption, { color: colors.mutedForeground }, captionStyle],
2190
2286
  numberOfLines: 1,
2191
2287
  allowFontScaling: true
2192
2288
  },
2193
2289
  caption
2194
2290
  ) : null),
2195
- effectiveRight !== void 0 ? /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles23.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React24__default.default.createElement(
2291
+ effectiveRight !== void 0 ? /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles24.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React25__default.default.createElement(
2196
2292
  reactNative.Text,
2197
2293
  {
2198
- style: [styles23.rightText, { color: colors.mutedForeground }],
2294
+ style: [styles24.rightText, { color: colors.mutedForeground }],
2199
2295
  allowFontScaling: true
2200
2296
  },
2201
2297
  effectiveRight
2202
- ) : effectiveRight) : showChevron ? /* @__PURE__ */ React24__default.default.createElement(vectorIcons.Entypo, { name: "chevron-with-circle-right", size: 20, color: colors.mutedForeground }) : null
2203
- ), showSeparator ? /* @__PURE__ */ React24__default.default.createElement(
2298
+ ) : effectiveRight) : showChevron ? /* @__PURE__ */ React25__default.default.createElement(vectorIcons.Entypo, { name: "chevron-with-circle-right", size: 20, color: colors.mutedForeground }) : null
2299
+ ), showSeparator ? /* @__PURE__ */ React25__default.default.createElement(
2204
2300
  reactNative.View,
2205
2301
  {
2206
2302
  style: [
2207
- styles23.separator,
2303
+ styles24.separator,
2208
2304
  { backgroundColor: colors.border, marginLeft: effectiveLeft ? s(16) + s(44) + s(12) : s(16) }
2209
2305
  ]
2210
2306
  }
2211
2307
  ) : null);
2212
2308
  }
2213
- var styles23 = reactNative.StyleSheet.create({
2309
+ var styles24 = reactNative.StyleSheet.create({
2214
2310
  container: {
2215
2311
  flexDirection: "row",
2216
2312
  alignItems: "center",
@@ -2265,12 +2361,12 @@ var styles23 = reactNative.StyleSheet.create({
2265
2361
  opacity: 0.45
2266
2362
  }
2267
2363
  });
2268
- var nativeDriver8 = reactNative.Platform.OS !== "web";
2364
+ var nativeDriver9 = reactNative.Platform.OS !== "web";
2269
2365
  function Chip({ label, selected = false, onPress, style }) {
2270
2366
  const { colors } = useTheme();
2271
- const scale2 = React24.useRef(new reactNative.Animated.Value(1)).current;
2272
- const pressAnim = React24.useRef(new reactNative.Animated.Value(selected ? 1 : 0)).current;
2273
- React24.useEffect(() => {
2367
+ const scale2 = React25.useRef(new reactNative.Animated.Value(1)).current;
2368
+ const pressAnim = React25.useRef(new reactNative.Animated.Value(selected ? 1 : 0)).current;
2369
+ React25.useEffect(() => {
2274
2370
  reactNative.Animated.timing(pressAnim, {
2275
2371
  toValue: selected ? 1 : 0,
2276
2372
  duration: 150,
@@ -2281,7 +2377,7 @@ function Chip({ label, selected = false, onPress, style }) {
2281
2377
  const handlePressIn = () => {
2282
2378
  reactNative.Animated.spring(scale2, {
2283
2379
  toValue: 0.95,
2284
- useNativeDriver: nativeDriver8,
2380
+ useNativeDriver: nativeDriver9,
2285
2381
  speed: 40,
2286
2382
  bounciness: 0
2287
2383
  }).start();
@@ -2289,7 +2385,7 @@ function Chip({ label, selected = false, onPress, style }) {
2289
2385
  const handlePressOut = () => {
2290
2386
  reactNative.Animated.spring(scale2, {
2291
2387
  toValue: 1,
2292
- useNativeDriver: nativeDriver8,
2388
+ useNativeDriver: nativeDriver9,
2293
2389
  speed: 40,
2294
2390
  bounciness: 4
2295
2391
  }).start();
@@ -2310,7 +2406,7 @@ function Chip({ label, selected = false, onPress, style }) {
2310
2406
  inputRange: [0, 1],
2311
2407
  outputRange: [colors.border, colors.primary]
2312
2408
  });
2313
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: [styles24.wrapper, { transform: [{ scale: scale2 }] }, style] }, /* @__PURE__ */ React24__default.default.createElement(
2409
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: [styles25.wrapper, { transform: [{ scale: scale2 }] }, style] }, /* @__PURE__ */ React25__default.default.createElement(
2314
2410
  reactNative.TouchableOpacity,
2315
2411
  {
2316
2412
  onPress: handlePress,
@@ -2319,7 +2415,7 @@ function Chip({ label, selected = false, onPress, style }) {
2319
2415
  activeOpacity: 1,
2320
2416
  touchSoundDisabled: true
2321
2417
  },
2322
- /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.View, { style: [styles24.chip, { backgroundColor, borderColor }] }, /* @__PURE__ */ React24__default.default.createElement(reactNative.Animated.Text, { style: [styles24.label, { color: textColor }], allowFontScaling: true }, label))
2418
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.View, { style: [styles25.chip, { backgroundColor, borderColor }] }, /* @__PURE__ */ React25__default.default.createElement(reactNative.Animated.Text, { style: [styles25.label, { color: textColor }], allowFontScaling: true }, label))
2323
2419
  ));
2324
2420
  }
2325
2421
  function ChipGroup({ options, value, onValueChange, multiSelect = false, style }) {
@@ -2344,7 +2440,7 @@ function ChipGroup({ options, value, onValueChange, multiSelect = false, style }
2344
2440
  }
2345
2441
  return optionValue === value;
2346
2442
  };
2347
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles24.group, style] }, options.map((opt) => /* @__PURE__ */ React24__default.default.createElement(
2443
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles25.group, style] }, options.map((opt) => /* @__PURE__ */ React25__default.default.createElement(
2348
2444
  Chip,
2349
2445
  {
2350
2446
  key: opt.value,
@@ -2354,7 +2450,7 @@ function ChipGroup({ options, value, onValueChange, multiSelect = false, style }
2354
2450
  }
2355
2451
  )));
2356
2452
  }
2357
- var styles24 = reactNative.StyleSheet.create({
2453
+ var styles25 = reactNative.StyleSheet.create({
2358
2454
  wrapper: {},
2359
2455
  chip: {
2360
2456
  borderRadius: 999,
@@ -2386,18 +2482,18 @@ function ConfirmDialog({
2386
2482
  onCancel
2387
2483
  }) {
2388
2484
  const { colors } = useTheme();
2389
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.Modal, { visible, transparent: true, animationType: "fade", onRequestClose: onCancel }, /* @__PURE__ */ React24__default.default.createElement(reactNative.TouchableOpacity, { style: styles25.overlay, activeOpacity: 1, onPress: onCancel }, /* @__PURE__ */ React24__default.default.createElement(
2485
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.Modal, { visible, transparent: true, animationType: "fade", onRequestClose: onCancel }, /* @__PURE__ */ React25__default.default.createElement(reactNative.TouchableOpacity, { style: styles26.overlay, activeOpacity: 1, onPress: onCancel }, /* @__PURE__ */ React25__default.default.createElement(
2390
2486
  reactNative.View,
2391
2487
  {
2392
- style: [styles25.dialog, { backgroundColor: colors.card }],
2488
+ style: [styles26.dialog, { backgroundColor: colors.card }],
2393
2489
  onStartShouldSetResponder: () => true
2394
2490
  },
2395
- /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles25.title, { color: colors.cardForeground }], allowFontScaling: true }, title),
2396
- description ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles25.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null,
2397
- /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: styles25.actions }, /* @__PURE__ */ React24__default.default.createElement(Button, { label: cancelLabel, variant: "outline", fullWidth: true, onPress: onCancel }), /* @__PURE__ */ React24__default.default.createElement(Button, { label: confirmLabel, variant: confirmVariant, fullWidth: true, onPress: onConfirm }))
2491
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles26.title, { color: colors.cardForeground }], allowFontScaling: true }, title),
2492
+ description ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles26.description, { color: colors.mutedForeground }], allowFontScaling: true }, description) : null,
2493
+ /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: styles26.actions }, /* @__PURE__ */ React25__default.default.createElement(Button, { label: cancelLabel, variant: "outline", fullWidth: true, onPress: onCancel }), /* @__PURE__ */ React25__default.default.createElement(Button, { label: confirmLabel, variant: confirmVariant, fullWidth: true, onPress: onConfirm }))
2398
2494
  )));
2399
2495
  }
2400
- var styles25 = reactNative.StyleSheet.create({
2496
+ var styles26 = reactNative.StyleSheet.create({
2401
2497
  overlay: {
2402
2498
  flex: 1,
2403
2499
  backgroundColor: "rgba(0,0,0,0.5)",
@@ -2433,9 +2529,9 @@ var styles25 = reactNative.StyleSheet.create({
2433
2529
  });
2434
2530
  function LabelValue({ label, value, style }) {
2435
2531
  const { colors } = useTheme();
2436
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles26.container, style] }, /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles26.label, { color: colors.mutedForeground }], allowFontScaling: true }, label), typeof value === "string" ? /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles26.value, { color: colors.foreground }], allowFontScaling: true }, value) : value);
2532
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles27.container, style] }, /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles27.label, { color: colors.mutedForeground }], allowFontScaling: true }, label), typeof value === "string" ? /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles27.value, { color: colors.foreground }], allowFontScaling: true }, value) : value);
2437
2533
  }
2438
- var styles26 = reactNative.StyleSheet.create({
2534
+ var styles27 = reactNative.StyleSheet.create({
2439
2535
  container: {
2440
2536
  flexDirection: "row",
2441
2537
  justifyContent: "space-between",
@@ -2485,27 +2581,27 @@ function MonthPicker({ value, onChange, style }) {
2485
2581
  onChange({ month: value.month + 1, year: value.year });
2486
2582
  }
2487
2583
  };
2488
- return /* @__PURE__ */ React24__default.default.createElement(reactNative.View, { style: [styles27.container, style] }, /* @__PURE__ */ React24__default.default.createElement(
2584
+ return /* @__PURE__ */ React25__default.default.createElement(reactNative.View, { style: [styles28.container, style] }, /* @__PURE__ */ React25__default.default.createElement(
2489
2585
  reactNative.TouchableOpacity,
2490
2586
  {
2491
- style: styles27.arrow,
2587
+ style: styles28.arrow,
2492
2588
  onPress: handlePrev,
2493
2589
  activeOpacity: 0.6,
2494
2590
  touchSoundDisabled: true
2495
2591
  },
2496
- /* @__PURE__ */ React24__default.default.createElement(vectorIcons.Entypo, { name: "chevron-left", size: 22, color: colors.foreground })
2497
- ), /* @__PURE__ */ React24__default.default.createElement(reactNative.Text, { style: [styles27.label, { color: colors.foreground }], allowFontScaling: true }, MONTH_NAMES[value.month - 1], " ", value.year), /* @__PURE__ */ React24__default.default.createElement(
2592
+ /* @__PURE__ */ React25__default.default.createElement(vectorIcons.Entypo, { name: "chevron-left", size: 22, color: colors.foreground })
2593
+ ), /* @__PURE__ */ React25__default.default.createElement(reactNative.Text, { style: [styles28.label, { color: colors.foreground }], allowFontScaling: true }, MONTH_NAMES[value.month - 1], " ", value.year), /* @__PURE__ */ React25__default.default.createElement(
2498
2594
  reactNative.TouchableOpacity,
2499
2595
  {
2500
- style: styles27.arrow,
2596
+ style: styles28.arrow,
2501
2597
  onPress: handleNext,
2502
2598
  activeOpacity: 0.6,
2503
2599
  touchSoundDisabled: true
2504
2600
  },
2505
- /* @__PURE__ */ React24__default.default.createElement(vectorIcons.Entypo, { name: "chevron-right", size: 22, color: colors.foreground })
2601
+ /* @__PURE__ */ React25__default.default.createElement(vectorIcons.Entypo, { name: "chevron-right", size: 22, color: colors.foreground })
2506
2602
  ));
2507
2603
  }
2508
- var styles27 = reactNative.StyleSheet.create({
2604
+ var styles28 = reactNative.StyleSheet.create({
2509
2605
  container: {
2510
2606
  flexDirection: "row",
2511
2607
  alignItems: "center",
@@ -2526,6 +2622,64 @@ var styles27 = reactNative.StyleSheet.create({
2526
2622
  }
2527
2623
  });
2528
2624
 
2625
+ // src/tokens.ts
2626
+ var SPACING = {
2627
+ xs: 4,
2628
+ sm: 8,
2629
+ md: 12,
2630
+ lg: 16,
2631
+ xl: 24,
2632
+ "2xl": 32,
2633
+ "3xl": 48
2634
+ };
2635
+ var ICON_SIZES = {
2636
+ sm: 14,
2637
+ md: 18,
2638
+ lg: 22,
2639
+ xl: 28,
2640
+ "2xl": 32
2641
+ };
2642
+ var RADIUS = {
2643
+ sm: 4,
2644
+ md: 8,
2645
+ lg: 12,
2646
+ xl: 16,
2647
+ full: 9999
2648
+ };
2649
+ var SHADOWS = {
2650
+ sm: {
2651
+ shadowColor: "#000",
2652
+ shadowOffset: { width: 0, height: 1 },
2653
+ shadowOpacity: 0.08,
2654
+ shadowRadius: 4,
2655
+ elevation: 2
2656
+ },
2657
+ md: {
2658
+ shadowColor: "#000",
2659
+ shadowOffset: { width: 0, height: 3 },
2660
+ shadowOpacity: 0.12,
2661
+ shadowRadius: 8,
2662
+ elevation: 5
2663
+ },
2664
+ lg: {
2665
+ shadowColor: "#000",
2666
+ shadowOffset: { width: 0, height: 6 },
2667
+ shadowOpacity: 0.2,
2668
+ shadowRadius: 16,
2669
+ elevation: 10
2670
+ },
2671
+ xl: {
2672
+ shadowColor: "#000",
2673
+ shadowOffset: { width: 0, height: 12 },
2674
+ shadowOpacity: 0.28,
2675
+ shadowRadius: 24,
2676
+ elevation: 18
2677
+ }
2678
+ };
2679
+ var BREAKPOINTS = {
2680
+ wide: 700
2681
+ };
2682
+
2529
2683
  Object.defineProperty(exports, "BottomSheetModalProvider", {
2530
2684
  enumerable: true,
2531
2685
  get: function () { return bottomSheet.BottomSheetModalProvider; }
@@ -2533,6 +2687,7 @@ Object.defineProperty(exports, "BottomSheetModalProvider", {
2533
2687
  exports.Accordion = Accordion;
2534
2688
  exports.AlertBanner = AlertBanner;
2535
2689
  exports.Avatar = Avatar;
2690
+ exports.BREAKPOINTS = BREAKPOINTS;
2536
2691
  exports.Badge = Badge;
2537
2692
  exports.Button = Button;
2538
2693
  exports.Card = Card;
@@ -2549,13 +2704,18 @@ exports.CurrencyDisplay = CurrencyDisplay;
2549
2704
  exports.CurrencyInput = CurrencyInput;
2550
2705
  exports.CurrencyInputLarge = CurrencyInput;
2551
2706
  exports.EmptyState = EmptyState;
2707
+ exports.ICON_SIZES = ICON_SIZES;
2552
2708
  exports.Icon = Icon;
2709
+ exports.IconButton = IconButton;
2553
2710
  exports.Input = Input;
2554
2711
  exports.LabelValue = LabelValue;
2555
2712
  exports.ListItem = ListItem;
2556
2713
  exports.MonthPicker = MonthPicker;
2557
2714
  exports.Progress = Progress;
2715
+ exports.RADIUS = RADIUS;
2558
2716
  exports.RadioGroup = RadioGroup;
2717
+ exports.SHADOWS = SHADOWS;
2718
+ exports.SPACING = SPACING;
2559
2719
  exports.Select = Select;
2560
2720
  exports.Separator = Separator;
2561
2721
  exports.Sheet = Sheet;