@umituz/react-native-settings 4.20.58 → 4.20.59

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 (64) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +51 -0
  2. package/.github/ISSUE_TEMPLATE/documentation.md +52 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +63 -0
  4. package/.github/PULL_REQUEST_TEMPLATE.md +84 -0
  5. package/AI_AGENT_GUIDELINES.md +367 -0
  6. package/ARCHITECTURE.md +246 -0
  7. package/CHANGELOG.md +67 -0
  8. package/CODE_OF_CONDUCT.md +75 -0
  9. package/CONTRIBUTING.md +107 -0
  10. package/DOCUMENTATION_MIGRATION.md +319 -0
  11. package/DOCUMENTATION_TEMPLATE.md +155 -0
  12. package/LICENSE +21 -0
  13. package/README.md +321 -498
  14. package/SECURITY.md +98 -0
  15. package/SETTINGS_SCREEN_GUIDE.md +185 -0
  16. package/TESTING.md +358 -0
  17. package/package.json +13 -2
  18. package/src/application/README.md +85 -271
  19. package/src/domains/about/README.md +85 -440
  20. package/src/domains/about/presentation/hooks/README.md +93 -348
  21. package/src/domains/appearance/README.md +95 -584
  22. package/src/domains/appearance/hooks/README.md +95 -303
  23. package/src/domains/appearance/infrastructure/services/README.md +83 -397
  24. package/src/domains/appearance/presentation/components/README.md +95 -489
  25. package/src/domains/cloud-sync/README.md +73 -439
  26. package/src/domains/cloud-sync/presentation/components/README.md +95 -493
  27. package/src/domains/dev/README.md +71 -457
  28. package/src/domains/disclaimer/README.md +77 -411
  29. package/src/domains/disclaimer/presentation/components/README.md +95 -392
  30. package/src/domains/faqs/README.md +86 -574
  31. package/src/domains/feedback/README.md +79 -553
  32. package/src/domains/feedback/presentation/hooks/README.md +93 -426
  33. package/src/domains/legal/README.md +88 -537
  34. package/src/domains/rating/README.md +73 -440
  35. package/src/domains/rating/presentation/components/README.md +95 -475
  36. package/src/domains/video-tutorials/README.md +77 -470
  37. package/src/domains/video-tutorials/presentation/components/README.md +95 -431
  38. package/src/infrastructure/README.md +78 -425
  39. package/src/infrastructure/repositories/README.md +88 -420
  40. package/src/infrastructure/services/README.md +74 -460
  41. package/src/presentation/components/README.md +97 -480
  42. package/src/presentation/components/SettingsErrorBoundary/README.md +48 -436
  43. package/src/presentation/components/SettingsFooter/README.md +48 -427
  44. package/src/presentation/components/SettingsItemCard/README.md +152 -391
  45. package/src/presentation/components/SettingsItemCard/STRATEGY.md +164 -0
  46. package/src/presentation/components/SettingsSection/README.md +47 -401
  47. package/src/presentation/hooks/README.md +95 -389
  48. package/src/presentation/hooks/mutations/README.md +99 -376
  49. package/src/presentation/hooks/queries/README.md +111 -353
  50. package/src/presentation/navigation/README.md +70 -502
  51. package/src/presentation/navigation/components/README.md +70 -295
  52. package/src/presentation/navigation/hooks/README.md +75 -367
  53. package/src/presentation/navigation/utils/README.md +100 -380
  54. package/src/presentation/screens/README.md +53 -504
  55. package/src/presentation/screens/components/SettingsContent/README.md +53 -382
  56. package/src/presentation/screens/components/SettingsHeader/README.md +48 -303
  57. package/src/presentation/screens/components/sections/CustomSettingsList/README.md +47 -359
  58. package/src/presentation/screens/components/sections/FeatureSettingsSection/README.md +81 -176
  59. package/src/presentation/screens/components/sections/IdentitySettingsSection/README.md +40 -297
  60. package/src/presentation/screens/components/sections/ProfileSectionLoader/README.md +47 -451
  61. package/src/presentation/screens/components/sections/SupportSettingsSection/README.md +45 -361
  62. package/src/presentation/screens/hooks/README.md +64 -354
  63. package/src/presentation/screens/types/README.md +79 -409
  64. package/src/presentation/screens/utils/README.md +65 -255
@@ -1,446 +1,67 @@
1
1
  # Settings Footer
2
2
 
3
- Footer component for displaying app version, build information, and additional metadata at the bottom of the settings screen.
4
-
5
- ## Features
6
-
7
- - **Version Display**: Shows app version and build number
8
- - **Customizable**: Support for custom footer text
9
- - **Styled**: Uses design system tokens for consistent styling
10
- - **Optional**: Can be shown/hidden based on configuration
11
-
12
- ## Installation
13
-
14
- This component is part of `@umituz/react-native-settings`.
15
-
16
- ## Usage
17
-
18
- ### Basic Usage
19
-
20
- ```tsx
21
- import { SettingsFooter } from '@umituz/react-native-settings';
22
-
23
- function SettingsScreen() {
24
- return (
25
- <ScrollView>
26
- <SettingsContent />
27
- <SettingsFooter
28
- appVersion="1.0.0"
29
- buildNumber="100"
30
- />
31
- </ScrollView>
32
- );
33
- }
34
- ```
35
-
36
- ### With Custom Text
37
-
38
- ```tsx
39
- function SettingsScreen() {
40
- return (
41
- <View>
42
- <SettingsContent />
43
- <SettingsFooter
44
- appVersion="1.0.0"
45
- buildNumber="100"
46
- customText="© 2025 My Company. All rights reserved."
47
- />
48
- </View>
49
- );
50
- }
51
- ```
52
-
53
- ### With Development Build
54
-
55
- ```tsx
56
- function SettingsScreen() {
57
- const isDev = __DEV__;
58
-
59
- return (
60
- <View>
61
- <SettingsContent />
62
- <SettingsFooter
63
- appVersion="1.0.0"
64
- buildNumber="100"
65
- showEnvironment={isDev}
66
- environment={isDev ? 'Development' : 'Production'}
67
- />
68
- </View>
69
- );
70
- }
71
- ```
72
-
73
- ## Props
74
-
75
- ### SettingsFooterProps
76
-
77
- | Prop | Type | Default | Description |
78
- |------|------|---------|-------------|
79
- | `appVersion` | `string` | **Required** | App version number |
80
- | `buildNumber` | `string` | `undefined` | Build number |
81
- | `customText` | `string` | `undefined` | Custom footer text |
82
- | `showEnvironment` | `boolean` | `false` | Show environment label |
83
- | `environment` | `string` | `undefined` | Environment name (e.g., "Dev", "Staging") |
84
- | `showBuildInfo` | `boolean` | `true` | Show build number |
85
- | `style` | `ViewStyle` | `undefined` | Custom container style |
86
-
87
- ## Component Structure
88
-
89
- ```
90
- SettingsFooter
91
- ├── Version Number (e.g., "Version 1.0.0")
92
- ├── Build Number (e.g., "Build 100")
93
- ├── Environment Label (e.g., "Development")
94
- └── Custom Text (e.g., "© 2025 My Company")
95
- ```
96
-
97
- ## Examples
98
-
99
- ### Standard Footer
100
-
101
- ```tsx
102
- <SettingsFooter
103
- appVersion="1.0.0"
104
- buildNumber="100"
105
- />
106
- ```
107
-
108
- Displays:
109
- ```
110
- Version 1.0.0
111
- Build 100
112
- ```
113
-
114
- ### Minimal Footer
115
-
116
- ```tsx
117
- <SettingsFooter
118
- appVersion="1.0.0"
119
- showBuildInfo={false}
120
- />
121
- ```
122
-
123
- Displays:
124
- ```
125
- Version 1.0.0
126
- ```
127
-
128
- ### Footer with Copyright
129
-
130
- ```tsx
131
- <SettingsFooter
132
- appVersion="2.0.0"
133
- buildNumber="200"
134
- customText="© 2025 My Company. All rights reserved."
135
- />
136
- ```
137
-
138
- Displays:
139
- ```
140
- Version 2.0.0
141
- Build 200
142
- © 2025 My Company. All rights reserved.
143
- ```
144
-
145
- ### Development Build Footer
146
-
147
- ```tsx
148
- <SettingsFooter
149
- appVersion="1.0.0"
150
- buildNumber="100"
151
- showEnvironment={true}
152
- environment="Development"
153
- />
154
- ```
155
-
156
- Displays:
157
- ```
158
- Version 1.0.0
159
- Build 100
160
- Development
161
- ```
162
-
163
- ### Production Footer
164
-
165
- ```tsx
166
- <SettingsFooter
167
- appVersion="1.5.2"
168
- buildNumber="152"
169
- showEnvironment={true}
170
- environment="Production"
171
- customText="Made with ❤️ by My Team"
172
- />
173
- ```
174
-
175
- Displays:
176
- ```
177
- Version 1.5.2
178
- Build 152
179
- Production
180
- Made with ❤️ by My Team
181
- ```
3
+ ## Purpose
182
4
 
183
- ## Styling
184
-
185
- ### Default Styles
186
-
187
- ```typescript
188
- const styles = StyleSheet.create({
189
- container: {
190
- paddingVertical: tokens.spacing.xl, // 24px
191
- paddingHorizontal: tokens.spacing.lg, // 16px
192
- alignItems: 'center',
193
- backgroundColor: tokens.colors.surface,
194
- },
195
- versionText: {
196
- fontSize: tokens.typography.fontSize.sm, // 14px
197
- color: tokens.colors.textSecondary,
198
- textAlign: 'center',
199
- },
200
- buildText: {
201
- fontSize: tokens.typography.fontSize.xs, // 12px
202
- color: tokens.colors.textTertiary,
203
- textAlign: 'center',
204
- marginTop: tokens.spacing.xs, // 4px
205
- },
206
- customText: {
207
- fontSize: tokens.typography.fontSize.xs, // 12px
208
- color: tokens.colors.textTertiary,
209
- textAlign: 'center',
210
- marginTop: tokens.spacing.sm, // 8px
211
- },
212
- environmentBadge: {
213
- backgroundColor: tokens.colors.warning,
214
- paddingHorizontal: tokens.spacing.sm, // 8px
215
- paddingVertical: tokens.spacing.xs, // 4px
216
- borderRadius: tokens.borderRadius.sm, // 4px
217
- marginTop: tokens.spacing.sm, // 8px
218
- },
219
- environmentText: {
220
- fontSize: tokens.typography.fontSize.xs, // 12px
221
- color: tokens.colors.surface,
222
- fontWeight: '600',
223
- },
224
- });
225
- ```
226
-
227
- ### Custom Styled Footer
228
-
229
- ```tsx
230
- <SettingsFooter
231
- appVersion="1.0.0"
232
- buildNumber="100"
233
- style={{
234
- backgroundColor: '#f5f5f5',
235
- borderTopWidth: 1,
236
- borderTopColor: '#e0e0e0',
237
- paddingVertical: 20,
238
- }}
239
- />
240
- ```
241
-
242
- ## Environment Labels
243
-
244
- ### Development
245
-
246
- ```tsx
247
- <SettingsFooter
248
- appVersion="1.0.0"
249
- showEnvironment={true}
250
- environment="Development"
251
- />
252
- ```
253
-
254
- Shows a yellow badge with "Development".
255
-
256
- ### Staging
257
-
258
- ```tsx
259
- <SettingsFooter
260
- appVersion="1.0.0"
261
- showEnvironment={true}
262
- environment="Staging"
263
- />
264
- ```
265
-
266
- Shows an orange badge with "Staging".
267
-
268
- ### Production
269
-
270
- ```tsx
271
- <SettingsFooter
272
- appVersion="1.0.0"
273
- showEnvironment={true}
274
- environment="Production"
275
- />
276
- ```
277
-
278
- Shows a green badge with "Production".
279
-
280
- ## Getting Version Info
281
-
282
- ### From Constants
283
-
284
- ```tsx
285
- import Constants from 'expo-constants';
286
-
287
- function SettingsScreen() {
288
- return (
289
- <SettingsFooter
290
- appVersion={Constants.expoConfig.version}
291
- buildNumber={Constants.expoConfig.ios?.buildNumber || Constants.expoConfig.android?.versionCode}
292
- />
293
- );
294
- }
295
- ```
296
-
297
- ### From React Native
298
-
299
- ```tsx
300
- import { NativeModules, Platform } from 'react-native';
301
-
302
- function SettingsScreen() {
303
- const version = Platform.select({
304
- ios: NativeModules.RNVersion?.version,
305
- android: NativeModules.RNVersion?.versionName,
306
- });
307
-
308
- const buildNumber = Platform.select({
309
- ios: NativeModules.RNVersion?.build,
310
- android: NativeModules.RNVersion?.versionCode,
311
- });
312
-
313
- return (
314
- <SettingsFooter
315
- appVersion={version}
316
- buildNumber={buildNumber}
317
- />
318
- );
319
- }
320
- ```
321
-
322
- ### From App Config
323
-
324
- ```tsx
325
- import appConfig from '../app.json';
326
-
327
- function SettingsScreen() {
328
- const { expo } = appConfig;
329
-
330
- return (
331
- <SettingsFooter
332
- appVersion={expo.version}
333
- buildNumber={expo.ios?.buildNumber || expo.android?.versionCode}
334
- />
335
- );
336
- }
337
- ```
338
-
339
- ## Layout Integration
340
-
341
- ### In ScrollView
342
-
343
- ```tsx
344
- function SettingsScreen() {
345
- return (
346
- <ScrollView style={styles.scrollView}>
347
- <SettingsContent />
348
- <SettingsFooter appVersion="1.0.0" />
349
- </ScrollView>
350
- );
351
- }
352
-
353
- const styles = StyleSheet.create({
354
- scrollView: {
355
- flex: 1,
356
- },
357
- });
358
- ```
359
-
360
- ### In FlatList Footer
361
-
362
- ```tsx
363
- function SettingsScreen() {
364
- const renderItem = ({ item }) => <SettingsItemCard {...item} />;
365
-
366
- const ListFooterComponent = () => (
367
- <SettingsFooter appVersion="1.0.0" />
368
- );
5
+ Footer component for displaying app version, build information, and additional metadata at the bottom of the settings screen.
369
6
 
370
- return (
371
- <FlatList
372
- data={settingsItems}
373
- renderItem={renderItem}
374
- ListFooterComponent={ListFooterComponent}
375
- />
376
- );
377
- }
378
- ```
7
+ ## File Paths
379
8
 
380
- ### In SafeAreaView
9
+ - **Component**: `/Users/umituz/Desktop/github/umituz/apps/artificial_intelligence/npm-packages/react-native-settings/src/presentation/components/SettingsFooter/SettingsFooter.tsx`
381
10
 
382
- ```tsx
383
- function SettingsScreen() {
384
- return (
385
- <SafeAreaView style={styles.container} edges={['bottom']}>
386
- <SettingsContent />
387
- <SettingsFooter appVersion="1.0.0" />
388
- </SafeAreaView>
389
- );
390
- }
391
- ```
11
+ ## Strategy
392
12
 
393
- ## Conditional Display
13
+ 1. **Version Information**: Displays app version and build number for user support and debugging
14
+ 2. **Environment Indication**: Shows environment label (Development/Staging/Production) in non-production builds
15
+ 3. **Custom Text**: Supports custom footer text for copyright, credits, or additional information
16
+ 4. **Consistent Styling**: Uses design system tokens for uniform appearance across the app
17
+ 5. **Optional Display**: Can be shown/hidden based on configuration
394
18
 
395
- ### Based on Build Mode
19
+ ## Restrictions (Forbidden)
396
20
 
397
- ```tsx
398
- function SettingsScreen() {
399
- const showBuildInfo = __DEV__;
21
+ ### DO NOT
22
+ - ❌ DO NOT display build numbers in production (show version only)
23
+ - DO NOT use footer for critical information or actions
24
+ - ❌ DO NOT hardcode version strings (retrieve from app config)
400
25
 
401
- return (
402
- <SettingsFooter
403
- appVersion="1.0.0"
404
- buildNumber={showBuildInfo ? "100" : undefined}
405
- showBuildInfo={showBuildInfo}
406
- />
407
- );
408
- }
409
- ```
26
+ ### NEVER
27
+ - ❌ NEVER expose sensitive information in footer text
28
+ - ❌ NEVER use footer for error messages or warnings
29
+ - NEVER make footer interactive or tappable (unless intentional)
410
30
 
411
- ### Based on Environment
31
+ ### AVOID
32
+ - ❌ AVOID displaying environment badges in production builds
33
+ - ❌ AVOID overly long custom text that breaks layout
34
+ - ❌ AVOID changing footer content dynamically (keep it stable)
412
35
 
413
- ```tsx
414
- function SettingsScreen() {
415
- const environment = Constants.expoConfig.extra?.environment;
416
- const isProduction = environment === 'production';
36
+ ## Rules (Mandatory)
417
37
 
418
- return (
419
- <SettingsFooter
420
- appVersion="1.0.0"
421
- showEnvironment={!isProduction}
422
- environment={environment}
423
- />
424
- );
425
- }
426
- ```
38
+ ### ALWAYS
39
+ - ✅ ALWAYS display app version in production builds
40
+ - ✅ ALWAYS use design system tokens for styling
41
+ - ✅ ALWAYS retrieve version from app config or constants
42
+ - ✅ SHOULD show build info in development builds only
427
43
 
428
- ## Best Practices
44
+ ### MUST
45
+ - ✅ MUST keep footer text brief and readable
46
+ - ✅ MUST ensure footer is properly positioned at bottom of scrollable content
47
+ - ✅ MUST use proper text accessibility labels
429
48
 
430
- 1. **Version Info**: Always display app version for support
431
- 2. **Build Numbers**: Show build numbers in development builds
432
- 3. **Environment**: Display environment in non-production builds
433
- 4. **Custom Text**: Keep custom text brief and relevant
434
- 5. **Styling**: Use design system tokens for consistency
435
- 6. **Placement**: Place at bottom of scrollable content
436
- 7. **Accessibility**: Ensure text is readable and accessible
49
+ ### SHOULD
50
+ - SHOULD include copyright or company information in custom text
51
+ - SHOULD display environment badge in non-production builds
52
+ - SHOULD keep custom text under 100 characters
437
53
 
438
- ## Related
54
+ ## AI Agent Guidelines
439
55
 
440
- - **SettingsContent**: Main content component
441
- - **SettingsScreen**: Screen component
442
- - **SettingsSection**: Section component
56
+ 1. **File Reference**: When modifying footer, refer to `/Users/umituz/Desktop/github/umituz/apps/artificial_intelligence/npm-packages/react-native-settings/src/presentation/components/SettingsFooter/SettingsFooter.tsx`
57
+ 2. **Version Source**: Always retrieve version info from Constants.expoConfig or app.json
58
+ 3. **Environment Detection**: Use `__DEV__` or environment variables to show/hide development information
59
+ 4. **Layout Integration**: Place footer at the bottom of ScrollView or as ListFooterComponent in FlatList
60
+ 5. **Accessibility**: Ensure footer text is readable and has proper contrast
443
61
 
444
- ## License
62
+ ## Component Reference
445
63
 
446
- MIT
64
+ Related components:
65
+ - **SettingsContent**: Main content component that includes footer
66
+ - **SettingsScreen**: Screen component that manages footer display
67
+ - **SettingsSection**: Section component (footer appears after all sections)