@umituz/react-native-design-system 2.6.75 → 2.6.76
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.6.
|
|
3
|
+
"version": "2.6.76",
|
|
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",
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PickerModal
|
|
3
|
-
*
|
|
4
|
-
* Modal component for AtomicPicker that handles the selection interface.
|
|
5
|
-
* Extracted from AtomicPicker to follow single responsibility principle.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Search functionality
|
|
9
|
-
* - Option list rendering
|
|
10
|
-
* - Multi-select support
|
|
11
|
-
* - Empty state handling
|
|
2
|
+
* PickerModal - Selection modal for AtomicPicker
|
|
3
|
+
* Handles search, filtering, and option selection.
|
|
12
4
|
*/
|
|
13
5
|
|
|
14
6
|
import React from 'react';
|
|
@@ -38,12 +30,6 @@ import {
|
|
|
38
30
|
getEmptyStateTextStyles,
|
|
39
31
|
} from '../styles/pickerStyles';
|
|
40
32
|
|
|
41
|
-
/**
|
|
42
|
-
* PickerModalProps
|
|
43
|
-
*
|
|
44
|
-
* IMPORTANT: String props are REQUIRED for proper i18n support.
|
|
45
|
-
* Pass translated strings from your app's i18n system.
|
|
46
|
-
*/
|
|
47
33
|
interface PickerModalProps {
|
|
48
34
|
visible: boolean;
|
|
49
35
|
onClose: () => void;
|
|
@@ -56,12 +42,9 @@ interface PickerModalProps {
|
|
|
56
42
|
onSearchChange: (query: string) => void;
|
|
57
43
|
filteredOptions: PickerOption[];
|
|
58
44
|
multiple?: boolean;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
searchPlaceholder?: string;
|
|
63
|
-
/** Close accessibility label */
|
|
64
|
-
closeAccessibilityLabel?: string;
|
|
45
|
+
emptyMessage?: string; // Translated string
|
|
46
|
+
searchPlaceholder?: string; // Translated string
|
|
47
|
+
closeAccessibilityLabel?: string; // Translated string
|
|
65
48
|
testID?: string;
|
|
66
49
|
}
|
|
67
50
|
|
|
@@ -219,5 +202,4 @@ export const PickerModal: React.FC<PickerModalProps> = React.memo(({
|
|
|
219
202
|
</View>
|
|
220
203
|
</Modal>
|
|
221
204
|
);
|
|
222
|
-
});
|
|
223
|
-
PickerModal.displayName = 'PickerModal';
|
|
205
|
+
});
|
|
@@ -12,24 +12,9 @@ import { useState, useEffect, useCallback } from 'react';
|
|
|
12
12
|
import { DeviceService } from '../../infrastructure/services/DeviceService';
|
|
13
13
|
import type { DeviceInfo, ApplicationInfo, SystemInfo } from '../../domain/entities/Device';
|
|
14
14
|
|
|
15
|
+
|
|
15
16
|
/**
|
|
16
17
|
* useDeviceInfo hook for device and application information
|
|
17
|
-
*
|
|
18
|
-
* USAGE:
|
|
19
|
-
* ```typescript
|
|
20
|
-
* const { deviceInfo, appInfo, systemInfo, isLoading, refresh } = useDeviceInfo();
|
|
21
|
-
*
|
|
22
|
-
* // Display device info
|
|
23
|
-
* <Text>Device: {deviceInfo?.modelName}</Text>
|
|
24
|
-
* <Text>OS: {deviceInfo?.osName} {deviceInfo?.osVersion}</Text>
|
|
25
|
-
*
|
|
26
|
-
* // Display app info
|
|
27
|
-
* <Text>App: {appInfo?.applicationName}</Text>
|
|
28
|
-
* <Text>Version: {appInfo?.nativeApplicationVersion}</Text>
|
|
29
|
-
*
|
|
30
|
-
* // Refresh info
|
|
31
|
-
* <AtomicButton onPress={refresh}>Refresh</AtomicButton>
|
|
32
|
-
* ```
|
|
33
18
|
*/
|
|
34
19
|
export const useDeviceInfo = () => {
|
|
35
20
|
const [deviceInfo, setDeviceInfo] = useState<DeviceInfo | null>(null);
|
|
@@ -127,18 +112,6 @@ export const useDeviceInfo = () => {
|
|
|
127
112
|
|
|
128
113
|
/**
|
|
129
114
|
* useDeviceCapabilities hook for device feature detection
|
|
130
|
-
*
|
|
131
|
-
* USAGE:
|
|
132
|
-
* ```typescript
|
|
133
|
-
* const { isDevice, isTablet, hasNotch, totalMemoryGB } = useDeviceCapabilities();
|
|
134
|
-
*
|
|
135
|
-
* // Conditional rendering
|
|
136
|
-
* {isTablet && <TabletLayout />}
|
|
137
|
-
* {hasNotch && <NotchSpacer />}
|
|
138
|
-
*
|
|
139
|
-
* // Performance optimization
|
|
140
|
-
* {totalMemoryGB && totalMemoryGB < 2 && <LowMemoryWarning />}
|
|
141
|
-
* ```
|
|
142
115
|
*/
|
|
143
116
|
export const useDeviceCapabilities = () => {
|
|
144
117
|
const [isDevice, setIsDevice] = useState(false);
|
|
@@ -183,16 +156,6 @@ export const useDeviceCapabilities = () => {
|
|
|
183
156
|
* useDeviceId hook for device unique identifier
|
|
184
157
|
*
|
|
185
158
|
* WARNING: Use with caution - user privacy considerations!
|
|
186
|
-
*
|
|
187
|
-
* USAGE:
|
|
188
|
-
* ```typescript
|
|
189
|
-
* const { deviceId, isLoading } = useDeviceId();
|
|
190
|
-
*
|
|
191
|
-
* // Analytics, crash reporting (with user consent)
|
|
192
|
-
* if (deviceId) {
|
|
193
|
-
* analytics.setUserId(deviceId);
|
|
194
|
-
* }
|
|
195
|
-
* ```
|
|
196
159
|
*/
|
|
197
160
|
export const useDeviceId = () => {
|
|
198
161
|
const [deviceId, setDeviceId] = useState<string | null>(null);
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Splash Screen Component
|
|
3
|
-
* Pure prop-driven component with theme-aware defaults
|
|
4
|
-
*/
|
|
5
1
|
|
|
6
2
|
import React, { useEffect, useState, useCallback } from "react";
|
|
7
3
|
import { View, Image, StyleSheet } from "react-native";
|
|
@@ -26,7 +22,6 @@ export const SplashScreen: React.FC<SplashScreenProps> = ({
|
|
|
26
22
|
onReady,
|
|
27
23
|
style,
|
|
28
24
|
}: SplashScreenProps) => {
|
|
29
|
-
// ALL HOOKS MUST BE AT THE TOP (Rules of Hooks)
|
|
30
25
|
const insets = useSafeAreaInsets();
|
|
31
26
|
const tokens = useAppDesignTokens();
|
|
32
27
|
const [timedOut, setTimedOut] = useState(false);
|
|
@@ -53,8 +48,6 @@ export const SplashScreen: React.FC<SplashScreenProps> = ({
|
|
|
53
48
|
return () => clearTimeout(timer);
|
|
54
49
|
}, [maxDuration, visible, handleTimeout]);
|
|
55
50
|
|
|
56
|
-
// ALL HOOKS ABOVE - NOW SAFE TO USE OTHER LOGIC
|
|
57
|
-
|
|
58
51
|
// Derive colors from tokens if not provided (theme-aware defaults)
|
|
59
52
|
const colors: SplashColors = customColors ?? {
|
|
60
53
|
background: tokens.colors.backgroundPrimary,
|