@umituz/react-native-settings 4.19.6 → 4.20.1

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.
Files changed (40) hide show
  1. package/package.json +14 -12
  2. package/src/domains/about/presentation/components/AboutContent.tsx +12 -9
  3. package/src/domains/about/presentation/components/AboutHeader.tsx +12 -11
  4. package/src/domains/about/presentation/components/AboutSettingItem.tsx +18 -17
  5. package/src/domains/about/presentation/screens/AboutScreen.tsx +13 -12
  6. package/src/domains/appearance/presentation/components/AppearanceHeader.tsx +2 -2
  7. package/src/domains/appearance/presentation/components/AppearancePreview.tsx +11 -11
  8. package/src/domains/appearance/presentation/components/ColorPicker.tsx +3 -3
  9. package/src/domains/appearance/presentation/components/CustomColorsSection.tsx +4 -4
  10. package/src/domains/appearance/presentation/components/ThemeModeSection.tsx +3 -3
  11. package/src/domains/appearance/presentation/components/ThemeOption.tsx +20 -20
  12. package/src/domains/appearance/presentation/screens/AppearanceScreen.tsx +5 -5
  13. package/src/domains/disclaimer/presentation/components/DisclaimerCard.tsx +15 -15
  14. package/src/domains/disclaimer/presentation/components/DisclaimerModal.tsx +5 -5
  15. package/src/domains/disclaimer/presentation/screens/DisclaimerScreen.tsx +9 -9
  16. package/src/domains/faqs/presentation/components/FAQCategory.tsx +17 -8
  17. package/src/domains/faqs/presentation/components/FAQEmptyState.tsx +2 -2
  18. package/src/domains/faqs/presentation/components/FAQItem.tsx +37 -22
  19. package/src/domains/faqs/presentation/components/FAQSearchBar.tsx +13 -12
  20. package/src/domains/faqs/presentation/screens/FAQScreen.tsx +38 -28
  21. package/src/domains/feedback/presentation/components/FeedbackForm.tsx +21 -19
  22. package/src/domains/feedback/presentation/components/FeedbackModal.tsx +11 -9
  23. package/src/domains/legal/presentation/screens/LegalScreen.tsx +8 -8
  24. package/src/domains/legal/presentation/screens/PrivacyPolicyScreen.tsx +15 -12
  25. package/src/domains/legal/presentation/screens/TermsOfServiceScreen.tsx +15 -12
  26. package/src/domains/rating/presentation/components/StarRating.tsx +9 -4
  27. package/src/domains/video-tutorials/index.ts +1 -0
  28. package/src/domains/video-tutorials/infrastructure/services/video-tutorial.service.ts +2 -2
  29. package/src/domains/video-tutorials/presentation/components/VideoTutorialCard.tsx +35 -31
  30. package/src/domains/video-tutorials/presentation/screens/VideoTutorialsScreen.tsx +11 -9
  31. package/src/presentation/components/DevSettingsSection.tsx +2 -2
  32. package/src/presentation/components/SettingItem.tsx +2 -2
  33. package/src/presentation/components/SettingsErrorBoundary.tsx +2 -2
  34. package/src/presentation/components/SettingsFooter.tsx +2 -2
  35. package/src/presentation/components/SettingsItemCard.tsx +2 -2
  36. package/src/presentation/components/SettingsSection.tsx +2 -2
  37. package/src/presentation/navigation/SettingsStackNavigator.tsx +2 -2
  38. package/src/presentation/screens/SettingsScreen.tsx +2 -2
  39. package/src/presentation/screens/components/SettingsContent.tsx +2 -2
  40. package/src/presentation/screens/components/SettingsHeader.tsx +2 -2
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@umituz/react-native-settings",
3
- "version": "4.19.6",
3
+ "version": "4.20.1",
4
4
  "description": "Complete settings hub for React Native apps - consolidated package with settings, about, legal, appearance, feedback, FAQs, and rating",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
7
7
  "scripts": {
8
8
  "typecheck": "tsc --noEmit",
9
- "lint": "eslint src --ext .ts,.tsx --max-warnings 0",
10
- "lint:fix": "eslint src --ext .ts,.tsx --fix",
9
+ "lint": "eslint src",
10
+ "lint:fix": "eslint src --fix",
11
11
  "version:patch": "npm version patch -m 'chore: release v%s'",
12
12
  "version:minor": "npm version minor -m 'chore: release v%s'",
13
13
  "version:major": "npm version major -m 'chore: release v%s'"
@@ -58,28 +58,30 @@
58
58
  "@gorhom/bottom-sheet": "^5.2.8",
59
59
  "@react-native-community/datetimepicker": "^8.5.1",
60
60
  "@react-navigation/bottom-tabs": "^7.9.0",
61
- "@react-navigation/native": "^6.1.18",
62
- "@react-navigation/stack": "^6.4.1",
61
+ "@react-navigation/native": "^7.1.26",
62
+ "@react-navigation/stack": "^7.6.13",
63
63
  "@sentry/react-native": "^7.8.0",
64
64
  "@sentry/types": "^10.32.1",
65
65
  "@tanstack/react-query": "^5.0.0",
66
66
  "@types/jest": "^29.5.14",
67
67
  "@types/react": "~19.1.10",
68
- "@typescript-eslint/eslint-plugin": "^7.0.0",
69
- "@typescript-eslint/parser": "^7.0.0",
68
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
69
+ "@typescript-eslint/parser": "^7.18.0",
70
70
  "@umituz/react-native-auth": "latest",
71
71
  "@umituz/react-native-design-system": "latest",
72
- "@umituz/react-native-filesystem": "^2.1.7",
73
- "@umituz/react-native-firebase": "^1.13.28",
74
- "@umituz/react-native-haptics": "^1.0.3",
72
+ "@umituz/react-native-filesystem": "latest",
73
+ "@umituz/react-native-firebase": "latest",
74
+ "@umituz/react-native-haptics": "latest",
75
75
  "@umituz/react-native-localization": "latest",
76
76
  "@umituz/react-native-notifications": "latest",
77
77
  "@umituz/react-native-onboarding": "latest",
78
- "@umituz/react-native-sentry": "^1.4.2",
78
+ "@umituz/react-native-sentry": "latest",
79
79
  "@umituz/react-native-storage": "latest",
80
80
  "@umituz/react-native-tanstack": "latest",
81
- "@umituz/react-native-uuid": "^1.2.2",
81
+ "@umituz/react-native-uuid": "latest",
82
82
  "eslint": "^8.57.0",
83
+ "eslint-plugin-react": "^7.37.5",
84
+ "eslint-plugin-react-native": "^5.0.0",
83
85
  "expo-apple-authentication": "^8.0.8",
84
86
  "expo-application": "^7.0.8",
85
87
  "expo-clipboard": "^8.0.8",
@@ -8,7 +8,7 @@ import { AboutSettingItem } from './AboutSettingItem';
8
8
  import { AppInfo } from '../../domain/entities/AppInfo';
9
9
  import { AboutConfig } from '../../domain/entities/AppInfo';
10
10
 
11
- import { useResponsiveDesignTokens } from '@umituz/react-native-design-system';
11
+ import { useAppDesignTokens } from '@umituz/react-native-design-system';
12
12
 
13
13
  export interface AboutContentProps {
14
14
  /** App information to display */
@@ -18,7 +18,8 @@ export interface AboutContentProps {
18
18
  }
19
19
 
20
20
  const AboutSectionHeader: React.FC<{ title: string }> = ({ title }) => {
21
- const tokens = useResponsiveDesignTokens();
21
+ const tokens = useAppDesignTokens();
22
+ const styles = getStyles(tokens);
22
23
  const colors = tokens.colors;
23
24
 
24
25
  return (
@@ -30,6 +31,8 @@ export const AboutContent: React.FC<AboutContentProps> = ({
30
31
  appInfo,
31
32
  config,
32
33
  }) => {
34
+ const tokens = useAppDesignTokens();
35
+ const styles = getStyles(tokens);
33
36
  const hasContactInfo = appInfo.developer || appInfo.contactEmail || appInfo.websiteUrl;
34
37
  const hasMoreInfo = appInfo.moreAppsUrl;
35
38
 
@@ -86,19 +89,19 @@ export const AboutContent: React.FC<AboutContentProps> = ({
86
89
  );
87
90
  };
88
91
 
89
- const styles = StyleSheet.create({
92
+ const getStyles = (tokens: any) => StyleSheet.create({
90
93
  content: {
91
- paddingVertical: 8,
94
+ paddingVertical: 8 * tokens.spacingMultiplier,
92
95
  },
93
96
  section: {
94
- marginBottom: 24,
97
+ marginBottom: 24 * tokens.spacingMultiplier,
95
98
  },
96
99
  sectionHeader: {
97
- fontSize: 13,
100
+ fontSize: tokens.typography.labelSmall.responsiveFontSize,
98
101
  fontWeight: '600',
99
- marginBottom: 8,
100
- paddingHorizontal: 16,
102
+ marginBottom: 8 * tokens.spacingMultiplier,
103
+ paddingHorizontal: 16 * tokens.spacingMultiplier,
101
104
  textTransform: 'uppercase',
102
- letterSpacing: 0.5,
105
+ letterSpacing: 0.5 * tokens.spacingMultiplier,
103
106
  },
104
107
  });
@@ -26,7 +26,7 @@ export interface AboutHeaderProps {
26
26
  testID?: string;
27
27
  }
28
28
 
29
- import { useResponsiveDesignTokens } from '@umituz/react-native-design-system';
29
+ import { useAppDesignTokens } from '@umituz/react-native-design-system';
30
30
 
31
31
  export const AboutHeader: React.FC<AboutHeaderProps> = ({
32
32
  appInfo,
@@ -37,7 +37,8 @@ export const AboutHeader: React.FC<AboutHeaderProps> = ({
37
37
  versionPrefix = "Version",
38
38
  testID,
39
39
  }) => {
40
- const tokens = useResponsiveDesignTokens();
40
+ const tokens = useAppDesignTokens();
41
+ const styles = getStyles(tokens);
41
42
  const colors = tokens.colors;
42
43
 
43
44
  return (
@@ -55,25 +56,25 @@ export const AboutHeader: React.FC<AboutHeaderProps> = ({
55
56
  );
56
57
  };
57
58
 
58
- const styles = StyleSheet.create({
59
+ const getStyles = (tokens: any) => StyleSheet.create({
59
60
  header: {
60
61
  alignItems: 'center',
61
- paddingVertical: 24,
62
- paddingHorizontal: 16,
62
+ paddingVertical: 24 * tokens.spacingMultiplier,
63
+ paddingHorizontal: 16 * tokens.spacingMultiplier,
63
64
  borderBottomWidth: 1,
64
65
  },
65
66
  appName: {
66
- fontSize: 24,
67
+ fontSize: tokens.typography.headlineMedium.responsiveFontSize,
67
68
  fontWeight: 'bold',
68
- marginBottom: 4,
69
+ marginBottom: 4 * tokens.spacingMultiplier,
69
70
  },
70
71
  version: {
71
- fontSize: 16,
72
- marginBottom: 8,
72
+ fontSize: tokens.typography.bodyLarge.responsiveFontSize,
73
+ marginBottom: 8 * tokens.spacingMultiplier,
73
74
  },
74
75
  description: {
75
- fontSize: 14,
76
+ fontSize: tokens.typography.bodyMedium.responsiveFontSize,
76
77
  textAlign: 'center',
77
- lineHeight: 20,
78
+ lineHeight: 20 * tokens.spacingMultiplier,
78
79
  },
79
80
  });
@@ -45,7 +45,7 @@ export interface AboutSettingItemProps {
45
45
  chevronColor?: string;
46
46
  }
47
47
 
48
- import { useResponsiveDesignTokens } from '@umituz/react-native-design-system';
48
+ import { useAppDesignTokens } from '@umituz/react-native-design-system';
49
49
 
50
50
  export const AboutSettingItem: React.FC<AboutSettingItemProps> = ({
51
51
  icon,
@@ -63,7 +63,8 @@ export const AboutSettingItem: React.FC<AboutSettingItemProps> = ({
63
63
  testID,
64
64
  chevronColor,
65
65
  }) => {
66
- const tokens = useResponsiveDesignTokens();
66
+ const tokens = useAppDesignTokens();
67
+ const styles = getStyles(tokens);
67
68
  const colors = tokens.colors;
68
69
 
69
70
  // Memoize container type to prevent unnecessary re-renders
@@ -79,7 +80,7 @@ export const AboutSettingItem: React.FC<AboutSettingItemProps> = ({
79
80
  disabled && styles.disabled,
80
81
  containerStyle
81
82
  ];
82
- }, [disabled, containerStyle, colors.surface]);
83
+ }, [disabled, containerStyle, colors.surface, styles]);
83
84
 
84
85
  // Memoize icon container styles
85
86
  const iconContainerStyles = useMemo(() => {
@@ -87,7 +88,7 @@ export const AboutSettingItem: React.FC<AboutSettingItemProps> = ({
87
88
  styles.iconContainer,
88
89
  iconContainerStyle
89
90
  ];
90
- }, [iconContainerStyle]);
91
+ }, [iconContainerStyle, styles]);
91
92
 
92
93
  // Memoize chevron styles
93
94
  const chevronStyles = useMemo(() => {
@@ -95,7 +96,7 @@ export const AboutSettingItem: React.FC<AboutSettingItemProps> = ({
95
96
  styles.chevron,
96
97
  { color: chevronColor || colors.textSecondary }
97
98
  ];
98
- }, [chevronColor, colors.textSecondary]);
99
+ }, [chevronColor, colors.textSecondary, styles]);
99
100
 
100
101
  // Memoize press handler to prevent unnecessary re-renders
101
102
  const handlePress = useCallback(() => {
@@ -129,7 +130,7 @@ export const AboutSettingItem: React.FC<AboutSettingItemProps> = ({
129
130
  )}
130
131
  </View>
131
132
  );
132
- }, [title, description, titleStyle, descriptionStyle, colors.textPrimary, colors.textSecondary]);
133
+ }, [title, description, titleStyle, descriptionStyle, colors.textPrimary, colors.textSecondary, styles]);
133
134
 
134
135
  // Memoize value rendering
135
136
  const renderValue = useMemo(() => {
@@ -140,7 +141,7 @@ export const AboutSettingItem: React.FC<AboutSettingItemProps> = ({
140
141
  return (
141
142
  <Text style={[styles.value, { color: colors.textSecondary }, valueStyle]}>{value}</Text>
142
143
  );
143
- }, [value, valueStyle, colors.textSecondary]);
144
+ }, [value, valueStyle, colors.textSecondary, styles]);
144
145
 
145
146
  // Memoize chevron rendering
146
147
  const renderChevron = useMemo(() => {
@@ -168,18 +169,18 @@ export const AboutSettingItem: React.FC<AboutSettingItemProps> = ({
168
169
  );
169
170
  };
170
171
 
171
- const styles = StyleSheet.create({
172
+ const getStyles = (tokens: any) => StyleSheet.create({
172
173
  container: {
173
174
  flexDirection: 'row',
174
175
  alignItems: 'center',
175
- paddingVertical: 12,
176
- paddingHorizontal: 16,
176
+ paddingVertical: 12 * tokens.spacingMultiplier,
177
+ paddingHorizontal: 16 * tokens.spacingMultiplier,
177
178
  },
178
179
  disabled: {
179
180
  opacity: 0.5,
180
181
  },
181
182
  iconContainer: {
182
- marginRight: 12,
183
+ marginRight: 12 * tokens.spacingMultiplier,
183
184
  alignItems: 'center',
184
185
  justifyContent: 'center',
185
186
  },
@@ -187,22 +188,22 @@ const styles = StyleSheet.create({
187
188
  flex: 1,
188
189
  },
189
190
  title: {
190
- fontSize: 16,
191
+ fontSize: tokens.typography.bodyLarge.responsiveFontSize,
191
192
  fontWeight: '500',
192
193
  },
193
194
  description: {
194
- fontSize: 14,
195
- marginTop: 2,
195
+ fontSize: tokens.typography.bodySmall.responsiveFontSize,
196
+ marginTop: 2 * tokens.spacingMultiplier,
196
197
  },
197
198
  value: {
198
- fontSize: 16,
199
- marginRight: 8,
199
+ fontSize: tokens.typography.bodyLarge.responsiveFontSize,
200
+ marginRight: 8 * tokens.spacingMultiplier,
200
201
  flexShrink: 1,
201
202
  textAlign: 'right',
202
203
  maxWidth: '60%',
203
204
  },
204
205
  chevron: {
205
- fontSize: 20,
206
+ fontSize: 20 * tokens.spacingMultiplier,
206
207
  fontWeight: '300',
207
208
  },
208
209
  });
@@ -38,7 +38,7 @@ export interface AboutScreenProps {
38
38
  }
39
39
 
40
40
  import { useAboutInfo } from '../hooks/useAboutInfo';
41
- import { useResponsiveDesignTokens, AtomicText } from '@umituz/react-native-design-system';
41
+ import { useAppDesignTokens, AtomicText } from '@umituz/react-native-design-system';
42
42
 
43
43
  export const AboutScreen: React.FC<AboutScreenProps> = ({
44
44
  config,
@@ -51,7 +51,8 @@ export const AboutScreen: React.FC<AboutScreenProps> = ({
51
51
  footerComponent,
52
52
  testID,
53
53
  }) => {
54
- const tokens = useResponsiveDesignTokens();
54
+ const tokens = useAppDesignTokens();
55
+ const styles = getStyles(tokens);
55
56
  const colors = tokens.colors;
56
57
 
57
58
  const { appInfo, loading, error } = useAboutInfo({
@@ -91,7 +92,7 @@ export const AboutScreen: React.FC<AboutScreenProps> = ({
91
92
  {footerComponent}
92
93
  </View>
93
94
  );
94
- }, [footerComponent, colors.border]);
95
+ }, [footerComponent, colors.border, styles]);
95
96
 
96
97
  // Memoize content rendering
97
98
  const renderContent = useCallback(() => {
@@ -114,7 +115,7 @@ export const AboutScreen: React.FC<AboutScreenProps> = ({
114
115
  { backgroundColor: colors.backgroundPrimary },
115
116
  containerStyle
116
117
  ];
117
- }, [containerStyle, colors.backgroundPrimary]);
118
+ }, [containerStyle, colors.backgroundPrimary, styles]);
118
119
 
119
120
  const texts = config.texts || {};
120
121
 
@@ -164,7 +165,7 @@ export const AboutScreen: React.FC<AboutScreenProps> = ({
164
165
  <ScrollView
165
166
  style={containerStyles}
166
167
  testID={testID}
167
- contentContainerStyle={{ paddingBottom: 32 }}
168
+ contentContainerStyle={{ paddingBottom: 32 * tokens.spacingMultiplier }}
168
169
  >
169
170
  {renderHeader()}
170
171
  {renderContent()}
@@ -173,23 +174,23 @@ export const AboutScreen: React.FC<AboutScreenProps> = ({
173
174
  );
174
175
  };
175
176
 
176
- const styles = StyleSheet.create({
177
+ const getStyles = (tokens: any) => StyleSheet.create({
177
178
  container: {
178
179
  flex: 1,
179
180
  },
180
181
  footer: {
181
- paddingVertical: 16,
182
- paddingHorizontal: 16,
182
+ paddingVertical: 16 * tokens.spacingMultiplier,
183
+ paddingHorizontal: 16 * tokens.spacingMultiplier,
183
184
  borderTopWidth: 1,
184
185
  },
185
186
  loadingText: {
186
187
  textAlign: 'center',
187
- fontSize: 16,
188
- marginTop: 20,
188
+ fontSize: tokens.typography.bodyMedium.responsiveFontSize,
189
+ marginTop: 20 * tokens.spacingMultiplier,
189
190
  },
190
191
  errorText: {
191
192
  textAlign: 'center',
192
- fontSize: 16,
193
- marginTop: 20,
193
+ fontSize: tokens.typography.bodyMedium.responsiveFontSize,
194
+ marginTop: 20 * tokens.spacingMultiplier,
194
195
  },
195
196
  });
@@ -59,9 +59,9 @@ export const AppearanceHeader: React.FC<AppearanceHeaderProps> = ({
59
59
  const getStyles = (tokens: DesignTokens) =>
60
60
  StyleSheet.create({
61
61
  header: {
62
- marginBottom: tokens.spacing.lg,
62
+ marginBottom: tokens.spacing.lg * tokens.spacingMultiplier,
63
63
  },
64
64
  headerSubtitle: {
65
- marginTop: tokens.spacing.sm,
65
+ marginTop: tokens.spacing.sm * tokens.spacingMultiplier,
66
66
  },
67
67
  });
@@ -106,35 +106,35 @@ export const AppearancePreview: React.FC<AppearancePreviewProps> = ({
106
106
  const getStyles = (tokens: DesignTokens) =>
107
107
  StyleSheet.create({
108
108
  previewSection: {
109
- marginBottom: tokens.spacing.lg,
109
+ marginBottom: tokens.spacing.lg * tokens.spacingMultiplier,
110
110
  },
111
111
  sectionTitle: {
112
- marginBottom: tokens.spacing.xs,
112
+ marginBottom: tokens.spacing.xs * tokens.spacingMultiplier,
113
113
  },
114
114
  sectionDescription: {
115
- marginBottom: tokens.spacing.md,
115
+ marginBottom: tokens.spacing.md * tokens.spacingMultiplier,
116
116
  },
117
117
  previewContainer: {
118
118
  backgroundColor: tokens.colors.surface,
119
- borderRadius: 12,
120
- padding: tokens.spacing.md,
119
+ borderRadius: 12 * tokens.spacingMultiplier,
120
+ padding: tokens.spacing.md * tokens.spacingMultiplier,
121
121
  borderLeftWidth: 4,
122
122
  borderLeftColor: tokens.colors.primary,
123
123
  },
124
124
  previewColorRow: {
125
125
  flexDirection: "row",
126
126
  flexWrap: "wrap",
127
- gap: tokens.spacing.md,
128
- marginTop: tokens.spacing.sm,
127
+ gap: tokens.spacing.md * tokens.spacingMultiplier,
128
+ marginTop: tokens.spacing.sm * tokens.spacingMultiplier,
129
129
  },
130
130
  previewColorItem: {
131
131
  alignItems: "center",
132
132
  },
133
133
  previewColorCircle: {
134
- width: 32,
135
- height: 32,
136
- borderRadius: 16,
137
- marginBottom: tokens.spacing.xs,
134
+ width: 32 * tokens.spacingMultiplier,
135
+ height: 32 * tokens.spacingMultiplier,
136
+ borderRadius: 16 * tokens.spacingMultiplier,
137
+ marginBottom: tokens.spacing.xs * tokens.spacingMultiplier,
138
138
  borderWidth: 1,
139
139
  borderColor: tokens.colors.border,
140
140
  },
@@ -10,7 +10,7 @@ import { View, TouchableOpacity, StyleSheet } from "react-native";
10
10
  import {
11
11
  AtomicIcon,
12
12
  AtomicText,
13
- useResponsiveDesignTokens,
13
+ useAppDesignTokens,
14
14
  } from "@umituz/react-native-design-system";
15
15
 
16
16
  interface ColorPickerProps {
@@ -26,7 +26,7 @@ export const ColorPicker: React.FC<ColorPickerProps> = ({
26
26
  onValueChange,
27
27
  colors,
28
28
  }) => {
29
- const tokens = useResponsiveDesignTokens();
29
+ const tokens = useAppDesignTokens();
30
30
 
31
31
  // Memoize styles to prevent unnecessary re-creation
32
32
  const styles = useMemo(() => getStyles(tokens), [tokens]);
@@ -84,7 +84,7 @@ export const ColorPicker: React.FC<ColorPickerProps> = ({
84
84
  );
85
85
  };
86
86
 
87
- const getStyles = (tokens: ReturnType<typeof useResponsiveDesignTokens>) =>
87
+ const getStyles = (tokens: ReturnType<typeof useAppDesignTokens>) =>
88
88
  StyleSheet.create({
89
89
  container: {
90
90
  marginBottom: 16,
@@ -166,21 +166,21 @@ export const CustomColorsSection: React.FC<CustomColorsSectionProps> = ({
166
166
  const getStyles = (tokens: DesignTokens) =>
167
167
  StyleSheet.create({
168
168
  section: {
169
- marginBottom: tokens.spacing.xl,
169
+ marginBottom: tokens.spacing.xl * tokens.spacingMultiplier,
170
170
  },
171
171
  sectionHeader: {
172
172
  flexDirection: "row",
173
173
  justifyContent: "space-between",
174
174
  alignItems: "flex-start",
175
- marginBottom: tokens.spacing.md,
175
+ marginBottom: tokens.spacing.md * tokens.spacingMultiplier,
176
176
  },
177
177
  titleContainer: {
178
178
  flex: 1,
179
179
  },
180
180
  sectionTitle: {
181
- marginBottom: tokens.spacing.xs,
181
+ marginBottom: tokens.spacing.xs * tokens.spacingMultiplier,
182
182
  },
183
183
  sectionDescription: {
184
- marginBottom: tokens.spacing.md,
184
+ marginBottom: tokens.spacing.md * tokens.spacingMultiplier,
185
185
  },
186
186
  });
@@ -99,12 +99,12 @@ export const ThemeModeSection: React.FC<ThemeModeSectionProps> = ({
99
99
  const getStyles = (tokens: DesignTokens) =>
100
100
  StyleSheet.create({
101
101
  section: {
102
- marginBottom: tokens.spacing.xl,
102
+ marginBottom: tokens.spacing.xl * tokens.spacingMultiplier,
103
103
  },
104
104
  sectionTitle: {
105
- marginBottom: tokens.spacing.xs,
105
+ marginBottom: tokens.spacing.xs * tokens.spacingMultiplier,
106
106
  },
107
107
  sectionDescription: {
108
- marginBottom: tokens.spacing.md,
108
+ marginBottom: tokens.spacing.md * tokens.spacingMultiplier,
109
109
  },
110
110
  });
@@ -8,7 +8,7 @@
8
8
  import React from "react";
9
9
  import { View, TouchableOpacity, StyleSheet } from "react-native";
10
10
  import { AtomicText, AtomicIcon } from "@umituz/react-native-design-system";
11
- import { useResponsiveDesignTokens } from "@umituz/react-native-design-system";
11
+ import { useAppDesignTokens } from "@umituz/react-native-design-system";
12
12
  import type { ThemeMode } from "../../types";
13
13
 
14
14
  interface ThemeOptionProps {
@@ -30,7 +30,7 @@ export const ThemeOption: React.FC<ThemeOptionProps> = ({
30
30
  isSelected,
31
31
  onSelect,
32
32
  }) => {
33
- const tokens = useResponsiveDesignTokens();
33
+ const tokens = useAppDesignTokens();
34
34
  const styles = getStyles(tokens);
35
35
  const iconName = mode === "dark" ? "moon-outline" : mode === "light" ? "sunny-outline" : "desktop-outline";
36
36
 
@@ -41,7 +41,7 @@ export const ThemeOption: React.FC<ThemeOptionProps> = ({
41
41
  >
42
42
  <View style={styles.header}>
43
43
  <View style={styles.iconContainer}>
44
- <AtomicIcon name={iconName} customSize={24} customColor={tokens.colors.primary} />
44
+ <AtomicIcon name={iconName} customSize={24 * tokens.spacingMultiplier} customColor={tokens.colors.primary} />
45
45
  </View>
46
46
  <View style={styles.textContainer}>
47
47
  <AtomicText type="titleLarge" color="primary">
@@ -53,7 +53,7 @@ export const ThemeOption: React.FC<ThemeOptionProps> = ({
53
53
  </View>
54
54
  <AtomicIcon
55
55
  name={isSelected ? "checkmark-circle-outline" : "ellipse-outline"}
56
- customSize={24}
56
+ customSize={24 * tokens.spacingMultiplier}
57
57
  customColor={isSelected ? tokens.colors.primary : tokens.colors.secondary}
58
58
  />
59
59
  </View>
@@ -89,13 +89,13 @@ export const ThemeOption: React.FC<ThemeOptionProps> = ({
89
89
  );
90
90
  };
91
91
 
92
- const getStyles = (tokens: ReturnType<typeof useResponsiveDesignTokens>) =>
92
+ const getStyles = (tokens: ReturnType<typeof useAppDesignTokens>) =>
93
93
  StyleSheet.create({
94
94
  container: {
95
95
  backgroundColor: tokens.colors.surface,
96
- borderRadius: 12,
97
- padding: 16,
98
- marginBottom: 16,
96
+ borderRadius: 12 * tokens.spacingMultiplier,
97
+ padding: 16 * tokens.spacingMultiplier,
98
+ marginBottom: 16 * tokens.spacingMultiplier,
99
99
  borderWidth: 2,
100
100
  borderColor: tokens.colors.border,
101
101
  },
@@ -105,34 +105,34 @@ const getStyles = (tokens: ReturnType<typeof useResponsiveDesignTokens>) =>
105
105
  header: {
106
106
  flexDirection: "row",
107
107
  alignItems: "center",
108
- marginBottom: 12,
108
+ marginBottom: 12 * tokens.spacingMultiplier,
109
109
  },
110
110
  iconContainer: {
111
- width: 48,
112
- height: 48,
113
- borderRadius: 24,
111
+ width: 48 * tokens.spacingMultiplier,
112
+ height: 48 * tokens.spacingMultiplier,
113
+ borderRadius: 24 * tokens.spacingMultiplier,
114
114
  backgroundColor: `${tokens.colors.primary}15`,
115
115
  justifyContent: "center",
116
116
  alignItems: "center",
117
- marginRight: 12,
117
+ marginRight: 12 * tokens.spacingMultiplier,
118
118
  },
119
119
  textContainer: {
120
120
  flex: 1,
121
121
  },
122
122
  description: {
123
- marginBottom: 12,
124
- lineHeight: 20,
123
+ marginBottom: 12 * tokens.spacingMultiplier,
124
+ lineHeight: 20 * tokens.spacingMultiplier,
125
125
  },
126
126
  featuresContainer: {
127
127
  backgroundColor: `${tokens.colors.primary}08`,
128
- borderRadius: 8,
129
- padding: 12,
128
+ borderRadius: 8 * tokens.spacingMultiplier,
129
+ padding: 12 * tokens.spacingMultiplier,
130
130
  },
131
131
  featuresTitle: {
132
- marginBottom: 8,
132
+ marginBottom: 8 * tokens.spacingMultiplier,
133
133
  },
134
134
  feature: {
135
- marginBottom: 4,
136
- lineHeight: 18,
135
+ marginBottom: 4 * tokens.spacingMultiplier,
136
+ lineHeight: 18 * tokens.spacingMultiplier,
137
137
  },
138
138
  });
@@ -7,7 +7,7 @@
7
7
 
8
8
  import React, { useMemo, useCallback } from "react";
9
9
  import { ScrollView, StyleSheet, View } from "react-native";
10
- import { useResponsiveDesignTokens } from "@umituz/react-native-design-system";
10
+ import { useAppDesignTokens } from "@umituz/react-native-design-system";
11
11
  import { useAppearance, useAppearanceActions } from "../../hooks";
12
12
  import {
13
13
  AppearanceHeader,
@@ -63,7 +63,7 @@ export const AppearanceScreen: React.FC<AppearanceScreenProps> = ({
63
63
  containerStyle,
64
64
  contentContainerStyle,
65
65
  }) => {
66
- const tokens = useResponsiveDesignTokens();
66
+ const tokens = useAppDesignTokens();
67
67
  const { themeMode } = useAppearance();
68
68
  const {
69
69
  localCustomColors,
@@ -211,7 +211,7 @@ export const AppearanceScreen: React.FC<AppearanceScreenProps> = ({
211
211
  );
212
212
  };
213
213
 
214
- const getStyles = (tokens: ReturnType<typeof useResponsiveDesignTokens>) =>
214
+ const getStyles = (tokens: ReturnType<typeof useAppDesignTokens>) =>
215
215
  StyleSheet.create({
216
216
  container: {
217
217
  flex: 1,
@@ -221,7 +221,7 @@ const getStyles = (tokens: ReturnType<typeof useResponsiveDesignTokens>) =>
221
221
  flex: 1,
222
222
  },
223
223
  scrollContent: {
224
- padding: tokens.spacing.md,
225
- paddingBottom: tokens.spacing.xl,
224
+ padding: tokens.spacing.md * tokens.spacingMultiplier,
225
+ paddingBottom: tokens.spacing.xl * tokens.spacingMultiplier,
226
226
  },
227
227
  });