@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.
- package/.github/ISSUE_TEMPLATE/bug_report.md +51 -0
- package/.github/ISSUE_TEMPLATE/documentation.md +52 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +63 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +84 -0
- package/AI_AGENT_GUIDELINES.md +367 -0
- package/ARCHITECTURE.md +246 -0
- package/CHANGELOG.md +67 -0
- package/CODE_OF_CONDUCT.md +75 -0
- package/CONTRIBUTING.md +107 -0
- package/DOCUMENTATION_MIGRATION.md +319 -0
- package/DOCUMENTATION_TEMPLATE.md +155 -0
- package/LICENSE +21 -0
- package/README.md +321 -498
- package/SECURITY.md +98 -0
- package/SETTINGS_SCREEN_GUIDE.md +185 -0
- package/TESTING.md +358 -0
- package/package.json +13 -2
- package/src/application/README.md +85 -271
- package/src/domains/about/README.md +85 -440
- package/src/domains/about/presentation/hooks/README.md +93 -348
- package/src/domains/appearance/README.md +95 -584
- package/src/domains/appearance/hooks/README.md +95 -303
- package/src/domains/appearance/infrastructure/services/README.md +83 -397
- package/src/domains/appearance/presentation/components/README.md +95 -489
- package/src/domains/cloud-sync/README.md +73 -439
- package/src/domains/cloud-sync/presentation/components/README.md +95 -493
- package/src/domains/dev/README.md +71 -457
- package/src/domains/disclaimer/README.md +77 -411
- package/src/domains/disclaimer/presentation/components/README.md +95 -392
- package/src/domains/faqs/README.md +86 -574
- package/src/domains/feedback/README.md +79 -553
- package/src/domains/feedback/presentation/hooks/README.md +93 -426
- package/src/domains/legal/README.md +88 -537
- package/src/domains/rating/README.md +73 -440
- package/src/domains/rating/presentation/components/README.md +95 -475
- package/src/domains/video-tutorials/README.md +77 -470
- package/src/domains/video-tutorials/presentation/components/README.md +95 -431
- package/src/infrastructure/README.md +78 -425
- package/src/infrastructure/repositories/README.md +88 -420
- package/src/infrastructure/services/README.md +74 -460
- package/src/presentation/components/README.md +97 -480
- package/src/presentation/components/SettingsErrorBoundary/README.md +48 -436
- package/src/presentation/components/SettingsFooter/README.md +48 -427
- package/src/presentation/components/SettingsItemCard/README.md +152 -391
- package/src/presentation/components/SettingsItemCard/STRATEGY.md +164 -0
- package/src/presentation/components/SettingsSection/README.md +47 -401
- package/src/presentation/hooks/README.md +95 -389
- package/src/presentation/hooks/mutations/README.md +99 -376
- package/src/presentation/hooks/queries/README.md +111 -353
- package/src/presentation/navigation/README.md +70 -502
- package/src/presentation/navigation/components/README.md +70 -295
- package/src/presentation/navigation/hooks/README.md +75 -367
- package/src/presentation/navigation/utils/README.md +100 -380
- package/src/presentation/screens/README.md +53 -504
- package/src/presentation/screens/components/SettingsContent/README.md +53 -382
- package/src/presentation/screens/components/SettingsHeader/README.md +48 -303
- package/src/presentation/screens/components/sections/CustomSettingsList/README.md +47 -359
- package/src/presentation/screens/components/sections/FeatureSettingsSection/README.md +81 -176
- package/src/presentation/screens/components/sections/IdentitySettingsSection/README.md +40 -297
- package/src/presentation/screens/components/sections/ProfileSectionLoader/README.md +47 -451
- package/src/presentation/screens/components/sections/SupportSettingsSection/README.md +45 -361
- package/src/presentation/screens/hooks/README.md +64 -354
- package/src/presentation/screens/types/README.md +79 -409
- package/src/presentation/screens/utils/README.md +65 -255
|
@@ -1,446 +1,67 @@
|
|
|
1
1
|
# Settings Footer
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
371
|
-
<FlatList
|
|
372
|
-
data={settingsItems}
|
|
373
|
-
renderItem={renderItem}
|
|
374
|
-
ListFooterComponent={ListFooterComponent}
|
|
375
|
-
/>
|
|
376
|
-
);
|
|
377
|
-
}
|
|
378
|
-
```
|
|
7
|
+
## File Paths
|
|
379
8
|
|
|
380
|
-
|
|
9
|
+
- **Component**: `/Users/umituz/Desktop/github/umituz/apps/artificial_intelligence/npm-packages/react-native-settings/src/presentation/components/SettingsFooter/SettingsFooter.tsx`
|
|
381
10
|
|
|
382
|
-
|
|
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
|
-
|
|
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
|
-
|
|
19
|
+
## Restrictions (Forbidden)
|
|
396
20
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
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
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
414
|
-
function SettingsScreen() {
|
|
415
|
-
const environment = Constants.expoConfig.extra?.environment;
|
|
416
|
-
const isProduction = environment === 'production';
|
|
36
|
+
## Rules (Mandatory)
|
|
417
37
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
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
|
-
|
|
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
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
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
|
-
##
|
|
54
|
+
## AI Agent Guidelines
|
|
439
55
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
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
|
-
##
|
|
62
|
+
## Component Reference
|
|
445
63
|
|
|
446
|
-
|
|
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)
|