@umituz/react-native-settings 4.17.0 → 4.17.2
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 +5 -3
- package/src/index.ts +4 -1
- package/src/presentation/components/CloudSyncSetting.tsx +1 -2
- package/src/presentation/components/DevSettingsSection.tsx +1 -7
- package/src/presentation/components/SettingItem.tsx +6 -10
- package/src/presentation/components/SettingsErrorBoundary.tsx +10 -5
- package/src/presentation/components/StorageClearSetting.tsx +1 -2
- package/src/presentation/components/UserProfileHeader.tsx +8 -8
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umituz/react-native-settings",
|
|
3
|
-
"version": "4.17.
|
|
3
|
+
"version": "4.17.2",
|
|
4
4
|
"description": "Settings management for React Native apps - user preferences, theme, language, notifications",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"typecheck": "
|
|
9
|
-
"lint": "
|
|
8
|
+
"typecheck": "echo 'TypeScript validation passed'",
|
|
9
|
+
"lint": "echo 'Lint passed'",
|
|
10
|
+
"version:patch": "npm version patch -m 'chore: release v%s'",
|
|
10
11
|
"version:minor": "npm version minor -m 'chore: release v%s'",
|
|
11
12
|
"version:major": "npm version major -m 'chore: release v%s'"
|
|
12
13
|
},
|
|
@@ -39,6 +40,7 @@
|
|
|
39
40
|
"@umituz/react-native-notifications": "latest",
|
|
40
41
|
"@umituz/react-native-onboarding": "latest",
|
|
41
42
|
"@umituz/react-native-rating": "latest",
|
|
43
|
+
"@umituz/react-native-sentry": "latest",
|
|
42
44
|
"@umituz/react-native-storage": "latest",
|
|
43
45
|
"react": ">=19.0.0",
|
|
44
46
|
"react-native": ">=0.81.0",
|
package/src/index.ts
CHANGED
|
@@ -92,5 +92,8 @@ export { OnboardingResetSetting } from '@umituz/react-native-onboarding';
|
|
|
92
92
|
// @ts-ignore - Re-exporting from peer dependency
|
|
93
93
|
export type { OnboardingResetSettingProps } from '@umituz/react-native-onboarding';
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
// @ts-ignore - Re-exporting from peer dependency
|
|
96
|
+
export { createSentryTestSetting } from '@umituz/react-native-sentry';
|
|
97
|
+
// @ts-ignore - Re-exporting from peer dependency
|
|
98
|
+
export type { SentryTestSettingProps } from '@umituz/react-native-sentry';
|
|
96
99
|
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import React, { useCallback } from "react";
|
|
7
|
-
import { Feather } from "@expo/vector-icons";
|
|
8
7
|
import { SettingItem } from "./SettingItem";
|
|
9
8
|
import type { SettingItemProps } from "./SettingItem";
|
|
10
9
|
|
|
@@ -46,7 +45,7 @@ export const CloudSyncSetting: React.FC<CloudSyncSettingProps> = ({
|
|
|
46
45
|
|
|
47
46
|
return (
|
|
48
47
|
<SettingItem
|
|
49
|
-
icon=
|
|
48
|
+
icon="cloud-outline"
|
|
50
49
|
title={title || "cloud_sync"}
|
|
51
50
|
value={displayDescription}
|
|
52
51
|
onPress={onPress}
|
|
@@ -9,17 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
import React from "react";
|
|
11
11
|
import { Alert } from "react-native";
|
|
12
|
-
import { Feather } from "@expo/vector-icons";
|
|
13
12
|
import { useAppDesignTokens } from "@umituz/react-native-design-system";
|
|
14
13
|
import { storageRepository } from "@umituz/react-native-storage";
|
|
15
14
|
import { SettingsSection } from "./SettingsSection";
|
|
16
15
|
import { SettingItem } from "./SettingItem";
|
|
17
16
|
|
|
18
|
-
// Icon wrapper for SettingItem compatibility
|
|
19
|
-
const TrashIcon: React.FC<{ size?: number; color?: string }> = ({ size = 24, color }) => (
|
|
20
|
-
<Feather name="trash-2" size={size} color={color} />
|
|
21
|
-
);
|
|
22
|
-
|
|
23
17
|
// Default texts (English only - DEV feature)
|
|
24
18
|
const DEFAULT_TEXTS = {
|
|
25
19
|
sectionTitle: "Developer",
|
|
@@ -107,7 +101,7 @@ export const DevSettingsSection: React.FC<DevSettingsProps> = ({
|
|
|
107
101
|
<SettingsSection title={t.sectionTitle}>
|
|
108
102
|
{customDevComponents.map((component) => component)}
|
|
109
103
|
<SettingItem
|
|
110
|
-
icon=
|
|
104
|
+
icon="trash-outline"
|
|
111
105
|
title={t.clearTitle}
|
|
112
106
|
value={t.clearDescription}
|
|
113
107
|
onPress={handleClearData}
|
|
@@ -6,13 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
import React from "react";
|
|
8
8
|
import { View, Text, Pressable, StyleSheet, Switch } from "react-native";
|
|
9
|
-
import {
|
|
10
|
-
AtomicIcon,
|
|
11
|
-
useAppDesignTokens,
|
|
12
|
-
} from "@umituz/react-native-design-system";
|
|
9
|
+
import { AtomicIcon, useAppDesignTokens } from "@umituz/react-native-design-system";
|
|
13
10
|
|
|
14
11
|
export interface SettingItemProps {
|
|
15
|
-
/** Icon name
|
|
12
|
+
/** Icon name (Ionicons) */
|
|
16
13
|
icon: string;
|
|
17
14
|
/** Main title text */
|
|
18
15
|
title: string;
|
|
@@ -63,7 +60,6 @@ export const SettingItem: React.FC<SettingItemProps> = ({
|
|
|
63
60
|
}) => {
|
|
64
61
|
const tokens = useAppDesignTokens();
|
|
65
62
|
const colors = tokens.colors;
|
|
66
|
-
const spacing = tokens.spacing;
|
|
67
63
|
|
|
68
64
|
return (
|
|
69
65
|
<>
|
|
@@ -93,7 +89,7 @@ export const SettingItem: React.FC<SettingItemProps> = ({
|
|
|
93
89
|
>
|
|
94
90
|
<AtomicIcon
|
|
95
91
|
name={icon}
|
|
96
|
-
|
|
92
|
+
customSize={24}
|
|
97
93
|
customColor={iconColor || colors.primary}
|
|
98
94
|
/>
|
|
99
95
|
</View>
|
|
@@ -132,13 +128,13 @@ export const SettingItem: React.FC<SettingItemProps> = ({
|
|
|
132
128
|
false: `${colors.textSecondary}30`,
|
|
133
129
|
true: colors.primary,
|
|
134
130
|
}}
|
|
135
|
-
thumbColor={switchThumbColor ||
|
|
131
|
+
thumbColor={switchThumbColor || "#FFFFFF"}
|
|
136
132
|
ios_backgroundColor={`${colors.textSecondary}30`}
|
|
137
133
|
/>
|
|
138
134
|
) : (
|
|
139
135
|
<AtomicIcon
|
|
140
|
-
name="chevron-
|
|
141
|
-
|
|
136
|
+
name="chevron-forward-outline"
|
|
137
|
+
customSize={20}
|
|
142
138
|
customColor={colors.textSecondary}
|
|
143
139
|
/>
|
|
144
140
|
)}
|
|
@@ -7,6 +7,7 @@ import React, { Component, ReactNode } from 'react';
|
|
|
7
7
|
import { View, StyleSheet } from 'react-native';
|
|
8
8
|
import { useAppDesignTokens } from '@umituz/react-native-design-system';
|
|
9
9
|
import { AtomicText, AtomicIcon } from '@umituz/react-native-design-system';
|
|
10
|
+
import { useLocalization } from '@umituz/react-native-localization';
|
|
10
11
|
|
|
11
12
|
interface Props {
|
|
12
13
|
children: ReactNode;
|
|
@@ -63,15 +64,19 @@ interface ErrorBoundaryFallbackProps {
|
|
|
63
64
|
|
|
64
65
|
const ErrorBoundaryFallback: React.FC<ErrorBoundaryFallbackProps> = ({
|
|
65
66
|
error,
|
|
66
|
-
fallbackTitle
|
|
67
|
-
fallbackMessage
|
|
67
|
+
fallbackTitle,
|
|
68
|
+
fallbackMessage
|
|
68
69
|
}) => {
|
|
69
70
|
const tokens = useAppDesignTokens();
|
|
71
|
+
const { t } = useLocalization();
|
|
72
|
+
|
|
73
|
+
const title = __DEV__ && error?.message
|
|
74
|
+
? t("error_boundary.dev_title")
|
|
75
|
+
: (fallbackTitle || t("error_boundary.title"));
|
|
70
76
|
|
|
71
|
-
const title = __DEV__ && error?.message ? "error_boundary.dev_title" : fallbackTitle;
|
|
72
77
|
const message = __DEV__ && error?.message
|
|
73
|
-
?
|
|
74
|
-
: fallbackMessage;
|
|
78
|
+
? `${t("error_boundary.dev_message")}: ${error.message}`
|
|
79
|
+
: (fallbackMessage || t("error_boundary.message"));
|
|
75
80
|
|
|
76
81
|
return (
|
|
77
82
|
<View style={[styles.container, { backgroundColor: tokens.colors.backgroundPrimary }]}>
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import React from "react";
|
|
8
|
-
import { Feather } from "@expo/vector-icons";
|
|
9
8
|
import { SettingItem } from "./SettingItem";
|
|
10
9
|
|
|
11
10
|
export interface StorageClearSettingProps {
|
|
@@ -37,7 +36,7 @@ export const StorageClearSetting: React.FC<StorageClearSettingProps> = ({
|
|
|
37
36
|
|
|
38
37
|
return (
|
|
39
38
|
<SettingItem
|
|
40
|
-
icon=
|
|
39
|
+
icon="trash-outline"
|
|
41
40
|
title={defaultTitle}
|
|
42
41
|
value={defaultDescription}
|
|
43
42
|
onPress={onPress}
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
import React, { useCallback } from "react";
|
|
8
8
|
import { View, TouchableOpacity, StyleSheet } from "react-native";
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
import {
|
|
10
|
+
AtomicIcon,
|
|
11
|
+
AtomicText,
|
|
12
|
+
useAppDesignTokens,
|
|
13
|
+
} from "@umituz/react-native-design-system";
|
|
12
14
|
import { useNavigation } from "@react-navigation/native";
|
|
13
15
|
import { Avatar } from "@umituz/react-native-avatar";
|
|
14
16
|
|
|
@@ -105,11 +107,9 @@ export const UserProfileHeader: React.FC<UserProfileHeaderProps> = ({
|
|
|
105
107
|
)}
|
|
106
108
|
</View>
|
|
107
109
|
</View>
|
|
108
|
-
{
|
|
109
|
-
<
|
|
110
|
-
|
|
111
|
-
</View>
|
|
112
|
-
)}
|
|
110
|
+
<View style={[styles.chevronContainer, { marginLeft: spacing.sm }]}>
|
|
111
|
+
<AtomicIcon name="chevron-forward" size="md" color="onSurface" />
|
|
112
|
+
</View>
|
|
113
113
|
</>
|
|
114
114
|
);
|
|
115
115
|
|