Browse Source

Game package

merge-requests/4/merge
Ярослав Беркута 2 years ago committed by Coder
parent
commit
556002acce
  1. 12
      ios/Podfile.lock
  2. BIN
      ios/Resources/Fonts/fontello.ttf
  3. 34
      ios/Truth.xcodeproj/project.pbxproj
  4. 4
      ios/Truth.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  5. 2
      ios/Truth.xcodeproj/xcshareddata/xcschemes/Truth.xcscheme
  6. 6
      ios/Truth/Info.plist
  7. 53
      package-lock.json
  8. 3
      package.json
  9. 1
      react-native.config.js
  10. BIN
      src/assets/image/feathers.png
  11. BIN
      src/assets/image/hand.png
  12. BIN
      src/assets/image/line.png
  13. BIN
      src/assets/image/rabbit.png
  14. 2
      src/i18n/index.ts
  15. 3
      src/i18n/locales/en/index.ts
  16. 18
      src/i18n/locales/en/packages-list.translation.ts
  17. 2
      src/i18n/locales/en/settings.translation.ts
  18. 2
      src/i18n/locales/en/steps.translation.ts
  19. 2
      src/i18n/locales/ua/index.ts
  20. 18
      src/i18n/locales/ua/packages-list.translation.ts
  21. 2
      src/i18n/locales/ua/settings.translation.ts
  22. 8
      src/i18n/types/index.ts
  23. 0
      src/i18n/types/on-boarding.types.ts
  24. 12
      src/i18n/types/packages-list.types.ts
  25. 2
      src/i18n/types/settings.types.ts
  26. 32
      src/module/game/screen/select-packages.screen.tsx
  27. 54
      src/module/package/atoms/create-custom-package.atom.tsx
  28. 35
      src/module/package/atoms/packages-page-separator.atom.tsx
  29. 82
      src/module/package/components/packages-item.component.tsx
  30. 29
      src/module/package/components/packages-list.tsx
  31. 39
      src/module/package/config/data-package.config.tsx
  32. 1
      src/module/package/index.tsx
  33. 6
      src/module/root/atoms/premium-button.component.tsx
  34. 2
      src/module/root/components/content-on-boarding.component.tsx
  35. 2
      src/module/root/components/index.tsx
  36. 2
      src/module/root/config/data-on-boarding.config.ts
  37. 2
      src/module/root/navigations-groups/index.tsx
  38. 9
      src/module/root/navigations-groups/on-boardings-group.tsx
  39. 4
      src/module/root/screens/index.tsx
  40. 2
      src/module/root/screens/language-select.screen.tsx
  41. 23
      src/module/root/screens/on-boarding.screen.tsx
  42. 53
      src/module/root/screens/settings.screen.tsx
  43. 0
      src/module/setting/atoms/selected-language-in-settings.atom.tsx
  44. 4
      src/module/setting/config/data-setting.config.tsx
  45. 0
      src/module/shared/atoms/index.ts
  46. 53
      src/module/shared/components/Header/Header.component.tsx
  47. 2
      src/module/shared/components/buttons/go-back.component.tsx
  48. 2
      src/module/shared/components/buttons/index.tsx
  49. 58
      src/module/shared/components/header/header.component.tsx
  50. 4
      src/module/shared/components/index.tsx
  51. 13
      src/module/shared/components/layout/layout.component.tsx
  52. 1
      src/module/shared/enums/route-keys.ts

12
ios/Podfile.lock

@ -350,7 +350,9 @@ PODS: @@ -350,7 +350,9 @@ PODS:
- RNScreens (3.15.0):
- React-Core
- React-RCTImage
- RNSVG (12.3.0):
- RNSVG (12.4.4):
- React-Core
- RNVectorIcons (9.2.0):
- React-Core
- Yoga (1.14.0)
- YogaKit (1.18.1):
@ -415,6 +417,7 @@ DEPENDENCIES: @@ -415,6 +417,7 @@ DEPENDENCIES:
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNScreens (from `../node_modules/react-native-screens`)
- RNSVG (from `../node_modules/react-native-svg`)
- RNVectorIcons (from `../node_modules/react-native-vector-icons`)
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
@ -503,6 +506,8 @@ EXTERNAL SOURCES: @@ -503,6 +506,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-screens"
RNSVG:
:path: "../node_modules/react-native-svg"
RNVectorIcons:
:path: "../node_modules/react-native-vector-icons"
Yoga:
:path: "../node_modules/react-native/ReactCommon/yoga"
@ -553,10 +558,11 @@ SPEC CHECKSUMS: @@ -553,10 +558,11 @@ SPEC CHECKSUMS:
ReactCommon: 07d0c460b9ba9af3eaf1b8f5abe7daaad28c9c4e
RNGestureHandler: bad495418bcbd3ab47017a38d93d290ebd406f50
RNScreens: 4a1af06327774490d97342c00aee0c2bafb497b7
RNSVG: 302bfc9905bd8122f08966dc2ce2d07b7b52b9f8
RNSVG: ecd661f380a07ba690c9c5929c475a44f432d674
RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8
Yoga: d6b6a80659aa3e91aaba01d0012e7edcbedcbecd
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: 48b2144a2e065f251d0de7e9d7b08e5360c3252b
COCOAPODS: 1.11.2
COCOAPODS: 1.11.3

BIN
ios/Resources/Fonts/fontello.ttf

Binary file not shown.

34
ios/Truth.xcodeproj/project.pbxproj

@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
52BCE0F228C76D5A008C74BC /* Fonts in Resources */ = {isa = PBXBuildFile; fileRef = 52BCE0EE28C76941008C74BC /* Fonts */; };
52BCE0F328C77143008C74BC /* fontello.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DA10DFDF3E05483BA976401B /* fontello.ttf */; };
6172F2D35A4C3AA820D92908 /* libPods-Truth.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6423831EA8574132BED9D8CC /* libPods-Truth.a */; };
7EF68E3733C33B6898317E18 /* libPods-Truth-TruthTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ABFE59519B596E51CEFDCCC0 /* libPods-Truth-TruthTests.a */; };
8D22E0E3287C39ED0031C6E5 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8D22E0E2287C39ED0031C6E5 /* Launch Screen.storyboard */; };
@ -37,12 +39,14 @@ @@ -37,12 +39,14 @@
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Truth/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Truth/main.m; sourceTree = "<group>"; };
1D0AE47A65C8663E3B452821 /* Pods-Truth-TruthTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Truth-TruthTests.release.xcconfig"; path = "Target Support Files/Pods-Truth-TruthTests/Pods-Truth-TruthTests.release.xcconfig"; sourceTree = "<group>"; };
52BCE0EE28C76941008C74BC /* Fonts */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Fonts; sourceTree = "<group>"; };
6423831EA8574132BED9D8CC /* libPods-Truth.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Truth.a"; sourceTree = BUILT_PRODUCTS_DIR; };
6C97AB639B58BBB4B15BBE30 /* Pods-Truth-TruthTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Truth-TruthTests.debug.xcconfig"; path = "Target Support Files/Pods-Truth-TruthTests/Pods-Truth-TruthTests.debug.xcconfig"; sourceTree = "<group>"; };
8D22E0E2287C39ED0031C6E5 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
ABFE59519B596E51CEFDCCC0 /* libPods-Truth-TruthTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Truth-TruthTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
C0A881CF5CF3F2B244570E2A /* Pods-Truth.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Truth.debug.xcconfig"; path = "Target Support Files/Pods-Truth/Pods-Truth.debug.xcconfig"; sourceTree = "<group>"; };
D00AAFFCFCFDA5787532823F /* Pods-Truth.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Truth.release.xcconfig"; path = "Target Support Files/Pods-Truth/Pods-Truth.release.xcconfig"; sourceTree = "<group>"; };
DA10DFDF3E05483BA976401B /* fontello.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = fontello.ttf; path = ../src/assets/resources/fonts/fontello.ttf; sourceTree = "<group>"; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
@ -86,6 +90,7 @@ @@ -86,6 +90,7 @@
13B07FAE1A68108700A75B9A /* Truth */ = {
isa = PBXGroup;
children = (
52BCE0F128C76D3F008C74BC /* Resources */,
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
13B07FB01A68108700A75B9A /* AppDelegate.m */,
13B07FB51A68108700A75B9A /* Images.xcassets */,
@ -106,6 +111,14 @@ @@ -106,6 +111,14 @@
name = Frameworks;
sourceTree = "<group>";
};
52BCE0F128C76D3F008C74BC /* Resources */ = {
isa = PBXGroup;
children = (
52BCE0EE28C76941008C74BC /* Fonts */,
);
path = Resources;
sourceTree = "<group>";
};
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
@ -122,6 +135,7 @@ @@ -122,6 +135,7 @@
83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
E233CBF5F47BEE60B243DCF8 /* Pods */,
EECF0ADD7A2F4406804069EA /* Resources */,
);
indentWidth = 2;
sourceTree = "<group>";
@ -148,6 +162,14 @@ @@ -148,6 +162,14 @@
path = Pods;
sourceTree = "<group>";
};
EECF0ADD7A2F4406804069EA /* Resources */ = {
isa = PBXGroup;
children = (
DA10DFDF3E05483BA976401B /* fontello.ttf */,
);
name = Resources;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -200,7 +222,7 @@ @@ -200,7 +222,7 @@
83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1210;
LastUpgradeCheck = 1320;
TargetAttributes = {
00E356ED1AD99517003FC87E = {
CreatedOnToolsVersion = 6.2;
@ -242,6 +264,8 @@ @@ -242,6 +264,8 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
52BCE0F328C77143008C74BC /* fontello.ttf in Resources */,
52BCE0F228C76D5A008C74BC /* Fonts in Resources */,
8D22E0E3287C39ED0031C6E5 /* Launch Screen.storyboard in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
);
@ -436,7 +460,7 @@ @@ -436,7 +460,7 @@
"$(inherited)",
);
INFOPLIST_FILE = TruthTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -460,7 +484,7 @@ @@ -460,7 +484,7 @@
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
INFOPLIST_FILE = TruthTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -658,7 +682,7 @@ @@ -658,7 +682,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
/usr/lib/swift,
"$(inherited)",
@ -716,7 +740,7 @@ @@ -716,7 +740,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
/usr/lib/swift,
"$(inherited)",

4
ios/Truth.xcodeproj/project.xcworkspace/contents.xcworkspacedata generated

@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
</Workspace>

2
ios/Truth.xcodeproj/xcshareddata/xcschemes/Truth.xcscheme

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1210"
LastUpgradeVersion = "1320"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

6
ios/Truth/Info.plist

@ -2,6 +2,10 @@ @@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIAppFonts</key>
<array>
<string>fontello.ttf</string>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
@ -36,7 +40,7 @@ @@ -36,7 +40,7 @@
</dict>
</dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<string/>
<key>UILaunchStoryboardName</key>
<string>Launch Screen</string>
<key>UIMainStoryboardFile</key>

53
package-lock.json generated

@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
"@react-navigation/native-stack": "^6.7.0",
"i18next": "^21.8.14",
"i18next-react-native-async-storage": "^1.0.4",
"link": "^1.5.1",
"react": "17.0.2",
"react-i18next": "^11.18.1",
"react-native": "^0.67.4",
@ -3695,6 +3696,17 @@ @@ -3695,6 +3696,17 @@
"resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz",
"integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ=="
},
"node_modules/@react-navigation/elements": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.5.tgz",
"integrity": "sha512-3Ef5cYuQXqJRco7RG99fkDEciAuYTkAD7go5D8RFYG8rAp2aI/cDnGwFwvFVANlRsbFFPGU3ZLY8EUJihf4Hjw==",
"peerDependencies": {
"@react-navigation/native": "^6.0.0",
"react": "*",
"react-native": "*",
"react-native-safe-area-context": ">= 3.0.0"
}
},
"node_modules/@react-navigation/native": {
"version": "6.0.11",
"resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.0.11.tgz",
@ -3726,17 +3738,6 @@ @@ -3726,17 +3738,6 @@
"react-native-screens": ">= 3.0.0"
}
},
"node_modules/@react-navigation/native-stack/node_modules/@react-navigation/elements": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.4.tgz",
"integrity": "sha512-O0jICpjn3jskVo4yiWzZozmj7DZy1ZBbn3O7dbenuUjZSj/cscjwaapmZZFGcI/IMmjmx8UTKsybhCFEIbGf3g==",
"peerDependencies": {
"@react-navigation/native": "^6.0.0",
"react": "*",
"react-native": "*",
"react-native-safe-area-context": ">= 3.0.0"
}
},
"node_modules/@react-navigation/native/node_modules/@react-navigation/core": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.2.2.tgz",
@ -10971,6 +10972,17 @@ @@ -10971,6 +10972,17 @@
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"node_modules/link": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/link/-/link-1.5.1.tgz",
"integrity": "sha512-80GBz0JfARAPedegdwtMHJ4tiPCQNqi9UZ0womJ5YU6Zw/Jc8JRji5cnhqkxGTTFAPLs1HftUDf81qUQg0aY0Q==",
"bin": {
"link": "dist/cli.js"
},
"funding": {
"url": "https://github.com/privatenumber/link?sponsor=1"
}
},
"node_modules/locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@ -18965,6 +18977,12 @@ @@ -18965,6 +18977,12 @@
"resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz",
"integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ=="
},
"@react-navigation/elements": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.5.tgz",
"integrity": "sha512-3Ef5cYuQXqJRco7RG99fkDEciAuYTkAD7go5D8RFYG8rAp2aI/cDnGwFwvFVANlRsbFFPGU3ZLY8EUJihf4Hjw==",
"requires": {}
},
"@react-navigation/native": {
"version": "6.0.11",
"resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.0.11.tgz",
@ -19007,14 +19025,6 @@ @@ -19007,14 +19025,6 @@
"requires": {
"@react-navigation/elements": "^1.3.4",
"warn-once": "^0.1.0"
},
"dependencies": {
"@react-navigation/elements": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.4.tgz",
"integrity": "sha512-O0jICpjn3jskVo4yiWzZozmj7DZy1ZBbn3O7dbenuUjZSj/cscjwaapmZZFGcI/IMmjmx8UTKsybhCFEIbGf3g==",
"requires": {}
}
}
},
"@react-navigation/routers": {
@ -24407,6 +24417,11 @@ @@ -24407,6 +24417,11 @@
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"link": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/link/-/link-1.5.1.tgz",
"integrity": "sha512-80GBz0JfARAPedegdwtMHJ4tiPCQNqi9UZ0womJ5YU6Zw/Jc8JRji5cnhqkxGTTFAPLs1HftUDf81qUQg0aY0Q=="
},
"locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",

3
package.json

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
{
"rnpm": {
"assets": [
"/resources/fonts/"
"./resources/fonts/"
]
},
"name": "truth",
@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
"@react-navigation/native-stack": "^6.7.0",
"i18next": "^21.8.14",
"i18next-react-native-async-storage": "^1.0.4",
"link": "^1.5.1",
"react": "17.0.2",
"react-i18next": "^11.18.1",
"react-native": "^0.67.4",

1
react-native.config.js

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
module.exports = {
assets: ['./src/assets/resources/fonts'],
dependencies: {
'react-native-vector-icons': {
platforms: {

BIN
src/assets/image/feathers.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
src/assets/image/hand.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
src/assets/image/line.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

BIN
src/assets/image/rabbit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

2
src/i18n/index.ts

@ -12,7 +12,7 @@ i18n @@ -12,7 +12,7 @@ i18n
.use(AsyncStoragePlugin())
.init({
compatibilityJSON: 'v3',
fallbackLng: "en",
fallbackLng: "ua",
debug: false,
interpolation: {

3
src/i18n/locales/en/index.ts

@ -1,8 +1,9 @@ @@ -1,8 +1,9 @@
import {MainLocaleModule} from '../../types';
import {settingTranslation} from './settings.translation';
import {onBoardingTranslation} from './steps.translation';
import { packagesListTranslation } from './packages-list.translation';
export const en: MainLocaleModule = {
settingTranslation,
stepTranslation: onBoardingTranslation,
packagesListTranslation
};

18
src/i18n/locales/en/packages-list.translation.ts

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
import {PackagesListLocale} from '../../types/packages-list.types';
export const packagesListTranslation: PackagesListLocale.Core = {
under18: {
title: 'Under 18',
description:
'Sharp questions and tasks for young people and of courseno alcohol.',
},
light: {
title: 'Light',
description:
'Challenge your friends or your significant other and see how far they can go!',
},
crazy: {
title: 'Crazy',
description:
'Challenge your friends or your significant other and see how far they can go!',
},
};

2
src/i18n/locales/en/settings.translation.ts

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import {SettingLocale} from '../../types/settings.types';
export const settingTranslation: SettingLocale.core = {
export const settingTranslation: SettingLocale.Core = {
purchases: 'Purchases!',
language: 'Language',
write: 'Write to us',

2
src/i18n/locales/en/steps.translation.ts

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
import {OnBoardingLocale} from '../../types/onBoarding.types';
import {OnBoardingLocale} from '../../types/on-boarding.types';
export const onBoardingTranslation: OnBoardingLocale.OnboardingSteps = {
step1: {
title: 'Welcome!',

2
src/i18n/locales/ua/index.ts

@ -1,8 +1,10 @@ @@ -1,8 +1,10 @@
import {MainLocaleModule} from '../../types';
import {settingTranslation} from './settings.translation';
import {onBoardingTranslationUa} from './step.translation';
import {packagesListTranslation} from './packages-list.translation';
export const ua: MainLocaleModule = {
stepTranslation: onBoardingTranslationUa,
settingTranslation: settingTranslation,
packagesListTranslation,
};

18
src/i18n/locales/ua/packages-list.translation.ts

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
import {PackagesListLocale} from '../../types/packages-list.types';
export const packagesListTranslation: PackagesListLocale.Core = {
under18: {
title: 'до 18 років',
description:
'Гострі питання і завдання для молоді і звичайно без алкоголю.',
},
light: {
title: 'легкий',
description:
'Киньте виклик своїм друзям або своїй другій половинці та подивіться, як далеко вони можуть зайти!',
},
crazy: {
title: 'божевільний',
description:
'Киньте виклик своїм друзям або своїй другій половинці та подивіться, як далеко вони можуть зайти!',
},
};

2
src/i18n/locales/ua/settings.translation.ts

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import {SettingLocale} from '../../types/settings.types';
export const settingTranslation: SettingLocale.core = {
export const settingTranslation: SettingLocale.Core = {
purchases: 'Магазин!',
language: 'Мова',
write: 'Напишіть нам',

8
src/i18n/types/index.ts

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
import {OnBoardingLocale} from './onBoarding.types';
import { SettingLocale } from './settings.types';
import {OnBoardingLocale} from './on-boarding.types';
import {SettingLocale} from './settings.types';
import {PackagesListLocale} from './packages-list.types';
export interface MainLocaleModule {
stepTranslation: OnBoardingLocale.OnboardingSteps;
settingTranslation: SettingLocale.core;
settingTranslation: SettingLocale.Core;
packagesListTranslation: PackagesListLocale.Core;
}

0
src/i18n/types/onBoarding.types.ts → src/i18n/types/on-boarding.types.ts

12
src/i18n/types/packages-list.types.ts

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
export namespace PackagesListLocale {
export interface IStep {
title: string;
description: string;
}
export interface Core {
under18: IStep;
light: IStep;
crazy: IStep;
}
}

2
src/i18n/types/settings.types.ts

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
export namespace SettingLocale {
export interface core {
export interface Core {
purchases: string;
language: string;
write: string;

32
src/module/game/screen/select-packages.screen.tsx

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
import React, {FC} from 'react';
import {
colors,
Header,
IRouteParams,
RouteKey,
ScreenLayout,
} from '../../shared';
import {PackagesList} from '../../package';
interface IProps extends IRouteParams {}
export const SelectPackages: FC<IProps> = ({navigation}) => {
return (
<ScreenLayout
backgroundColor={colors.primaryColor}
backgroundStatusBar={colors.primaryColor}
headerComponent={
<Header
title="Packages"
leftIcon="settings"
rightIcon="setting"
onPressRight={() =>
navigation.navigate(RouteKey.Setting, {
previous_screen: RouteKey.Game,
title: RouteKey.Setting,
})
}
/>
}>
<PackagesList />
</ScreenLayout>
);
};

54
src/module/package/atoms/create-custom-package.atom.tsx

@ -0,0 +1,54 @@ @@ -0,0 +1,54 @@
import React from 'react';
import {StyleSheet, TouchableOpacity, View, Text} from 'react-native';
import {colors, Icon} from '../../shared';
export const CustomPackage = () => {
return (
<TouchableOpacity style={style.container}>
<View style={{flexDirection: 'row'}}>
<View style={style.iconContainer}>
<Icon name="lock" size={22} color="white"/>
</View>
<View style={style.textContainer}>
<Text style={style.title}>Create custom pack</Text>
<Text style={style.description}>
Create your own custom pack with questions and task. It all depends
on your imagination!
</Text>
</View>
</View>
</TouchableOpacity>
);
};
const style = StyleSheet.create({
container: {
backgroundColor: '#99EDCC',
borderRadius: 20,
padding: 16,
},
textContainer: {
flex: 1,
},
title: {
fontWeight: '600',
fontSize: 22,
lineHeight: 32,
color: '#2C205C',
},
description: {
fontWeight: '400',
fontSize: 16,
lineHeight: 24,
color: '#2C205C',
},
iconContainer: {
backgroundColor: colors.primaryColor,
padding: 10,
width: 50,
height: 50,
borderRadius: 20,
alignItems: 'center',
justifyContent: 'center',
marginRight: 16,
},
});

35
src/module/package/atoms/packages-page-separator.atom.tsx

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
import React from 'react';
import {Image, StyleSheet, Text, View} from 'react-native';
export const PackagesPageSeparator = () => {
return (
<View style={style.container}>
<View style={style.imageContainer}>
<Image source={require('../../../assets/image/line.png')} />
</View>
<Text style={style.text}>OR</Text>
<View style={style.imageContainer}>
<Image source={require('../../../assets/image/line.png')} />
</View>
</View>
);
};
const style = StyleSheet.create({
container: {
flex: 0,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
marginBottom: 20,
},
imageContainer: {
width: 140,
overflow: 'hidden',
},
text: {
textAlign: 'center',
color: '#9AC4F8',
fontSize: 14,
},
});

82
src/module/package/components/packages-item.component.tsx

@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
import React, {FC} from 'react';
import {StyleSheet, TouchableOpacity, View, Text} from 'react-native';
import {useTranslation} from 'react-i18next';
import {Icon} from '../../shared';
interface IPackage {
title: string;
description: string;
image: JSX.Element;
}
export const PackagesItem: FC<IPackage> = ({title, description, image}) => {
const {t, i18n} = useTranslation();
return (
<View style={style.container}>
<View style={style.flex}>
<View style={style.imgContainer}>{image}</View>
<View style={style.textContainer}>
<Text style={style.title}>{t(title)}</Text>
<Text style={style.description}>{t(description)}</Text>
</View>
</View>
<TouchableOpacity style={style.play} onPress={() => console.log('hello')}>
<Icon name="play" size={20} color="white" />
</TouchableOpacity>
</View>
);
};
const style = StyleSheet.create({
play: {
flex: 0,
alignItems: 'center',
justifyContent: 'center',
backgroundColor: '#E36588',
borderRadius: 60,
width: 50,
height: 50,
position: 'absolute',
top: '50%',
right: -25,
transform: [{translateY: -10}],
},
container: {
backgroundColor: '#2C205C',
borderRadius: 20,
paddingVertical: 16,
paddingLeft: 16,
position: 'relative',
width: '94%',
marginBottom: 16,
},
flex: {
flex: 0,
flexDirection: 'row',
},
title: {
fontWeight: '600',
fontSize: 22,
lineHeight: 32,
color: '#9AC4F8',
textTransform: 'capitalize',
},
description: {
fontWeight: '400',
fontSize: 16,
lineHeight: 24,
color: '#7669C2',
},
textContainer: {
width: 220,
marginLeft: 12,
alignItems: 'flex-start',
},
imgContainer: {
backgroundColor: '#37296B',
width: 50,
height: 50,
borderRadius: 10,
overflow: 'hidden',
},
});

29
src/module/package/components/packages-list.tsx

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
import React from 'react';
import {StyleSheet, View} from 'react-native';
import {DataPackage} from '../config/data-package.config';
import {PackagesPageSeparator} from '../atoms/packages-page-separator.atom';
import {PackagesItem} from './packages-item.component';
import {CustomPackage} from '../atoms/create-custom-package.atom';
export const PackagesList = () => {
return (
<View style={styles.container}>
{DataPackage.map((item, index) => (
<PackagesItem
title={item.title}
description={item.description}
image={item.image}
key={index}
/>
))}
<PackagesPageSeparator />
<CustomPackage />
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
},
});

39
src/module/package/config/data-package.config.tsx

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
import React from 'react';
import {Image} from 'react-native';
import {PackagesListLocale} from '../../../i18n/types/packages-list.types';
const translatePath = (
itemKey: keyof PackagesListLocale.Core,
key: keyof PackagesListLocale.IStep,
) => `packagesListTranslation.${itemKey}.${key}`;
export const DataPackage = [
{
title: translatePath('under18', 'title'),
description: translatePath('under18', 'description'),
image: (
<Image
source={require('../../../assets/image/rabbit.png')}
style={{width: '100%', height: '100%'}}
/>
),
},
{
title: translatePath('light', 'title'),
description: translatePath('light', 'description'),
image: (
<Image
source={require('../../../assets/image/feathers.png')}
style={{width: '100%', height: '100%'}}
/>
),
},
{
title: translatePath('crazy', 'title'),
description: translatePath('crazy', 'description'),
image: (
<Image
source={require('../../../assets/image/hand.png')}
style={{width: '100%', height: '100%'}}
/>
),
},
];

1
src/module/package/index.tsx

@ -0,0 +1 @@ @@ -0,0 +1 @@
export * from './components/packages-list';

6
src/module/root/atoms/premium-button.component.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React, {FC} from 'react';
import {StyleSheet, Text, TouchableOpacity, View} from 'react-native';
import {colors, PrimaryBtn, RouteKey} from '../../shared';
import {colors, IRouteParams, PrimaryBtn, RouteKey} from '../../shared';
interface IProps {
currentIndex: number;
data: Array<{
@ -25,7 +25,9 @@ export const GroupBtn: FC<IProps> = ({currentIndex, data, onPressItem}) => { @@ -25,7 +25,9 @@ export const GroupBtn: FC<IProps> = ({currentIndex, data, onPressItem}) => {
children={<Text style={styles.text}>{`Open now / $4.99`}</Text>}
width={190}
/>
<TouchableOpacity style={styles.laterBtn}>
<TouchableOpacity
style={styles.laterBtn}
onPress={() => console.log('press')}>
<Text style={[styles.text, {fontWeight: '400'}]}>Later</Text>
</TouchableOpacity>
</View>

2
src/module/root/components/content-onBoarding.component.tsx → src/module/root/components/content-on-boarding.component.tsx

@ -4,7 +4,7 @@ import {View, Text, StyleSheet} from 'react-native'; @@ -4,7 +4,7 @@ import {View, Text, StyleSheet} from 'react-native';
import {LangKeys} from '../../../i18n';
import {colors, heightPicture} from '../../shared';
import {GroupBtn} from '../atoms/premium-button.component';
import {OnBoardData} from '../config/data-onBoarding.config';
import {OnBoardData} from '../config/data-on-boarding.config';
interface IProps {
currentIndex: number;
onPressItem: (data: any) => void;

2
src/module/root/components/index.tsx

@ -1,2 +1,2 @@ @@ -1,2 +1,2 @@
export * from './content-onBoarding.component';
export * from './content-on-boarding.component';
export * from './language-item.component';

2
src/module/root/config/data-onBoarding.config.ts → src/module/root/config/data-on-boarding.config.ts

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import ImageHearts from '../../../assets/image/hearts.svg';
import ImageGlass from '../../../assets/image/glass.svg';
import ImageCup from '../../../assets/image/winners-cup.svg';
import {OnBoardingLocale} from '../../../i18n/types/onBoarding.types';
import {OnBoardingLocale} from '../../../i18n/types/on-boarding.types';
const translatePath = (
itemKey: keyof OnBoardingLocale.OnboardingSteps,
key: keyof OnBoardingLocale.IStep,

2
src/module/root/navigations-groups/index.tsx

@ -1 +1 @@ @@ -1 +1 @@
export * from './onBoardings-group';
export * from './on-boardings-group';

9
src/module/root/navigations-groups/onBoardings-group.tsx → src/module/root/navigations-groups/on-boardings-group.tsx

@ -2,16 +2,19 @@ import React, {FC} from 'react'; @@ -2,16 +2,19 @@ import React, {FC} from 'react';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import {RouteKey} from '../../shared';
import {LanguageSelect, Onboarding, Setting} from '../screens';
import {SelectPackages} from '../../game/screen/select-packages.screen';
const Stack = createNativeStackNavigator();
export const OnboardingGroup: FC = () => {
return (
<Stack.Navigator
screenOptions={{headerShown: false}}
initialRouteName={RouteKey.LanguageSelect}>
screenOptions={{
headerShown: false,
}}
initialRouteName={RouteKey.Game}>
<Stack.Screen name={RouteKey.LanguageSelect} component={LanguageSelect} />
<Stack.Screen name={RouteKey.Setting} component={Setting} />
<Stack.Screen name={RouteKey.Onboarding} component={Onboarding} />
<Stack.Screen name={RouteKey.Game} component={SelectPackages} />
</Stack.Navigator>
);
};

4
src/module/root/screens/index.tsx

@ -1,3 +1,3 @@ @@ -1,3 +1,3 @@
export * from './language-select.screen';
export * from './onBoarding.screen';
export * from "./settings.screen"
export * from './on-boarding.screen';
export * from './settings.screen';

2
src/module/root/screens/language-select.screen.tsx

@ -30,7 +30,7 @@ export const LanguageSelect: FC<IProps> = ({navigation}) => { @@ -30,7 +30,7 @@ export const LanguageSelect: FC<IProps> = ({navigation}) => {
<LanguageItem
key={el.name}
onPress={() => {
navigation.navigate(RouteKey.Setting);
navigation.navigate(RouteKey.Onboarding);
i18n.changeLanguage(el.key);
}}
icon={el.icon}

23
src/module/root/screens/onBoarding.screen.tsx → src/module/root/screens/on-boarding.screen.tsx

@ -28,14 +28,23 @@ export const Onboarding: FC<IProps> = ({navigation}) => { @@ -28,14 +28,23 @@ export const Onboarding: FC<IProps> = ({navigation}) => {
<ScreenLayout
backgroundColor={colors.primaryColor}
backgroundStatusBar={colors.primaryColor}
paddingHorizontal={20}>
<>
<Header onPress={goBack} />
<ContentOnBoarding
currentIndex={currentIndex}
onPressItem={onPressItem}
paddingHorizontal={20}
headerComponent={
<Header
leftIcon="arrow"
onPressLeft={() => goBack()}
rightIcon="setting"
onPressRight={() =>
navigation.navigate(RouteKey.Setting, {
previous_screen: RouteKey.Onboarding,
})
}
/>
</>
}>
<ContentOnBoarding
currentIndex={currentIndex}
onPressItem={onPressItem}
/>
</ScreenLayout>
);
};

53
src/module/root/screens/settings.screen.tsx

@ -3,36 +3,49 @@ import {StyleSheet, View} from 'react-native'; @@ -3,36 +3,49 @@ import {StyleSheet, View} from 'react-native';
import {SettingsItem} from '../../setting/components/settings-item.component';
import {SettingsData} from '../../setting/config/data-setting.config';
import {Header, IRouteParams, colors, ScreenLayout} from '../../shared';
interface IProps extends IRouteParams {}
export const Setting: FC<IProps> = () => {
const goBack = () => {
console.log('');
};
export const Setting: FC<IProps> = ({route, navigation}) => {
const {previous_screen, title} = route.params;
return (
<ScreenLayout
backgroundColor={colors.primaryColor}
backgroundStatusBar={colors.primaryColor}
paddingHorizontal={20}>
<>
<Header onPress={goBack} title="Settings" />
<View style={styles.container}>
{SettingsData.map((item, index) => (
<SettingsItem
key={index}
title={item.title}
iconName={item.image}
component={item.component}
/>
))}
</View>
</>
headerComponent={
<Header
leftIcon="arrow"
rightIcon="inst"
title={title}
onPressLeft={() => navigation.navigate(previous_screen)}
/>
}>
<View>
{SettingsData.map((item, index) => (
<SettingsItem
key={index}
title={item.title}
iconName={item.image}
component={item.component}
/>
))}
</View>
</ScreenLayout>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
title: {
fontSize: 24,
color: '#99EDCC',
fontWeight: 'bold',
},
button: {
flex: 0,
width: 22,
height: 22,
alignSelf: 'center',
alignItems: 'center',
justifyContent: 'center',
},
});

0
src/module/setting/atoms/selectedLanguage-inSettings.atom.tsx → src/module/setting/atoms/selected-language-in-settings.atom.tsx

4
src/module/setting/config/data-setting.config.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import {SelectedLanguage} from '../atoms/selectedLanguage-inSettings.atom';
import {SelectedLanguage} from '../atoms/selected-language-in-settings.atom';
import {SettingLocale} from '../../../i18n/types/settings.types';
const translatePath = (itemKey: keyof SettingLocale.core) =>
const translatePath = (itemKey: keyof SettingLocale.Core) =>
`settingTranslation.${itemKey}`;
export const SettingsData = [

0
src/module/shared/atoms/index.ts

53
src/module/shared/components/Header/Header.component.tsx

@ -1,53 +0,0 @@ @@ -1,53 +0,0 @@
import React, {FC} from 'react';
import {
StyleSheet,
Text,
TouchableOpacity,
View,
ViewStyle,
} from 'react-native';
import {colors} from '../../colors/colors';
import {Icon} from '../icon/icon.component';
interface IProps {
onPress: () => void;
style?: ViewStyle;
title?: string;
}
export const Header: FC<IProps> = ({onPress, style, title}) => {
return (
<View style={styles.header}>
<TouchableOpacity onPress={onPress} style={styles.button}>
<Icon name="arrow" size={22} color={colors.secondaryColor} />
</TouchableOpacity>
<Text style={styles.title}>{title}</Text>
<TouchableOpacity style={styles.button}>
<Icon name="inst" size={22} color={colors.secondaryColor} />
</TouchableOpacity>
</View>
);
};
const styles = StyleSheet.create({
header: {
width: '100%',
marginTop: 20,
marginBottom: 20,
flex: 0,
flexDirection: 'row',
alignContent: 'center',
justifyContent: 'space-between',
},
title: {
fontSize: 24,
color: '#99EDCC',
fontWeight: 'bold',
},
button: {
flex: 0,
width: 22,
height: 22,
alignSelf: 'center',
alignItems: 'center',
justifyContent: 'center',
},
});

2
src/module/shared/components/buttons/goBack.component.tsx → src/module/shared/components/buttons/go-back.component.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React, {FC} from 'react';
import {TouchableOpacity, ViewStyle} from 'react-native';
import {colors} from '../../colors/colors';
import {Icon} from '../../../shared';
import {Icon} from '../../components/icon/icon.component';
interface IProps {
onPress: () => void;
style?: ViewStyle;

2
src/module/shared/components/buttons/index.tsx

@ -1,2 +1,2 @@ @@ -1,2 +1,2 @@
export * from './goBack.component';
export * from './go-back.component';
export * from './primary-btn.component';

58
src/module/shared/components/header/header.component.tsx

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
import React, {FC} from 'react';
import {StyleSheet, Text, TouchableOpacity, View} from 'react-native';
import {colors} from '../../colors';
import {Icon} from '../icon/icon.component';
interface IProps {
onPressLeft?: () => any;
title?: string;
onPressRight?: () => any;
leftIcon?: string;
rightIcon?: string;
}
export const Header: FC<IProps> = ({
onPressLeft,
leftIcon,
rightIcon,
title,
onPressRight,
}) => {
return (
<View style={styles.header}>
{leftIcon && (
<TouchableOpacity style={styles.button} onPress={onPressLeft}>
<Icon name={leftIcon} size={22} color={colors.secondaryColor} />
</TouchableOpacity>
)}
<Text style={styles.title}>{title}</Text>
{rightIcon && (
<TouchableOpacity style={styles.button} onPress={onPressRight}>
<Icon name={rightIcon} size={22} color={colors.secondaryColor} />
</TouchableOpacity>
)}
</View>
);
};
const styles = StyleSheet.create({
header: {
marginTop: 20,
marginBottom: 35,
flex: 0,
flexDirection: 'row',
alignContent: 'center',
justifyContent: 'space-between',
},
title: {
fontSize: 24,
color: '#99EDCC',
fontWeight: 'bold',
},
button: {
flex: 0,
width: 22,
height: 22,
alignSelf: 'center',
alignItems: 'center',
justifyContent: 'center',
},
});

4
src/module/shared/components/index.tsx

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
export * from './buttons';
export * from './layout/layout.component';
export * from "./header/header.component"
export * from "./icon/icon.component"
export * from './icon/icon.component';
export * from './header/header.component';

13
src/module/shared/components/layout/layout.component.tsx

@ -27,12 +27,14 @@ interface IProps { @@ -27,12 +27,14 @@ interface IProps {
backgroundStatusBar: string;
paddingHorizontal?: number;
backgroundColor?: string;
headerComponent?: JSX.Element;
}
export const ScreenLayout: FC<IProps> = ({
children,
backgroundStatusBar,
paddingHorizontal,
backgroundColor,
headerComponent,
}) => {
return (
<View style={styles.area}>
@ -45,7 +47,10 @@ export const ScreenLayout: FC<IProps> = ({ @@ -45,7 +47,10 @@ export const ScreenLayout: FC<IProps> = ({
/>
)}
<SafeAreaView style={[styles.area, {paddingHorizontal, backgroundColor}]}>
{children}
<View style={styles.container}>
{headerComponent}
{children}
</View>
</SafeAreaView>
</View>
);
@ -54,4 +59,10 @@ const styles = StyleSheet.create({ @@ -54,4 +59,10 @@ const styles = StyleSheet.create({
area: {
flexGrow: 1,
},
container: {
width: '93%',
flex: 1,
marginLeft: 'auto',
marginRight: 'auto',
},
});

1
src/module/shared/enums/route-keys.ts

@ -2,4 +2,5 @@ export enum RouteKey { @@ -2,4 +2,5 @@ export enum RouteKey {
Onboarding = 'Onboarding',
LanguageSelect = 'LanguageSelect',
Setting = 'Setting',
Game = 'Game',
}

Loading…
Cancel
Save