create-du-app 0.1.4 → 0.1.5

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 (77) hide show
  1. package/README.md +5 -2
  2. package/package.json +1 -1
  3. package/src/generate.js +15 -2
  4. package/src/index.js +7 -1
  5. package/templates/mobile/expo/.env.example +2 -2
  6. package/templates/mobile/expo/README.md +31 -3
  7. package/templates/mobile/expo/_package.json +13 -15
  8. package/templates/mobile/expo/app.json +10 -2
  9. package/templates/mobile/expo/index.js +2 -0
  10. package/templates/mobile/expo/src/app/app-provider.tsx +7 -3
  11. package/templates/mobile/expo/src/app/config/translation.ts +7 -3
  12. package/templates/mobile/expo/src/assets/i18n/en.json +19 -3
  13. package/templates/mobile/expo/src/assets/i18n/fr.json +19 -3
  14. package/templates/mobile/expo/src/core/components/forms/date-time-picker.modal.tsx +116 -0
  15. package/templates/mobile/expo/src/core/components/forms/hf-date-time.tsx +2 -10
  16. package/templates/mobile/expo/src/core/components/forms/hf-time-picker.tsx +2 -3
  17. package/templates/mobile/expo/src/core/components/screen/screen-container/screen-container.tsx +25 -29
  18. package/templates/mobile/expo/src/core/components/ui/app-image/app-image.tsx +16 -19
  19. package/templates/mobile/expo/src/core/components/ui/app-image/app-image.type.ts +6 -6
  20. package/templates/mobile/expo/src/core/components/ui/avatar-image/avatar-image.tsx +1 -1
  21. package/templates/mobile/expo/src/core/components/ui/image-slider/image-slider.tsx +3 -3
  22. package/templates/mobile/expo/src/core/components/ui/screen/screen-gradient.tsx +1 -1
  23. package/templates/mobile/expo/src/core/components/ui/skeleton/skeleton.tsx +1 -1
  24. package/templates/mobile/expo/src/core/services/api.service.ts +3 -3
  25. package/templates/mobile/expo/src/core/services/device-id.service.ts +16 -2
  26. package/templates/mobile/expo/src/core/utils/device-locale.util.ts +10 -8
  27. package/templates/mobile/expo/src/core/utils/image-picker.util.ts +37 -58
  28. package/templates/mobile/expo/src/core/utils/query-persister.util.ts +16 -21
  29. package/templates/mobile/expo/src/modules/home/home.screen.tsx +97 -20
  30. package/templates/mobile/rn/.bundle/config +2 -0
  31. package/templates/mobile/rn/.watchmanconfig +1 -0
  32. package/templates/mobile/rn/Gemfile +17 -0
  33. package/templates/mobile/rn/README.md +34 -2
  34. package/templates/mobile/rn/_package.json +2 -0
  35. package/templates/mobile/rn/android/app/build.gradle +126 -0
  36. package/templates/mobile/rn/android/app/debug.keystore +0 -0
  37. package/templates/mobile/rn/android/app/proguard-rules.pro +10 -0
  38. package/templates/mobile/rn/android/app/src/main/AndroidManifest.xml +27 -0
  39. package/templates/mobile/rn/android/app/src/main/java/com/dumobile/MainActivity.kt +22 -0
  40. package/templates/mobile/rn/android/app/src/main/java/com/dumobile/MainApplication.kt +27 -0
  41. package/templates/mobile/rn/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
  42. package/templates/mobile/rn/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  43. package/templates/mobile/rn/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  44. package/templates/mobile/rn/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  45. package/templates/mobile/rn/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  46. package/templates/mobile/rn/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  47. package/templates/mobile/rn/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  48. package/templates/mobile/rn/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  49. package/templates/mobile/rn/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  50. package/templates/mobile/rn/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  51. package/templates/mobile/rn/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  52. package/templates/mobile/rn/android/app/src/main/res/values/strings.xml +3 -0
  53. package/templates/mobile/rn/android/app/src/main/res/values/styles.xml +9 -0
  54. package/templates/mobile/rn/android/build.gradle +21 -0
  55. package/templates/mobile/rn/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  56. package/templates/mobile/rn/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  57. package/templates/mobile/rn/android/gradle.properties +44 -0
  58. package/templates/mobile/rn/android/gradlew +248 -0
  59. package/templates/mobile/rn/android/gradlew.bat +98 -0
  60. package/templates/mobile/rn/android/settings.gradle +21 -0
  61. package/templates/mobile/rn/app.json +1 -1
  62. package/templates/mobile/rn/index.js +2 -0
  63. package/templates/mobile/rn/ios/.xcode.env +11 -0
  64. package/templates/mobile/rn/ios/DuMobile/AppDelegate.swift +48 -0
  65. package/templates/mobile/rn/ios/DuMobile/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  66. package/templates/mobile/rn/ios/DuMobile/Images.xcassets/Contents.json +6 -0
  67. package/templates/mobile/rn/ios/DuMobile/Info.plist +59 -0
  68. package/templates/mobile/rn/ios/DuMobile/LaunchScreen.storyboard +47 -0
  69. package/templates/mobile/rn/ios/DuMobile/PrivacyInfo.xcprivacy +37 -0
  70. package/templates/mobile/rn/ios/DuMobile.xcodeproj/project.pbxproj +475 -0
  71. package/templates/mobile/rn/ios/DuMobile.xcodeproj/xcshareddata/xcschemes/DuMobile.xcscheme +88 -0
  72. package/templates/mobile/rn/ios/Podfile +34 -0
  73. package/templates/mobile/rn/src/app/app-provider.tsx +19 -14
  74. package/templates/mobile/rn/src/app/config/translation.ts +3 -0
  75. package/templates/mobile/rn/src/assets/i18n/en.json +13 -3
  76. package/templates/mobile/rn/src/assets/i18n/fr.json +13 -3
  77. package/templates/mobile/rn/src/modules/home/home.screen.tsx +53 -19
@@ -0,0 +1,475 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 54;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 0C80B921A6F3F58F76C31292 /* libPods-DuMobile.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-DuMobile.a */; };
11
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
12
+ 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
13
+ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
14
+ /* End PBXBuildFile section */
15
+
16
+ /* Begin PBXFileReference section */
17
+ 13B07F961A680F5B00A75B9A /* DuMobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DuMobile.app; sourceTree = BUILT_PRODUCTS_DIR; };
18
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = DuMobile/Images.xcassets; sourceTree = "<group>"; };
19
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = DuMobile/Info.plist; sourceTree = "<group>"; };
20
+ 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = DuMobile/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
21
+ 3B4392A12AC88292D35C810B /* Pods-DuMobile.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DuMobile.debug.xcconfig"; path = "Target Support Files/Pods-DuMobile/Pods-DuMobile.debug.xcconfig"; sourceTree = "<group>"; };
22
+ 5709B34CF0A7D63546082F79 /* Pods-DuMobile.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DuMobile.release.xcconfig"; path = "Target Support Files/Pods-DuMobile/Pods-DuMobile.release.xcconfig"; sourceTree = "<group>"; };
23
+ 5DCACB8F33CDC322A6C60F78 /* libPods-DuMobile.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DuMobile.a"; sourceTree = BUILT_PRODUCTS_DIR; };
24
+ 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = DuMobile/AppDelegate.swift; sourceTree = "<group>"; };
25
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = DuMobile/LaunchScreen.storyboard; sourceTree = "<group>"; };
26
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
27
+ /* End PBXFileReference section */
28
+
29
+ /* Begin PBXFrameworksBuildPhase section */
30
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
31
+ isa = PBXFrameworksBuildPhase;
32
+ buildActionMask = 2147483647;
33
+ files = (
34
+ 0C80B921A6F3F58F76C31292 /* libPods-DuMobile.a in Frameworks */,
35
+ );
36
+ runOnlyForDeploymentPostprocessing = 0;
37
+ };
38
+ /* End PBXFrameworksBuildPhase section */
39
+
40
+ /* Begin PBXGroup section */
41
+ 13B07FAE1A68108700A75B9A /* DuMobile */ = {
42
+ isa = PBXGroup;
43
+ children = (
44
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
45
+ 761780EC2CA45674006654EE /* AppDelegate.swift */,
46
+ 13B07FB61A68108700A75B9A /* Info.plist */,
47
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
48
+ 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
49
+ );
50
+ name = DuMobile;
51
+ sourceTree = "<group>";
52
+ };
53
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
54
+ isa = PBXGroup;
55
+ children = (
56
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
57
+ 5DCACB8F33CDC322A6C60F78 /* libPods-DuMobile.a */,
58
+ );
59
+ name = Frameworks;
60
+ sourceTree = "<group>";
61
+ };
62
+ 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
63
+ isa = PBXGroup;
64
+ children = (
65
+ );
66
+ name = Libraries;
67
+ sourceTree = "<group>";
68
+ };
69
+ 83CBB9F61A601CBA00E9B192 = {
70
+ isa = PBXGroup;
71
+ children = (
72
+ 13B07FAE1A68108700A75B9A /* DuMobile */,
73
+ 832341AE1AAA6A7D00B99B32 /* Libraries */,
74
+ 83CBBA001A601CBA00E9B192 /* Products */,
75
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */,
76
+ BBD78D7AC51CEA395F1C20DB /* Pods */,
77
+ );
78
+ indentWidth = 2;
79
+ sourceTree = "<group>";
80
+ tabWidth = 2;
81
+ usesTabs = 0;
82
+ };
83
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
84
+ isa = PBXGroup;
85
+ children = (
86
+ 13B07F961A680F5B00A75B9A /* DuMobile.app */,
87
+ );
88
+ name = Products;
89
+ sourceTree = "<group>";
90
+ };
91
+ BBD78D7AC51CEA395F1C20DB /* Pods */ = {
92
+ isa = PBXGroup;
93
+ children = (
94
+ 3B4392A12AC88292D35C810B /* Pods-DuMobile.debug.xcconfig */,
95
+ 5709B34CF0A7D63546082F79 /* Pods-DuMobile.release.xcconfig */,
96
+ );
97
+ path = Pods;
98
+ sourceTree = "<group>";
99
+ };
100
+ /* End PBXGroup section */
101
+
102
+ /* Begin PBXNativeTarget section */
103
+ 13B07F861A680F5B00A75B9A /* DuMobile */ = {
104
+ isa = PBXNativeTarget;
105
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "DuMobile" */;
106
+ buildPhases = (
107
+ C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
108
+ 13B07F871A680F5B00A75B9A /* Sources */,
109
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
110
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
111
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
112
+ 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
113
+ E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
114
+ );
115
+ buildRules = (
116
+ );
117
+ dependencies = (
118
+ );
119
+ name = DuMobile;
120
+ productName = DuMobile;
121
+ productReference = 13B07F961A680F5B00A75B9A /* DuMobile.app */;
122
+ productType = "com.apple.product-type.application";
123
+ };
124
+ /* End PBXNativeTarget section */
125
+
126
+ /* Begin PBXProject section */
127
+ 83CBB9F71A601CBA00E9B192 /* Project object */ = {
128
+ isa = PBXProject;
129
+ attributes = {
130
+ LastUpgradeCheck = 1210;
131
+ TargetAttributes = {
132
+ 13B07F861A680F5B00A75B9A = {
133
+ LastSwiftMigration = 1120;
134
+ };
135
+ };
136
+ };
137
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "DuMobile" */;
138
+ compatibilityVersion = "Xcode 12.0";
139
+ developmentRegion = en;
140
+ hasScannedForEncodings = 0;
141
+ knownRegions = (
142
+ en,
143
+ Base,
144
+ );
145
+ mainGroup = 83CBB9F61A601CBA00E9B192;
146
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
147
+ projectDirPath = "";
148
+ projectRoot = "";
149
+ targets = (
150
+ 13B07F861A680F5B00A75B9A /* DuMobile */,
151
+ );
152
+ };
153
+ /* End PBXProject section */
154
+
155
+ /* Begin PBXResourcesBuildPhase section */
156
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
157
+ isa = PBXResourcesBuildPhase;
158
+ buildActionMask = 2147483647;
159
+ files = (
160
+ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
161
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
162
+ );
163
+ runOnlyForDeploymentPostprocessing = 0;
164
+ };
165
+ /* End PBXResourcesBuildPhase section */
166
+
167
+ /* Begin PBXShellScriptBuildPhase section */
168
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
169
+ isa = PBXShellScriptBuildPhase;
170
+ buildActionMask = 2147483647;
171
+ files = (
172
+ );
173
+ inputPaths = (
174
+ "$(SRCROOT)/.xcode.env.local",
175
+ "$(SRCROOT)/.xcode.env",
176
+ );
177
+ name = "Bundle React Native code and images";
178
+ outputPaths = (
179
+ );
180
+ runOnlyForDeploymentPostprocessing = 0;
181
+ shellPath = /bin/sh;
182
+ shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"\\\"$WITH_ENVIRONMENT\\\" \\\"$REACT_NATIVE_XCODE\\\"\"\n";
183
+ };
184
+ 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
185
+ isa = PBXShellScriptBuildPhase;
186
+ buildActionMask = 2147483647;
187
+ files = (
188
+ );
189
+ inputFileListPaths = (
190
+ "${PODS_ROOT}/Target Support Files/Pods-DuMobile/Pods-DuMobile-frameworks-${CONFIGURATION}-input-files.xcfilelist",
191
+ );
192
+ name = "[CP] Embed Pods Frameworks";
193
+ outputFileListPaths = (
194
+ "${PODS_ROOT}/Target Support Files/Pods-DuMobile/Pods-DuMobile-frameworks-${CONFIGURATION}-output-files.xcfilelist",
195
+ );
196
+ runOnlyForDeploymentPostprocessing = 0;
197
+ shellPath = /bin/sh;
198
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DuMobile/Pods-DuMobile-frameworks.sh\"\n";
199
+ showEnvVarsInLog = 0;
200
+ };
201
+ C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
202
+ isa = PBXShellScriptBuildPhase;
203
+ buildActionMask = 2147483647;
204
+ files = (
205
+ );
206
+ inputFileListPaths = (
207
+ );
208
+ inputPaths = (
209
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
210
+ "${PODS_ROOT}/Manifest.lock",
211
+ );
212
+ name = "[CP] Check Pods Manifest.lock";
213
+ outputFileListPaths = (
214
+ );
215
+ outputPaths = (
216
+ "$(DERIVED_FILE_DIR)/Pods-DuMobile-checkManifestLockResult.txt",
217
+ );
218
+ runOnlyForDeploymentPostprocessing = 0;
219
+ shellPath = /bin/sh;
220
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
221
+ showEnvVarsInLog = 0;
222
+ };
223
+ E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
224
+ isa = PBXShellScriptBuildPhase;
225
+ buildActionMask = 2147483647;
226
+ files = (
227
+ );
228
+ inputFileListPaths = (
229
+ "${PODS_ROOT}/Target Support Files/Pods-DuMobile/Pods-DuMobile-resources-${CONFIGURATION}-input-files.xcfilelist",
230
+ );
231
+ name = "[CP] Copy Pods Resources";
232
+ outputFileListPaths = (
233
+ "${PODS_ROOT}/Target Support Files/Pods-DuMobile/Pods-DuMobile-resources-${CONFIGURATION}-output-files.xcfilelist",
234
+ );
235
+ runOnlyForDeploymentPostprocessing = 0;
236
+ shellPath = /bin/sh;
237
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DuMobile/Pods-DuMobile-resources.sh\"\n";
238
+ showEnvVarsInLog = 0;
239
+ };
240
+ /* End PBXShellScriptBuildPhase section */
241
+
242
+ /* Begin PBXSourcesBuildPhase section */
243
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
244
+ isa = PBXSourcesBuildPhase;
245
+ buildActionMask = 2147483647;
246
+ files = (
247
+ 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */,
248
+ );
249
+ runOnlyForDeploymentPostprocessing = 0;
250
+ };
251
+ /* End PBXSourcesBuildPhase section */
252
+
253
+ /* Begin XCBuildConfiguration section */
254
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
255
+ isa = XCBuildConfiguration;
256
+ baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-DuMobile.debug.xcconfig */;
257
+ buildSettings = {
258
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
259
+ CLANG_ENABLE_MODULES = YES;
260
+ CURRENT_PROJECT_VERSION = 1;
261
+ ENABLE_BITCODE = NO;
262
+ INFOPLIST_FILE = DuMobile/Info.plist;
263
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
264
+ LD_RUNPATH_SEARCH_PATHS = (
265
+ "$(inherited)",
266
+ "@executable_path/Frameworks",
267
+ );
268
+ MARKETING_VERSION = 1.0;
269
+ OTHER_LDFLAGS = (
270
+ "$(inherited)",
271
+ "-ObjC",
272
+ "-lc++",
273
+ );
274
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
275
+ PRODUCT_NAME = DuMobile;
276
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
277
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
278
+ SWIFT_VERSION = 5.0;
279
+ TARGETED_DEVICE_FAMILY = "1,2";
280
+ VERSIONING_SYSTEM = "apple-generic";
281
+ };
282
+ name = Debug;
283
+ };
284
+ 13B07F951A680F5B00A75B9A /* Release */ = {
285
+ isa = XCBuildConfiguration;
286
+ baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-DuMobile.release.xcconfig */;
287
+ buildSettings = {
288
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
289
+ CLANG_ENABLE_MODULES = YES;
290
+ CURRENT_PROJECT_VERSION = 1;
291
+ INFOPLIST_FILE = DuMobile/Info.plist;
292
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
293
+ LD_RUNPATH_SEARCH_PATHS = (
294
+ "$(inherited)",
295
+ "@executable_path/Frameworks",
296
+ );
297
+ MARKETING_VERSION = 1.0;
298
+ OTHER_LDFLAGS = (
299
+ "$(inherited)",
300
+ "-ObjC",
301
+ "-lc++",
302
+ );
303
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
304
+ PRODUCT_NAME = DuMobile;
305
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
306
+ SWIFT_VERSION = 5.0;
307
+ TARGETED_DEVICE_FAMILY = "1,2";
308
+ VERSIONING_SYSTEM = "apple-generic";
309
+ };
310
+ name = Release;
311
+ };
312
+ 83CBBA201A601CBA00E9B192 /* Debug */ = {
313
+ isa = XCBuildConfiguration;
314
+ buildSettings = {
315
+ ALWAYS_SEARCH_USER_PATHS = NO;
316
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
317
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
318
+ CLANG_CXX_LIBRARY = "libc++";
319
+ CLANG_ENABLE_MODULES = YES;
320
+ CLANG_ENABLE_OBJC_ARC = YES;
321
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
322
+ CLANG_WARN_BOOL_CONVERSION = YES;
323
+ CLANG_WARN_COMMA = YES;
324
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
325
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
326
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
327
+ CLANG_WARN_EMPTY_BODY = YES;
328
+ CLANG_WARN_ENUM_CONVERSION = YES;
329
+ CLANG_WARN_INFINITE_RECURSION = YES;
330
+ CLANG_WARN_INT_CONVERSION = YES;
331
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
332
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
333
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
334
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
335
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
336
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
337
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
338
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
339
+ CLANG_WARN_UNREACHABLE_CODE = YES;
340
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
341
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
342
+ COPY_PHASE_STRIP = NO;
343
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
344
+ ENABLE_TESTABILITY = YES;
345
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
346
+ GCC_C_LANGUAGE_STANDARD = gnu99;
347
+ GCC_DYNAMIC_NO_PIC = NO;
348
+ GCC_NO_COMMON_BLOCKS = YES;
349
+ GCC_OPTIMIZATION_LEVEL = 0;
350
+ GCC_PREPROCESSOR_DEFINITIONS = (
351
+ "DEBUG=1",
352
+ "$(inherited)",
353
+ );
354
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
355
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
356
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
357
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
358
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
359
+ GCC_WARN_UNUSED_FUNCTION = YES;
360
+ GCC_WARN_UNUSED_VARIABLE = YES;
361
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
362
+ LD_RUNPATH_SEARCH_PATHS = (
363
+ /usr/lib/swift,
364
+ "$(inherited)",
365
+ );
366
+ LIBRARY_SEARCH_PATHS = (
367
+ "\"$(SDKROOT)/usr/lib/swift\"",
368
+ "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
369
+ "\"$(inherited)\"",
370
+ );
371
+ MTL_ENABLE_DEBUG_INFO = YES;
372
+ ONLY_ACTIVE_ARCH = YES;
373
+ OTHER_CPLUSPLUSFLAGS = (
374
+ "$(OTHER_CFLAGS)",
375
+ "-DFOLLY_NO_CONFIG",
376
+ "-DFOLLY_MOBILE=1",
377
+ "-DFOLLY_USE_LIBCPP=1",
378
+ "-DFOLLY_CFG_NO_COROUTINES=1",
379
+ "-DFOLLY_HAVE_CLOCK_GETTIME=1",
380
+ );
381
+ SDKROOT = iphoneos;
382
+ };
383
+ name = Debug;
384
+ };
385
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
386
+ isa = XCBuildConfiguration;
387
+ buildSettings = {
388
+ ALWAYS_SEARCH_USER_PATHS = NO;
389
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
390
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
391
+ CLANG_CXX_LIBRARY = "libc++";
392
+ CLANG_ENABLE_MODULES = YES;
393
+ CLANG_ENABLE_OBJC_ARC = YES;
394
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
395
+ CLANG_WARN_BOOL_CONVERSION = YES;
396
+ CLANG_WARN_COMMA = YES;
397
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
398
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
399
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
400
+ CLANG_WARN_EMPTY_BODY = YES;
401
+ CLANG_WARN_ENUM_CONVERSION = YES;
402
+ CLANG_WARN_INFINITE_RECURSION = YES;
403
+ CLANG_WARN_INT_CONVERSION = YES;
404
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
405
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
406
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
407
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
408
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
409
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
410
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
411
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
412
+ CLANG_WARN_UNREACHABLE_CODE = YES;
413
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
414
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
415
+ COPY_PHASE_STRIP = YES;
416
+ ENABLE_NS_ASSERTIONS = NO;
417
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
418
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
419
+ GCC_C_LANGUAGE_STANDARD = gnu99;
420
+ GCC_NO_COMMON_BLOCKS = YES;
421
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
422
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
423
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
424
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
425
+ GCC_WARN_UNUSED_FUNCTION = YES;
426
+ GCC_WARN_UNUSED_VARIABLE = YES;
427
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
428
+ LD_RUNPATH_SEARCH_PATHS = (
429
+ /usr/lib/swift,
430
+ "$(inherited)",
431
+ );
432
+ LIBRARY_SEARCH_PATHS = (
433
+ "\"$(SDKROOT)/usr/lib/swift\"",
434
+ "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
435
+ "\"$(inherited)\"",
436
+ );
437
+ MTL_ENABLE_DEBUG_INFO = NO;
438
+ OTHER_CPLUSPLUSFLAGS = (
439
+ "$(OTHER_CFLAGS)",
440
+ "-DFOLLY_NO_CONFIG",
441
+ "-DFOLLY_MOBILE=1",
442
+ "-DFOLLY_USE_LIBCPP=1",
443
+ "-DFOLLY_CFG_NO_COROUTINES=1",
444
+ "-DFOLLY_HAVE_CLOCK_GETTIME=1",
445
+ );
446
+ SDKROOT = iphoneos;
447
+ VALIDATE_PRODUCT = YES;
448
+ };
449
+ name = Release;
450
+ };
451
+ /* End XCBuildConfiguration section */
452
+
453
+ /* Begin XCConfigurationList section */
454
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "DuMobile" */ = {
455
+ isa = XCConfigurationList;
456
+ buildConfigurations = (
457
+ 13B07F941A680F5B00A75B9A /* Debug */,
458
+ 13B07F951A680F5B00A75B9A /* Release */,
459
+ );
460
+ defaultConfigurationIsVisible = 0;
461
+ defaultConfigurationName = Release;
462
+ };
463
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "DuMobile" */ = {
464
+ isa = XCConfigurationList;
465
+ buildConfigurations = (
466
+ 83CBBA201A601CBA00E9B192 /* Debug */,
467
+ 83CBBA211A601CBA00E9B192 /* Release */,
468
+ );
469
+ defaultConfigurationIsVisible = 0;
470
+ defaultConfigurationName = Release;
471
+ };
472
+ /* End XCConfigurationList section */
473
+ };
474
+ rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
475
+ }
@@ -0,0 +1,88 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Scheme
3
+ LastUpgradeVersion = "1210"
4
+ version = "1.3">
5
+ <BuildAction
6
+ parallelizeBuildables = "YES"
7
+ buildImplicitDependencies = "YES">
8
+ <BuildActionEntries>
9
+ <BuildActionEntry
10
+ buildForTesting = "YES"
11
+ buildForRunning = "YES"
12
+ buildForProfiling = "YES"
13
+ buildForArchiving = "YES"
14
+ buildForAnalyzing = "YES">
15
+ <BuildableReference
16
+ BuildableIdentifier = "primary"
17
+ BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
18
+ BuildableName = "DuMobile.app"
19
+ BlueprintName = "DuMobile"
20
+ ReferencedContainer = "container:DuMobile.xcodeproj">
21
+ </BuildableReference>
22
+ </BuildActionEntry>
23
+ </BuildActionEntries>
24
+ </BuildAction>
25
+ <TestAction
26
+ buildConfiguration = "Debug"
27
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29
+ shouldUseLaunchSchemeArgsEnv = "YES">
30
+ <Testables>
31
+ <TestableReference
32
+ skipped = "NO">
33
+ <BuildableReference
34
+ BuildableIdentifier = "primary"
35
+ BlueprintIdentifier = "00E356ED1AD99517003FC87E"
36
+ BuildableName = "DuMobileTests.xctest"
37
+ BlueprintName = "DuMobileTests"
38
+ ReferencedContainer = "container:DuMobile.xcodeproj">
39
+ </BuildableReference>
40
+ </TestableReference>
41
+ </Testables>
42
+ </TestAction>
43
+ <LaunchAction
44
+ buildConfiguration = "Debug"
45
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
46
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
47
+ launchStyle = "0"
48
+ useCustomWorkingDirectory = "NO"
49
+ ignoresPersistentStateOnLaunch = "NO"
50
+ debugDocumentVersioning = "YES"
51
+ debugServiceExtension = "internal"
52
+ allowLocationSimulation = "YES">
53
+ <BuildableProductRunnable
54
+ runnableDebuggingMode = "0">
55
+ <BuildableReference
56
+ BuildableIdentifier = "primary"
57
+ BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
58
+ BuildableName = "DuMobile.app"
59
+ BlueprintName = "DuMobile"
60
+ ReferencedContainer = "container:DuMobile.xcodeproj">
61
+ </BuildableReference>
62
+ </BuildableProductRunnable>
63
+ </LaunchAction>
64
+ <ProfileAction
65
+ buildConfiguration = "Release"
66
+ shouldUseLaunchSchemeArgsEnv = "YES"
67
+ savedToolIdentifier = ""
68
+ useCustomWorkingDirectory = "NO"
69
+ debugDocumentVersioning = "YES">
70
+ <BuildableProductRunnable
71
+ runnableDebuggingMode = "0">
72
+ <BuildableReference
73
+ BuildableIdentifier = "primary"
74
+ BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
75
+ BuildableName = "DuMobile.app"
76
+ BlueprintName = "DuMobile"
77
+ ReferencedContainer = "container:DuMobile.xcodeproj">
78
+ </BuildableReference>
79
+ </BuildableProductRunnable>
80
+ </ProfileAction>
81
+ <AnalyzeAction
82
+ buildConfiguration = "Debug">
83
+ </AnalyzeAction>
84
+ <ArchiveAction
85
+ buildConfiguration = "Release"
86
+ revealArchiveInOrganizer = "YES">
87
+ </ArchiveAction>
88
+ </Scheme>
@@ -0,0 +1,34 @@
1
+ # Resolve react_native_pods.rb with node to allow for hoisting
2
+ require Pod::Executable.execute_command('node', ['-p',
3
+ 'require.resolve(
4
+ "react-native/scripts/react_native_pods.rb",
5
+ {paths: [process.argv[1]]},
6
+ )', __dir__]).strip
7
+
8
+ platform :ios, min_ios_version_supported
9
+ prepare_react_native_project!
10
+
11
+ linkage = ENV['USE_FRAMEWORKS']
12
+ if linkage != nil
13
+ Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
14
+ use_frameworks! :linkage => linkage.to_sym
15
+ end
16
+
17
+ target 'DuMobile' do
18
+ config = use_native_modules!
19
+
20
+ use_react_native!(
21
+ :path => config[:reactNativePath],
22
+ # An absolute path to your application root.
23
+ :app_path => "#{Pod::Config.instance.installation_root}/.."
24
+ )
25
+
26
+ post_install do |installer|
27
+ react_native_post_install(
28
+ installer,
29
+ config[:reactNativePath],
30
+ :mac_catalyst_enabled => false,
31
+ # :ccache_enabled => true
32
+ )
33
+ end
34
+ end
@@ -1,11 +1,13 @@
1
1
  import React from 'react';
2
2
  import { GestureHandlerRootView } from 'react-native-gesture-handler';
3
+ import { KeyboardProvider } from 'react-native-keyboard-controller';
3
4
  import { SafeAreaProvider } from 'react-native-safe-area-context';
4
5
  import { I18nextProvider } from 'react-i18next';
5
6
  import { onlineManager } from '@tanstack/react-query';
6
7
  import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';
7
8
  import NetInfo from '@react-native-community/netinfo';
8
- import { queryClient, mmkvQueryPersister } from '@src/core/utils';
9
+ import Toast from 'react-native-toast-message';
10
+ import { queryClient, mmkvQueryPersister, toastConfig } from '@src/core/utils';
9
11
  import { ThemeProvider } from '@src/core/theme';
10
12
  import { i18n } from './config/translation';
11
13
  import { App } from './App';
@@ -15,22 +17,25 @@ onlineManager.setEventListener(setOnline =>
15
17
  NetInfo.addEventListener(state => setOnline(Boolean(state.isConnected))),
16
18
  );
17
19
 
18
- // The provider tree. Order: gesture root → persisted query cache → i18n →
19
- // safe-area → theme → app UI.
20
+ // The provider tree. Order: gesture root → keyboard → persisted query cache →
21
+ // i18n → safe-area → theme → app UI. <Toast> is mounted last so it overlays all.
20
22
  export default function AppProvider() {
21
23
  return (
22
24
  <GestureHandlerRootView style={{ flex: 1 }}>
23
- <PersistQueryClientProvider
24
- client={queryClient}
25
- persistOptions={{ persister: mmkvQueryPersister }}>
26
- <I18nextProvider i18n={i18n}>
27
- <SafeAreaProvider>
28
- <ThemeProvider>
29
- <App />
30
- </ThemeProvider>
31
- </SafeAreaProvider>
32
- </I18nextProvider>
33
- </PersistQueryClientProvider>
25
+ <KeyboardProvider>
26
+ <PersistQueryClientProvider
27
+ client={queryClient}
28
+ persistOptions={{ persister: mmkvQueryPersister }}>
29
+ <I18nextProvider i18n={i18n}>
30
+ <SafeAreaProvider>
31
+ <ThemeProvider>
32
+ <App />
33
+ <Toast config={toastConfig} />
34
+ </ThemeProvider>
35
+ </SafeAreaProvider>
36
+ </I18nextProvider>
37
+ </PersistQueryClientProvider>
38
+ </KeyboardProvider>
34
39
  </GestureHandlerRootView>
35
40
  );
36
41
  }
@@ -18,6 +18,9 @@ export const i18n = Translator.setup({
18
18
  lng: best?.languageTag?.split('-')[0] ?? fallbackLng,
19
19
  fallbackLng,
20
20
  interpolation: { escapeValue: false },
21
+ // RN's JS engine lacks full Intl.PluralRules — use i18next's v3 plural format
22
+ // so it doesn't warn and fall back at runtime.
23
+ compatibilityJSON: 'v3',
21
24
  });
22
25
 
23
26
  // Hook persisted-language restore here if you store a user preference.
@@ -1,9 +1,19 @@
1
1
  {
2
2
  "home": {
3
3
  "title": "Home",
4
- "greeting": "Hello, {{name}}",
5
- "loadError": "Failed to load.",
6
- "count": "{{n}} item(s)"
4
+ "subtitle": "Your company mobile starter — built on the shared monorepo core.",
5
+ "features": {
6
+ "nav": { "title": "Navigation", "desc": "React Navigation — typed native-stack + bottom tabs." },
7
+ "data": { "title": "Networking", "desc": "Axios client + React Query, offline cache via MMKV." },
8
+ "i18n": { "title": "i18n", "desc": "react-i18next with device locale (en / fr)." },
9
+ "theme": { "title": "Theming", "desc": "Theme context + design tokens (dark / light)." },
10
+ "forms": { "title": "Forms", "desc": "react-hook-form bindings over the design-system fields." },
11
+ "ui": { "title": "UI kit", "desc": "Buttons, inputs, modals, tabs, skeletons and more." },
12
+ "state": { "title": "State", "desc": "Zustand stores (auth, loading) + AsyncStorage." },
13
+ "shared": { "title": "@repo/shared", "desc": "Types, enums and API contracts shared across apps." }
14
+ },
15
+ "footer": "Edit src/modules/home to make it yours.",
16
+ "loadError": "Failed to load."
7
17
  },
8
18
  "profile": {
9
19
  "title": "Profile",