@umituz/react-native-design-system 2.3.28 → 2.3.30

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-design-system",
3
- "version": "2.3.28",
3
+ "version": "2.3.30",
4
4
  "description": "Universal design system for React Native apps - Consolidated package with atoms, molecules, organisms, theme, typography, responsive and safe area utilities",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -116,6 +116,7 @@
116
116
  "expo-clipboard": "~8.0.7",
117
117
  "expo-crypto": "~14.0.0",
118
118
  "expo-device": "~7.0.2",
119
+ "expo-file-system": "^19.0.21",
119
120
  "expo-haptics": "~14.0.0",
120
121
  "expo-localization": "~16.0.1",
121
122
  "expo-sharing": "~14.0.8",
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import { View, TouchableOpacity } from 'react-native';
9
+ import { View, TouchableOpacity, GestureResponderEvent } from 'react-native';
10
10
  import { useAppDesignTokens } from '../../../theme';
11
11
  import { PickerOption } from '../types';
12
12
  import { AtomicIcon } from '../../AtomicIcon';
@@ -41,7 +41,7 @@ export const PickerChips: React.FC<PickerChipsProps> = React.memo(({
41
41
  <View key={opt.value} style={chipStyles}>
42
42
  <AtomicText style={chipTextStyles}>{opt.label}</AtomicText>
43
43
  <TouchableOpacity
44
- onPress={(e) => {
44
+ onPress={(e: GestureResponderEvent) => {
45
45
  e.stopPropagation();
46
46
  onRemoveChip(opt.value);
47
47
  }}
@@ -191,7 +191,7 @@ export const PickerModal: React.FC<PickerModalProps> = React.memo(({
191
191
  {filteredOptions.length > 0 ? (
192
192
  <FlatList
193
193
  data={filteredOptions}
194
- keyExtractor={(item) => item.value}
194
+ keyExtractor={(item: PickerOption) => item.value}
195
195
  renderItem={renderOption}
196
196
  showsVerticalScrollIndicator
197
197
  testID={`${testID}-list`}
@@ -10,7 +10,7 @@ import { useAppDesignTokens } from '../../theme';
10
10
  import { AtomicIcon } from '../../atoms/AtomicIcon';
11
11
  import type { SearchBarProps } from './types';
12
12
 
13
- export const SearchBar = forwardRef<TextInput, SearchBarProps>(({
13
+ export const SearchBar = forwardRef<React.ComponentRef<typeof TextInput>, SearchBarProps>(({
14
14
  value,
15
15
  onChangeText,
16
16
  onSubmit,
@@ -45,7 +45,7 @@ export const useAnimation = () => {
45
45
  { translateX: translateXValue },
46
46
  { scale: scaleValue },
47
47
  { rotate: `${transform.rotate.value}deg` },
48
- ],
48
+ ] as any,
49
49
  };
50
50
  });
51
51
 
@@ -37,7 +37,7 @@ export const useGestureState = () => {
37
37
  { translateX: translateX.value },
38
38
  { translateY: translateY.value },
39
39
  { scale: scale.value },
40
- ],
40
+ ] as any,
41
41
  }));
42
42
 
43
43
  return {
@@ -94,13 +94,14 @@ export function useElementAnimations(
94
94
  transform.scale.value = 1;
95
95
  transform.rotate.value = 0;
96
96
  }
97
+ return undefined;
97
98
  }, [visible, isReanimatedReady, animationConfig, transform]);
98
99
 
99
100
  const elementStyle = useAnimatedStyle(() => ({
100
101
  transform: [
101
102
  { scale: transform.scale.value },
102
103
  { rotate: `${transform.rotate.value}deg` },
103
- ],
104
+ ] as any,
104
105
  }));
105
106
 
106
107
  return {
@@ -1,5 +1,5 @@
1
1
  import React, { useCallback } from "react";
2
- import { View, StyleSheet, ScrollView, Modal, Pressable } from "react-native";
2
+ import { View, StyleSheet, ScrollView, Modal, Pressable, GestureResponderEvent } from "react-native";
3
3
  import { useSafeAreaInsets } from "react-native-safe-area-context";
4
4
  import { AtomicButton } from '../../../../atoms';
5
5
  import { useAppDesignTokens } from '../../../../theme';
@@ -46,7 +46,7 @@ export const FilterSheet: React.FC<FilterSheetProps> = ({
46
46
  <Pressable style={styles.backdrop} onPress={onClose}>
47
47
  <Pressable
48
48
  style={[styles.sheet, { backgroundColor: tokens.colors.surface, paddingBottom: insets.bottom }]}
49
- onPress={(e) => e.stopPropagation()}
49
+ onPress={(e: GestureResponderEvent) => e.stopPropagation()}
50
50
  >
51
51
  <View style={[styles.handle, { backgroundColor: tokens.colors.border }]} />
52
52
 
@@ -35,6 +35,9 @@ export interface CelebrationModalProps {
35
35
  }) => React.ReactNode;
36
36
  }
37
37
 
38
+ // Access View through Animated namespace with type assertion for reanimated v3 compatibility
39
+ const AnimatedView = (Animated as unknown as { View: React.ComponentType<{ style?: unknown; children?: React.ReactNode }> }).View;
40
+
38
41
  export const CelebrationModal: React.FC<CelebrationModalProps> = ({
39
42
  visible,
40
43
  config,
@@ -59,7 +62,7 @@ export const CelebrationModal: React.FC<CelebrationModalProps> = ({
59
62
  dismissOnBackdrop={true}
60
63
  testID="celebration-modal"
61
64
  >
62
- <Animated.View style={modalStyle}>
65
+ <AnimatedView style={modalStyle}>
63
66
  {renderContent ? (
64
67
  renderContent({ config, onClose, iconStyle, modalStyle })
65
68
  ) : themeColors ? (
@@ -71,7 +74,7 @@ export const CelebrationModal: React.FC<CelebrationModalProps> = ({
71
74
  modalStyle={modalStyle}
72
75
  />
73
76
  ) : null}
74
- </Animated.View>
77
+ </AnimatedView>
75
78
  </BaseModal>
76
79
  </>
77
80
  );
@@ -8,6 +8,9 @@ import type { ThemeColors } from "../../domain/entities/FireworksConfig";
8
8
  import type { useCelebrationModalAnimation } from "../hooks/useCelebrationModalAnimation";
9
9
  import { createCelebrationModalStyles } from "../styles/CelebrationModalStyles";
10
10
 
11
+ // Access View through Animated namespace with type assertion for reanimated v3 compatibility
12
+ const AnimatedView = (Animated as unknown as { View: React.ComponentType<{ style?: unknown; children?: React.ReactNode }> }).View;
13
+
11
14
  export interface CelebrationModalContentProps {
12
15
  config: CelebrationConfig;
13
16
  onClose: () => void;
@@ -30,7 +33,7 @@ export const CelebrationModalContent: React.FC<CelebrationModalContentProps> = (
30
33
  const primaryColor = themeColors?.primary || tokens.colors.primary;
31
34
 
32
35
  return (
33
- <Animated.View
36
+ <AnimatedView
34
37
  style={[
35
38
  styles.modal,
36
39
  modalStyle,
@@ -45,11 +48,11 @@ export const CelebrationModalContent: React.FC<CelebrationModalContentProps> = (
45
48
  },
46
49
  ]}
47
50
  >
48
- <Animated.View style={[styles.iconContainer, iconStyle]}>
51
+ <AnimatedView style={[styles.iconContainer, iconStyle]}>
49
52
  <View style={[styles.iconCircle, { backgroundColor: successColor }]}>
50
53
  <AtomicIcon name="checkmark" size="xl" color="onPrimary" />
51
54
  </View>
52
- </Animated.View>
55
+ </AnimatedView>
53
56
 
54
57
  <AtomicText type="headlineSmall" style={[styles.title, { color: tokens.colors.onSurface }]}>
55
58
  {config.title}
@@ -85,6 +88,6 @@ export const CelebrationModalContent: React.FC<CelebrationModalContentProps> = (
85
88
  />
86
89
  )}
87
90
  </View>
88
- </Animated.View>
91
+ </AnimatedView>
89
92
  );
90
93
  };
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import * as Sharing from 'expo-sharing';
12
- import * as FileSystem from 'expo-file-system/legacy';
12
+ import * as FileSystem from 'expo-file-system/build/legacy';
13
13
  import type { ShareOptions, ShareResult } from '../../domain/entities/Share';
14
14
  import { SharingUtils } from '../../domain/entities/Share';
15
15