@umituz/react-native-settings 4.20.57 → 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 (65) 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/__tests__/setup.ts +1 -4
  19. package/src/application/README.md +85 -271
  20. package/src/domains/about/README.md +85 -440
  21. package/src/domains/about/presentation/hooks/README.md +93 -348
  22. package/src/domains/appearance/README.md +95 -584
  23. package/src/domains/appearance/hooks/README.md +95 -303
  24. package/src/domains/appearance/infrastructure/services/README.md +83 -397
  25. package/src/domains/appearance/presentation/components/README.md +99 -0
  26. package/src/domains/cloud-sync/README.md +73 -439
  27. package/src/domains/cloud-sync/presentation/components/README.md +95 -493
  28. package/src/domains/dev/README.md +71 -457
  29. package/src/domains/disclaimer/README.md +77 -411
  30. package/src/domains/disclaimer/presentation/components/README.md +95 -392
  31. package/src/domains/faqs/README.md +86 -574
  32. package/src/domains/feedback/README.md +79 -553
  33. package/src/domains/feedback/presentation/hooks/README.md +93 -426
  34. package/src/domains/legal/README.md +88 -537
  35. package/src/domains/rating/README.md +73 -440
  36. package/src/domains/rating/presentation/components/README.md +95 -475
  37. package/src/domains/video-tutorials/README.md +77 -470
  38. package/src/domains/video-tutorials/presentation/components/README.md +95 -431
  39. package/src/infrastructure/README.md +78 -425
  40. package/src/infrastructure/repositories/README.md +88 -420
  41. package/src/infrastructure/services/README.md +74 -460
  42. package/src/presentation/components/README.md +97 -480
  43. package/src/presentation/components/SettingsErrorBoundary/README.md +48 -442
  44. package/src/presentation/components/SettingsFooter/README.md +48 -427
  45. package/src/presentation/components/SettingsItemCard/README.md +153 -392
  46. package/src/presentation/components/SettingsItemCard/STRATEGY.md +164 -0
  47. package/src/presentation/components/SettingsSection/README.md +47 -401
  48. package/src/presentation/hooks/README.md +95 -389
  49. package/src/presentation/hooks/mutations/README.md +99 -376
  50. package/src/presentation/hooks/queries/README.md +111 -353
  51. package/src/presentation/navigation/README.md +70 -502
  52. package/src/presentation/navigation/components/README.md +70 -295
  53. package/src/presentation/navigation/hooks/README.md +75 -367
  54. package/src/presentation/navigation/utils/README.md +100 -380
  55. package/src/presentation/screens/README.md +53 -504
  56. package/src/presentation/screens/components/SettingsContent/README.md +53 -382
  57. package/src/presentation/screens/components/SettingsHeader/README.md +48 -303
  58. package/src/presentation/screens/components/sections/CustomSettingsList/README.md +47 -359
  59. package/src/presentation/screens/components/sections/FeatureSettingsSection/README.md +81 -176
  60. package/src/presentation/screens/components/sections/IdentitySettingsSection/README.md +40 -297
  61. package/src/presentation/screens/components/sections/ProfileSectionLoader/README.md +47 -451
  62. package/src/presentation/screens/components/sections/SupportSettingsSection/README.md +45 -361
  63. package/src/presentation/screens/hooks/README.md +64 -354
  64. package/src/presentation/screens/types/README.md +79 -409
  65. 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)