diff --git a/.buckconfig b/.buckconfig deleted file mode 100644 index 934256c..0000000 --- a/.buckconfig +++ /dev/null @@ -1,6 +0,0 @@ - -[android] - target = Google Inc.:Google APIs:23 - -[maven_repositories] - central = https://repo1.maven.org/maven2 diff --git a/.eslintrc.js b/.eslintrc.js index 40c6dcd..17c8569 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,8 @@ module.exports = { root: true, extends: '@react-native-community', + rules: { + 'react-native/no-unused-styles': 1, + 'react-native/no-inline-styles': 0, + }, }; diff --git a/.flowconfig b/.flowconfig deleted file mode 100644 index 315f274..0000000 --- a/.flowconfig +++ /dev/null @@ -1,66 +0,0 @@ -[ignore] -; We fork some components by platform -.*/*[.]android.js - -; Ignore "BUCK" generated dirs -/\.buckd/ - -; Ignore polyfills -node_modules/react-native/Libraries/polyfills/.* - -; Flow doesn't support platforms -.*/Libraries/Utilities/LoadingView.js - -[untyped] -.*/node_modules/@react-native-community/cli/.*/.* - -[include] - -[libs] -node_modules/react-native/interface.js -node_modules/react-native/flow/ - -[options] -emoji=true - -esproposal.optional_chaining=enable -esproposal.nullish_coalescing=enable - -exact_by_default=true - -module.file_ext=.js -module.file_ext=.json -module.file_ext=.ios.js - -munge_underscores=true - -module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' -module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' - -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FlowFixMeProps -suppress_type=$FlowFixMeState - -[lints] -sketchy-null-number=warn -sketchy-null-mixed=warn -sketchy-number=warn -untyped-type-import=warn -nonstrict-import=warn -deprecated-type=warn -unsafe-getters-setters=warn -unnecessary-invariant=warn -signature-verification-failure=warn - -[strict] -deprecated-type -nonstrict-import -sketchy-null -unclear-type -unsafe-getters-setters -untyped-import -untyped-type-import - -[version] -^0.137.0 diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 45a3dcb..0000000 --- a/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -# Windows files should use crlf line endings -# https://help.github.com/articles/dealing-with-line-endings/ -*.bat text eol=crlf diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e9f1af4 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,37 @@ +name: Build +on: [push, pull_request] +jobs: + build-ios: + name: build-ios + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install modules + run: yarn + - name: Install pods + run: cd ios && pod install + - name: Build + run: cd ios && xcodebuild -workspace reactNativeApp.xcworkspace -configuration Debug -scheme reactNativeApp -arch x86_64 + build-android: + name: build-android + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Validate Gradle Wrapper + uses: gradle/wrapper-validation-action@v1 + - name: Install modules + run: yarn + - name: Build + run: cd android && ./gradlew assembleDebug + build-web: + name: build-web + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install modules + run: yarn + - name: Build + run: yarn web:build diff --git a/.gitignore b/.gitignore index ad572e6..cc53454 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ build/ .gradle local.properties *.iml +*.hprof # node.js # diff --git a/App.js b/App.js deleted file mode 100644 index f85f38d..0000000 --- a/App.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - * - * @format - * @flow strict-local - */ - -import React from 'react'; -import type {Node} from 'react'; -import { - SafeAreaView, - ScrollView, - StatusBar, - StyleSheet, - Text, - useColorScheme, - View, -} from 'react-native'; - -import { - Colors, - DebugInstructions, - Header, - LearnMoreLinks, - ReloadInstructions, -} from 'react-native/Libraries/NewAppScreen'; - -const Section = ({children, title}): Node => { - const isDarkMode = useColorScheme() === 'dark'; - return ( - - - {title} - - - {children} - - - ); -}; - -const App: () => Node = () => { - const isDarkMode = useColorScheme() === 'dark'; - - const backgroundStyle = { - backgroundColor: isDarkMode ? Colors.darker : Colors.lighter, - }; - - return ( - - - -
- -
- Edit App.js to change this - screen and then come back to see your edits. -
-
- -
-
- -
-
- Read the docs to discover what to do next: -
- -
- - - ); -}; - -const styles = StyleSheet.create({ - sectionContainer: { - marginTop: 32, - paddingHorizontal: 24, - }, - sectionTitle: { - fontSize: 24, - fontWeight: '600', - }, - sectionDescription: { - marginTop: 8, - fontSize: 18, - fontWeight: '400', - }, - highlight: { - fontWeight: '700', - }, -}); - -export default App; diff --git a/README.md b/README.md new file mode 100644 index 0000000..1bed48d --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# React Native Boilerplate + +A barebones, minimal React Native project with the following support: + +- Support for iOS, Android & Web +- TypeScript +- Hermes for iOS & Android +- Reanimated 2.0 +- React Navigation +- SVGs +- Github Actions + +![Demo](demo.gif) + +## FAQ + +### Why not use Expo? +Expo is awesome, but as a native dev with experience in iOS and Android I often found myself fighting to keep my dependencies lean, and configurations easily accessible. + +### Why use this boilerplate? There are a million others. +There are a ton of boilerplates for every tech stack under the sun. This boilerplate has a few unique features that I hadn't seen in others: +- Completely custom and readable babel, webpack, and metro configurations +- Native navigators for iOS and Android + web navigation intergration +- Typescript and SVG support preconfigured for all platforms + +### How do I rename the project files to my app name? +You can rename this project to match yours using the `react-native-rename` package. +`npx react-native-rename ` + +### Are you accepting contributions? +I choosing to maintain and build on this package according to my preferences. If you have a suggestion of how something could be simpler or would like to help update a dependency, please feel free to create a PR. diff --git a/_editorconfig b/_editorconfig deleted file mode 100644 index 7c28613..0000000 --- a/_editorconfig +++ /dev/null @@ -1,3 +0,0 @@ -# Windows files -[*.bat] -end_of_line = crlf diff --git a/android/app/build.gradle b/android/app/build.gradle index 3971260..a70c046 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -78,7 +78,7 @@ import com.android.build.OutputFile */ project.ext.react = [ - enableHermes: false, // clean and rebuild if changing + enableHermes: true, // clean and rebuild if changing ] apply from: "../../node_modules/react-native/react.gradle" @@ -120,16 +120,16 @@ def jscFlavor = 'org.webkit:android-jsc:+' */ def enableHermes = project.ext.react.get("enableHermes", false); +/** + * Architectures to build native code for in debug. + */ +def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures") + android { ndkVersion rootProject.ext.ndkVersion compileSdkVersion rootProject.ext.compileSdkVersion - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - defaultConfig { applicationId "com.blocks" minSdkVersion rootProject.ext.minSdkVersion @@ -156,6 +156,11 @@ android { buildTypes { debug { signingConfig signingConfigs.debug + if (nativeArchitectures) { + ndk { + abiFilters nativeArchitectures.split(',') + } + } } release { // Caution! In production, you need to generate your own keystore file. @@ -191,7 +196,7 @@ dependencies { implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { - exclude group:'com.facebook.fbjni' + exclude group:'com.facebook.fbjni' } debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { @@ -215,7 +220,7 @@ dependencies { // Run this once to be able to run the application with BUCK // puts all compile dependencies into folder libs for BUCK to use task copyDownloadableDepsToLibs(type: Copy) { - from configurations.compile + from configurations.implementation into 'libs' } diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index 11b0257..db3d00c 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -8,3 +8,5 @@ # http://developer.android.com/guide/developing/tools/proguard.html # Add any project specific keep options here: + +-keep class com.facebook.react.turbomodule.** { *; } \ No newline at end of file diff --git a/android/app/src/main/java/com/blocks/MainActivity.java b/android/app/src/main/java/com/blocks/MainActivity.java index 172dfa6..676002e 100644 --- a/android/app/src/main/java/com/blocks/MainActivity.java +++ b/android/app/src/main/java/com/blocks/MainActivity.java @@ -1,6 +1,10 @@ package com.blocks; import com.facebook.react.ReactActivity; +import com.facebook.react.ReactActivityDelegate; +import com.facebook.react.ReactRootView; + +import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; public class MainActivity extends ReactActivity { @@ -10,6 +14,16 @@ public class MainActivity extends ReactActivity { */ @Override protected String getMainComponentName() { - return "blocks"; + return "reactNativeApp"; + } + + @Override + protected ReactActivityDelegate createReactActivityDelegate() { + return new ReactActivityDelegate(this, getMainComponentName()) { + @Override + protected ReactRootView createRootView() { + return new RNGestureHandlerEnabledRootView(MainActivity.this); + } + }; } } diff --git a/android/app/src/main/java/com/blocks/MainApplication.java b/android/app/src/main/java/com/blocks/MainApplication.java index 987c374..23decfd 100644 --- a/android/app/src/main/java/com/blocks/MainApplication.java +++ b/android/app/src/main/java/com/blocks/MainApplication.java @@ -11,6 +11,9 @@ import java.lang.reflect.InvocationTargetException; import java.util.List; +import com.facebook.react.bridge.JSIModulePackage; +import com.swmansion.reanimated.ReanimatedJSIModulePackage; + public class MainApplication extends Application implements ReactApplication { private final ReactNativeHost mReactNativeHost = @@ -33,6 +36,11 @@ protected List getPackages() { protected String getJSMainModuleName() { return "index"; } + + @Override + protected JSIModulePackage getJSIModulePackage() { + return new ReanimatedJSIModulePackage(); + } }; @Override diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 7a7d977..53a2efa 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - blocks + reactNativeApp diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 9fab0be..24bc061 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -3,7 +3,6 @@ diff --git a/android/build.gradle b/android/build.gradle index 93232f5..6509895 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,18 +2,18 @@ buildscript { ext { - buildToolsVersion = "29.0.3" + buildToolsVersion = "30.0.2" minSdkVersion = 21 - compileSdkVersion = 29 - targetSdkVersion = 29 - ndkVersion = "20.1.5948944" + compileSdkVersion = 30 + targetSdkVersion = 30 + ndkVersion = "21.4.7075529" } repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:4.1.0") + classpath("com.android.tools.build:gradle:4.2.2") // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } @@ -21,6 +21,7 @@ buildscript { allprojects { repositories { + mavenCentral() mavenLocal() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm @@ -32,7 +33,6 @@ allprojects { } google() - jcenter() maven { url 'https://www.jitpack.io' } } } diff --git a/android/gradle.properties b/android/gradle.properties index d21d03f..cdb4c21 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -25,4 +25,4 @@ android.useAndroidX=true android.enableJetifier=true # Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.75.1 +FLIPPER_VERSION=0.99.0 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 14e30f7..7665b0f 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/settings.gradle b/android/settings.gradle index 996919b..ffdd19b 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,3 +1,3 @@ -rootProject.name = 'blocks' +rootProject.name = 'reactNativeApp' apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' diff --git a/app.json b/app.json index 921f9c6..9f6cd1c 100644 --- a/app.json +++ b/app.json @@ -1,4 +1,4 @@ { - "name": "blocks", - "displayName": "blocks" + "name": "reactNativeApp", + "displayName": "reactNativeApp" } \ No newline at end of file diff --git a/assets/svg/icon-action.svg b/assets/svg/icon-action.svg new file mode 100644 index 0000000..17661ac --- /dev/null +++ b/assets/svg/icon-action.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-add-person.svg b/assets/svg/icon-add-person.svg new file mode 100644 index 0000000..b43ada9 --- /dev/null +++ b/assets/svg/icon-add-person.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-add-s.svg b/assets/svg/icon-add-s.svg new file mode 100644 index 0000000..968f313 --- /dev/null +++ b/assets/svg/icon-add-s.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-add.svg b/assets/svg/icon-add.svg new file mode 100644 index 0000000..bb55731 --- /dev/null +++ b/assets/svg/icon-add.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-arrow-right.svg b/assets/svg/icon-arrow-right.svg new file mode 100644 index 0000000..0761ed0 --- /dev/null +++ b/assets/svg/icon-arrow-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-back-ios.svg b/assets/svg/icon-back-ios.svg new file mode 100644 index 0000000..ec84899 --- /dev/null +++ b/assets/svg/icon-back-ios.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-bar-back-android.svg b/assets/svg/icon-bar-back-android.svg new file mode 100644 index 0000000..917d035 --- /dev/null +++ b/assets/svg/icon-bar-back-android.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-bar-menu.svg b/assets/svg/icon-bar-menu.svg new file mode 100644 index 0000000..b7deb0c --- /dev/null +++ b/assets/svg/icon-bar-menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-block.svg b/assets/svg/icon-block.svg new file mode 100644 index 0000000..d52b04b --- /dev/null +++ b/assets/svg/icon-block.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/svg/icon-calendar.svg b/assets/svg/icon-calendar.svg new file mode 100644 index 0000000..202cbff --- /dev/null +++ b/assets/svg/icon-calendar.svg @@ -0,0 +1,13 @@ + + + + icon-calendar + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-camera.svg b/assets/svg/icon-camera.svg new file mode 100644 index 0000000..70c3cc0 --- /dev/null +++ b/assets/svg/icon-camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/icon-chart.svg b/assets/svg/icon-chart.svg new file mode 100644 index 0000000..5564253 --- /dev/null +++ b/assets/svg/icon-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/icon-check-circle.svg b/assets/svg/icon-check-circle.svg new file mode 100644 index 0000000..066d39f --- /dev/null +++ b/assets/svg/icon-check-circle.svg @@ -0,0 +1,11 @@ + + + + icon-check-circle + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-check.svg b/assets/svg/icon-check.svg new file mode 100644 index 0000000..f69bd89 --- /dev/null +++ b/assets/svg/icon-check.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-close.svg b/assets/svg/icon-close.svg new file mode 100644 index 0000000..7d52fde --- /dev/null +++ b/assets/svg/icon-close.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-copy.svg b/assets/svg/icon-copy.svg new file mode 100644 index 0000000..0ce1571 --- /dev/null +++ b/assets/svg/icon-copy.svg @@ -0,0 +1,11 @@ + + + + icon-copy + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-delete.svg b/assets/svg/icon-delete.svg new file mode 100644 index 0000000..a706920 --- /dev/null +++ b/assets/svg/icon-delete.svg @@ -0,0 +1,11 @@ + + + + icon-delete + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-download.svg b/assets/svg/icon-download.svg new file mode 100644 index 0000000..a726751 --- /dev/null +++ b/assets/svg/icon-download.svg @@ -0,0 +1,11 @@ + + + + icon-download + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-edit.svg b/assets/svg/icon-edit.svg new file mode 100644 index 0000000..1225ae2 --- /dev/null +++ b/assets/svg/icon-edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/icon-emoji-add.svg b/assets/svg/icon-emoji-add.svg new file mode 100644 index 0000000..efe0c21 --- /dev/null +++ b/assets/svg/icon-emoji-add.svg @@ -0,0 +1,9 @@ + + + icon-emoji-add + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-feedback.svg b/assets/svg/icon-feedback.svg new file mode 100644 index 0000000..94cfd12 --- /dev/null +++ b/assets/svg/icon-feedback.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-file-audio.svg b/assets/svg/icon-file-audio.svg new file mode 100644 index 0000000..2b4bcc1 --- /dev/null +++ b/assets/svg/icon-file-audio.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-file-csv.svg b/assets/svg/icon-file-csv.svg new file mode 100644 index 0000000..db77095 --- /dev/null +++ b/assets/svg/icon-file-csv.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-file-file.svg b/assets/svg/icon-file-file.svg new file mode 100644 index 0000000..6a0e6e6 --- /dev/null +++ b/assets/svg/icon-file-file.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-file-pdf.svg b/assets/svg/icon-file-pdf.svg new file mode 100644 index 0000000..91a6525 --- /dev/null +++ b/assets/svg/icon-file-pdf.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-file-text.svg b/assets/svg/icon-file-text.svg new file mode 100644 index 0000000..ea93829 --- /dev/null +++ b/assets/svg/icon-file-text.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-file-video.svg b/assets/svg/icon-file-video.svg new file mode 100644 index 0000000..dcf01d3 --- /dev/null +++ b/assets/svg/icon-file-video.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-file-zip.svg b/assets/svg/icon-file-zip.svg new file mode 100644 index 0000000..8204a9b --- /dev/null +++ b/assets/svg/icon-file-zip.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-file.svg b/assets/svg/icon-file.svg new file mode 100644 index 0000000..e722379 --- /dev/null +++ b/assets/svg/icon-file.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-gif.svg b/assets/svg/icon-gif.svg new file mode 100644 index 0000000..3cb8cdb --- /dev/null +++ b/assets/svg/icon-gif.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-heart.svg b/assets/svg/icon-heart.svg new file mode 100644 index 0000000..e018c23 --- /dev/null +++ b/assets/svg/icon-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/icon-image.svg b/assets/svg/icon-image.svg new file mode 100644 index 0000000..740b4c4 --- /dev/null +++ b/assets/svg/icon-image.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-info.svg b/assets/svg/icon-info.svg new file mode 100644 index 0000000..bdb72e3 --- /dev/null +++ b/assets/svg/icon-info.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-lightning-bolt.svg b/assets/svg/icon-lightning-bolt.svg new file mode 100644 index 0000000..92320bb --- /dev/null +++ b/assets/svg/icon-lightning-bolt.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-listen.svg b/assets/svg/icon-listen.svg new file mode 100644 index 0000000..cf9cee0 --- /dev/null +++ b/assets/svg/icon-listen.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-notifications-off.svg b/assets/svg/icon-notifications-off.svg new file mode 100644 index 0000000..0899425 --- /dev/null +++ b/assets/svg/icon-notifications-off.svg @@ -0,0 +1,9 @@ + + + icon-notifications-off + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-notifications.svg b/assets/svg/icon-notifications.svg new file mode 100644 index 0000000..9e89d3c --- /dev/null +++ b/assets/svg/icon-notifications.svg @@ -0,0 +1,11 @@ + + + icon-notifications + + + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-people.svg b/assets/svg/icon-people.svg new file mode 100644 index 0000000..2c03101 --- /dev/null +++ b/assets/svg/icon-people.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-person-circle.svg b/assets/svg/icon-person-circle.svg new file mode 100644 index 0000000..b030e2b --- /dev/null +++ b/assets/svg/icon-person-circle.svg @@ -0,0 +1,15 @@ + + + + icon-person-circle + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-person.svg b/assets/svg/icon-person.svg new file mode 100644 index 0000000..6bcdcb9 --- /dev/null +++ b/assets/svg/icon-person.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-play.svg b/assets/svg/icon-play.svg new file mode 100644 index 0000000..c83a36b --- /dev/null +++ b/assets/svg/icon-play.svg @@ -0,0 +1,13 @@ + + + + icon-play + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-remove-s.svg b/assets/svg/icon-remove-s.svg new file mode 100644 index 0000000..dcd8085 --- /dev/null +++ b/assets/svg/icon-remove-s.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-remove.svg b/assets/svg/icon-remove.svg new file mode 100644 index 0000000..d360cc1 --- /dev/null +++ b/assets/svg/icon-remove.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-reply.svg b/assets/svg/icon-reply.svg new file mode 100644 index 0000000..2c424db --- /dev/null +++ b/assets/svg/icon-reply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/icon-restart.svg b/assets/svg/icon-restart.svg new file mode 100644 index 0000000..2ad3abc --- /dev/null +++ b/assets/svg/icon-restart.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-send.svg b/assets/svg/icon-send.svg new file mode 100644 index 0000000..ab1b031 --- /dev/null +++ b/assets/svg/icon-send.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-settings.svg b/assets/svg/icon-settings.svg new file mode 100644 index 0000000..15965df --- /dev/null +++ b/assets/svg/icon-settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-share-android.svg b/assets/svg/icon-share-android.svg new file mode 100644 index 0000000..0473c61 --- /dev/null +++ b/assets/svg/icon-share-android.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon-share-ios.svg b/assets/svg/icon-share-ios.svg new file mode 100644 index 0000000..6afe964 --- /dev/null +++ b/assets/svg/icon-share-ios.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/index.js b/assets/svg/index.js new file mode 100644 index 0000000..08b1e4d --- /dev/null +++ b/assets/svg/index.js @@ -0,0 +1,101 @@ +import Action from './icon-action.svg'; +import Add from './icon-add.svg'; +import AddPerson from './icon-add-person.svg'; +import AddS from './icon-add-s.svg'; +import ArrowRight from './icon-arrow-right.svg'; +import BackIos from './icon-back-ios.svg'; +import BarBackAndroid from './icon-bar-back-android.svg'; +import BarMenu from './icon-bar-menu.svg'; +import Block from './icon-block.svg'; +import Calendar from './icon-calendar.svg'; +import Camera from './icon-camera.svg'; +import Chart from './icon-chart.svg'; +import Check from './icon-check.svg'; +import CheckCircle from './icon-check-circle.svg'; +import Close from './icon-close.svg'; +import Copy from './icon-copy.svg'; +import Delete from './icon-delete.svg'; +import Download from './icon-download.svg'; +import Edit from './icon-edit.svg'; +import EmojiAdd from './icon-emoji-add.svg'; +import Feedback from './icon-feedback.svg'; +import File from './icon-file.svg'; +import FileAudio from './icon-file-audio.svg'; +import FileCsv from './icon-file-csv.svg'; +import FileFile from './icon-file-file.svg'; +import FilePdf from './icon-file-pdf.svg'; +import FileText from './icon-file-text.svg'; +import FileVideo from './icon-file-video.svg'; +import FileZip from './icon-file-zip.svg'; +import Gif from './icon-gif.svg'; +import Heart from './icon-heart.svg'; +import Image from './icon-image.svg'; +import Info from './icon-info.svg'; +import LightningBolt from './icon-lightning-bolt.svg'; +import Listen from './icon-listen.svg'; +import Notifications from './icon-notifications.svg'; +import NotificationsOff from './icon-notifications-off.svg'; +import People from './icon-people.svg'; +import Person from './icon-person.svg'; +import PersonCircle from './icon-person-circle.svg'; +import Play from './icon-play.svg'; +import Remove from './icon-remove.svg'; +import RemoveS from './icon-remove-s.svg'; +import Reply from './icon-reply.svg'; +import Restart from './icon-restart.svg'; +import Send from './icon-send.svg'; +import Settings from './icon-settings.svg'; +import ShareAndroid from './icon-share-android.svg'; +import ShareIos from './icon-share-ios.svg'; + +export { + Action, + Add, + AddPerson, + AddS, + ArrowRight, + BackIos, + BarBackAndroid, + BarMenu, + Block, + Calendar, + Camera, + Chart, + Check, + CheckCircle, + Close, + Copy, + Delete, + Download, + Edit, + EmojiAdd, + Feedback, + File, + FileAudio, + FileCsv, + FileFile, + FilePdf, + FileText, + FileVideo, + FileZip, + Gif, + Heart, + Image, + Info, + LightningBolt, + Listen, + Notifications, + NotificationsOff, + Person, + PersonCircle, + People, + Play, + Remove, + RemoveS, + Reply, + Restart, + Send, + Settings, + ShareAndroid, + ShareIos, +}; diff --git a/babel.config.js b/babel.config.js index f842b77..983e075 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,4 @@ module.exports = { presets: ['module:metro-react-native-babel-preset'], + plugins: ['react-native-reanimated/plugin'], }; diff --git a/declarations.d.ts b/declarations.d.ts new file mode 100644 index 0000000..1f9dbf0 --- /dev/null +++ b/declarations.d.ts @@ -0,0 +1,5 @@ +declare module '*.svg' { + import {SvgProps} from 'react-native-svg'; + const content: React.FC; + export default content; +} diff --git a/demo.gif b/demo.gif new file mode 100644 index 0000000..df80732 Binary files /dev/null and b/demo.gif differ diff --git a/index.js b/index.js index a850d03..7791ced 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,10 @@ -/** - * @format - */ - +import 'react-native-gesture-handler'; // Required for React Navigation import {AppRegistry} from 'react-native'; -import App from './App'; +import {enableScreens} from 'react-native-screens'; + +import App from './src/App'; import {name as appName} from './app.json'; +enableScreens(); + AppRegistry.registerComponent(appName, () => App); diff --git a/index.web.js b/index.web.js new file mode 100644 index 0000000..de7489e --- /dev/null +++ b/index.web.js @@ -0,0 +1,19 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import {View, useWindowDimensions} from 'react-native'; + +import App from './src/App'; + +const WebRoot = () => { + return ( + + + + ); +}; + +ReactDOM.render(, document.getElementById('app')); diff --git a/ios/Podfile b/ios/Podfile index ca42f8b..7dffcd6 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,18 +1,17 @@ require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' -platform :ios, '10.0' +platform :ios, '11.0' -target 'blocks' do +target 'reactNativeApp' do config = use_native_modules! use_react_native!( :path => config[:reactNativePath], - # to enable hermes on iOS, change `false` to `true` and then install pods - :hermes_enabled => false + :hermes_enabled => true ) - target 'blocksTests' do + target 'reactNativeAppTests' do inherit! :complete # Pods for testing end @@ -25,5 +24,6 @@ target 'blocks' do post_install do |installer| react_native_post_install(installer) + __apply_Xcode_12_5_M1_post_install_workaround(installer) end end \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 2009636..8503528 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,349 +1,436 @@ PODS: - - boost-for-react-native (1.63.0) + - boost (1.76.0) - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.64.0) - - FBReactNativeSpec (0.64.0): - - RCT-Folly (= 2020.01.13.00) - - RCTRequired (= 0.64.0) - - RCTTypeSafety (= 0.64.0) - - React-Core (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - Flipper (0.75.1): - - Flipper-Folly (~> 2.5) - - Flipper-RSocket (~> 1.3) - - Flipper-DoubleConversion (1.1.7) - - Flipper-Folly (2.5.1): - - boost-for-react-native + - FBLazyVector (0.66.4) + - FBReactNativeSpec (0.66.4): + - RCT-Folly (= 2021.06.28.00-v2) + - RCTRequired (= 0.66.4) + - RCTTypeSafety (= 0.66.4) + - React-Core (= 0.66.4) + - React-jsi (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - Flipper (0.99.0): + - Flipper-Folly (~> 2.6) + - Flipper-RSocket (~> 1.4) + - Flipper-Boost-iOSX (1.76.0.1.11) + - Flipper-DoubleConversion (3.1.7) + - Flipper-Fmt (7.1.7) + - Flipper-Folly (2.6.7): + - Flipper-Boost-iOSX - Flipper-DoubleConversion + - Flipper-Fmt (= 7.1.7) - Flipper-Glog - libevent (~> 2.1.12) - OpenSSL-Universal (= 1.1.180) - Flipper-Glog (0.3.6) - Flipper-PeerTalk (0.0.4) - - Flipper-RSocket (1.3.0): - - Flipper-Folly (~> 2.5) - - FlipperKit (0.75.1): - - FlipperKit/Core (= 0.75.1) - - FlipperKit/Core (0.75.1): - - Flipper (~> 0.75.1) + - Flipper-RSocket (1.4.3): + - Flipper-Folly (~> 2.6) + - FlipperKit (0.99.0): + - FlipperKit/Core (= 0.99.0) + - FlipperKit/Core (0.99.0): + - Flipper (~> 0.99.0) - FlipperKit/CppBridge - FlipperKit/FBCxxFollyDynamicConvert - FlipperKit/FBDefines - FlipperKit/FKPortForwarding - - FlipperKit/CppBridge (0.75.1): - - Flipper (~> 0.75.1) - - FlipperKit/FBCxxFollyDynamicConvert (0.75.1): - - Flipper-Folly (~> 2.5) - - FlipperKit/FBDefines (0.75.1) - - FlipperKit/FKPortForwarding (0.75.1): + - FlipperKit/CppBridge (0.99.0): + - Flipper (~> 0.99.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.99.0): + - Flipper-Folly (~> 2.6) + - FlipperKit/FBDefines (0.99.0) + - FlipperKit/FKPortForwarding (0.99.0): - CocoaAsyncSocket (~> 7.6) - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.75.1) - - FlipperKit/FlipperKitLayoutPlugin (0.75.1): + - FlipperKit/FlipperKitHighlightOverlay (0.99.0) + - FlipperKit/FlipperKitLayoutHelpers (0.99.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutTextSearchable + - FlipperKit/FlipperKitLayoutIOSDescriptors (0.99.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutHelpers + - YogaKit (~> 1.18) + - FlipperKit/FlipperKitLayoutPlugin (0.99.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutHelpers + - FlipperKit/FlipperKitLayoutIOSDescriptors + - FlipperKit/FlipperKitLayoutTextSearchable - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.75.1) - - FlipperKit/FlipperKitNetworkPlugin (0.75.1): + - FlipperKit/FlipperKitLayoutTextSearchable (0.99.0) + - FlipperKit/FlipperKitNetworkPlugin (0.99.0): - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.75.1): + - FlipperKit/FlipperKitReactPlugin (0.99.0): - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.75.1): + - FlipperKit/FlipperKitUserDefaultsPlugin (0.99.0): - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.75.1): + - FlipperKit/SKIOSNetworkPlugin (0.99.0): - FlipperKit/Core - FlipperKit/FlipperKitNetworkPlugin + - fmt (6.2.1) - glog (0.3.5) + - hermes-engine (0.9.0) - libevent (2.1.12) - OpenSSL-Universal (1.1.180) - - RCT-Folly (2020.01.13.00): - - boost-for-react-native + - RCT-Folly (2021.06.28.00-v2): + - boost - DoubleConversion + - fmt (~> 6.2.1) - glog - - RCT-Folly/Default (= 2020.01.13.00) - - RCT-Folly/Default (2020.01.13.00): - - boost-for-react-native + - RCT-Folly/Default (= 2021.06.28.00-v2) + - RCT-Folly/Default (2021.06.28.00-v2): + - boost - DoubleConversion + - fmt (~> 6.2.1) - glog - - RCTRequired (0.64.0) - - RCTTypeSafety (0.64.0): - - FBLazyVector (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTRequired (= 0.64.0) - - React-Core (= 0.64.0) - - React (0.64.0): - - React-Core (= 0.64.0) - - React-Core/DevSupport (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-RCTActionSheet (= 0.64.0) - - React-RCTAnimation (= 0.64.0) - - React-RCTBlob (= 0.64.0) - - React-RCTImage (= 0.64.0) - - React-RCTLinking (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - React-RCTSettings (= 0.64.0) - - React-RCTText (= 0.64.0) - - React-RCTVibration (= 0.64.0) - - React-callinvoker (0.64.0) - - React-Core (0.64.0): + - RCT-Folly/Futures (2021.06.28.00-v2): + - boost + - DoubleConversion + - fmt (~> 6.2.1) - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - libevent + - RCTRequired (0.66.4) + - RCTTypeSafety (0.66.4): + - FBLazyVector (= 0.66.4) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTRequired (= 0.66.4) + - React-Core (= 0.66.4) + - React (0.66.4): + - React-Core (= 0.66.4) + - React-Core/DevSupport (= 0.66.4) + - React-Core/RCTWebSocket (= 0.66.4) + - React-RCTActionSheet (= 0.66.4) + - React-RCTAnimation (= 0.66.4) + - React-RCTBlob (= 0.66.4) + - React-RCTImage (= 0.66.4) + - React-RCTLinking (= 0.66.4) + - React-RCTNetwork (= 0.66.4) + - React-RCTSettings (= 0.66.4) + - React-RCTText (= 0.66.4) + - React-RCTVibration (= 0.66.4) + - React-callinvoker (0.66.4) + - React-Core (0.66.4): + - glog + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.66.4) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/CoreModulesHeaders (0.64.0): + - React-Core/CoreModulesHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/Default (0.64.0): + - React-Core/Default (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/DevSupport (0.64.0): + - React-Core/DevSupport (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-jsinspector (= 0.64.0) - - React-perflogger (= 0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.66.4) + - React-Core/RCTWebSocket (= 0.66.4) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-jsinspector (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTActionSheetHeaders (0.64.0): + - React-Core/RCTActionSheetHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTAnimationHeaders (0.64.0): + - React-Core/RCTAnimationHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTBlobHeaders (0.64.0): + - React-Core/RCTBlobHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTImageHeaders (0.64.0): + - React-Core/RCTImageHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTLinkingHeaders (0.64.0): + - React-Core/RCTLinkingHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTNetworkHeaders (0.64.0): + - React-Core/RCTNetworkHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTSettingsHeaders (0.64.0): + - React-Core/RCTSettingsHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTTextHeaders (0.64.0): + - React-Core/RCTTextHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTVibrationHeaders (0.64.0): + - React-Core/RCTVibrationHeaders (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-Core/RCTWebSocket (0.64.0): + - React-Core/RCTWebSocket (0.66.4): - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.66.4) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-perflogger (= 0.66.4) - Yoga - - React-CoreModules (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/CoreModulesHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTImage (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-cxxreact (0.64.0): - - boost-for-react-native (= 1.63.0) + - React-CoreModules (0.66.4): + - FBReactNativeSpec (= 0.66.4) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.4) + - React-Core/CoreModulesHeaders (= 0.66.4) + - React-jsi (= 0.66.4) + - React-RCTImage (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - React-cxxreact (0.66.4): + - boost (= 1.76.0) + - DoubleConversion + - glog + - RCT-Folly (= 2021.06.28.00-v2) + - React-callinvoker (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsinspector (= 0.66.4) + - React-logger (= 0.66.4) + - React-perflogger (= 0.66.4) + - React-runtimeexecutor (= 0.66.4) + - React-hermes (0.66.4): - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-callinvoker (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsinspector (= 0.64.0) - - React-perflogger (= 0.64.0) - - React-runtimeexecutor (= 0.64.0) - - React-jsi (0.64.0): - - boost-for-react-native (= 1.63.0) + - hermes-engine + - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly/Futures (= 2021.06.28.00-v2) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-jsiexecutor (= 0.66.4) + - React-jsinspector (= 0.66.4) + - React-perflogger (= 0.66.4) + - React-jsi (0.66.4): + - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-jsi/Default (= 0.64.0) - - React-jsi/Default (0.64.0): - - boost-for-react-native (= 1.63.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-jsi/Default (= 0.66.4) + - React-jsi/Default (0.66.4): + - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-jsiexecutor (0.64.0): + - RCT-Folly (= 2021.06.28.00-v2) + - React-jsiexecutor (0.66.4): - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-perflogger (= 0.64.0) - - React-jsinspector (0.64.0) - - React-perflogger (0.64.0) - - React-RCTActionSheet (0.64.0): - - React-Core/RCTActionSheetHeaders (= 0.64.0) - - React-RCTAnimation (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTAnimationHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTBlob (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - React-Core/RCTBlobHeaders (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTImage (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTImageHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTLinking (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - React-Core/RCTLinkingHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTNetwork (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTNetworkHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTSettings (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTSettingsHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTText (0.64.0): - - React-Core/RCTTextHeaders (= 0.64.0) - - React-RCTVibration (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - React-Core/RCTVibrationHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-runtimeexecutor (0.64.0): - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (0.64.0): + - RCT-Folly (= 2021.06.28.00-v2) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-perflogger (= 0.66.4) + - React-jsinspector (0.66.4) + - React-logger (0.66.4): + - glog + - react-native-flipper (0.105.0): + - React-Core + - react-native-pager-view (5.4.9): + - React-Core + - react-native-safe-area-context (3.3.2): + - React-Core + - React-perflogger (0.66.4) + - React-RCTActionSheet (0.66.4): + - React-Core/RCTActionSheetHeaders (= 0.66.4) + - React-RCTAnimation (0.66.4): + - FBReactNativeSpec (= 0.66.4) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.4) + - React-Core/RCTAnimationHeaders (= 0.66.4) + - React-jsi (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - React-RCTBlob (0.66.4): + - FBReactNativeSpec (= 0.66.4) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/RCTBlobHeaders (= 0.66.4) + - React-Core/RCTWebSocket (= 0.66.4) + - React-jsi (= 0.66.4) + - React-RCTNetwork (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - React-RCTImage (0.66.4): + - FBReactNativeSpec (= 0.66.4) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.4) + - React-Core/RCTImageHeaders (= 0.66.4) + - React-jsi (= 0.66.4) + - React-RCTNetwork (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - React-RCTLinking (0.66.4): + - FBReactNativeSpec (= 0.66.4) + - React-Core/RCTLinkingHeaders (= 0.66.4) + - React-jsi (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - React-RCTNetwork (0.66.4): + - FBReactNativeSpec (= 0.66.4) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.4) + - React-Core/RCTNetworkHeaders (= 0.66.4) + - React-jsi (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - React-RCTSettings (0.66.4): + - FBReactNativeSpec (= 0.66.4) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.4) + - React-Core/RCTSettingsHeaders (= 0.66.4) + - React-jsi (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - React-RCTText (0.66.4): + - React-Core/RCTTextHeaders (= 0.66.4) + - React-RCTVibration (0.66.4): + - FBReactNativeSpec (= 0.66.4) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/RCTVibrationHeaders (= 0.66.4) + - React-jsi (= 0.66.4) + - ReactCommon/turbomodule/core (= 0.66.4) + - React-runtimeexecutor (0.66.4): + - React-jsi (= 0.66.4) + - ReactCommon/turbomodule/core (0.66.4): - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-callinvoker (= 0.64.0) - - React-Core (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-perflogger (= 0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-callinvoker (= 0.66.4) + - React-Core (= 0.66.4) + - React-cxxreact (= 0.66.4) + - React-jsi (= 0.66.4) + - React-logger (= 0.66.4) + - React-perflogger (= 0.66.4) + - RNCMaskedView (0.1.11): + - React + - RNGestureHandler (1.10.3): + - React-Core + - RNReanimated (2.3.1): + - DoubleConversion + - FBLazyVector + - FBReactNativeSpec + - glog + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React + - React-callinvoker + - React-Core + - React-Core/DevSupport + - React-Core/RCTWebSocket + - React-CoreModules + - React-cxxreact + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-RCTActionSheet + - React-RCTAnimation + - React-RCTBlob + - React-RCTImage + - React-RCTLinking + - React-RCTNetwork + - React-RCTSettings + - React-RCTText + - ReactCommon/turbomodule/core + - Yoga + - RNScreens (3.10.1): + - React-Core + - React-RCTImage + - RNSVG (12.1.1): + - React - Yoga (1.14.0) - YogaKit (1.18.1): - Yoga (~> 1.14) DEPENDENCIES: + - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - - Flipper (~> 0.75.1) - - Flipper-DoubleConversion (= 1.1.7) - - Flipper-Folly (~> 2.5) + - Flipper (= 0.99.0) + - Flipper-Boost-iOSX (= 1.76.0.1.11) + - Flipper-DoubleConversion (= 3.1.7) + - Flipper-Fmt (= 7.1.7) + - Flipper-Folly (= 2.6.7) - Flipper-Glog (= 0.3.6) - - Flipper-PeerTalk (~> 0.0.4) - - Flipper-RSocket (~> 1.3) - - FlipperKit (~> 0.75.1) - - FlipperKit/Core (~> 0.75.1) - - FlipperKit/CppBridge (~> 0.75.1) - - FlipperKit/FBCxxFollyDynamicConvert (~> 0.75.1) - - FlipperKit/FBDefines (~> 0.75.1) - - FlipperKit/FKPortForwarding (~> 0.75.1) - - FlipperKit/FlipperKitHighlightOverlay (~> 0.75.1) - - FlipperKit/FlipperKitLayoutPlugin (~> 0.75.1) - - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.75.1) - - FlipperKit/FlipperKitNetworkPlugin (~> 0.75.1) - - FlipperKit/FlipperKitReactPlugin (~> 0.75.1) - - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.75.1) - - FlipperKit/SKIOSNetworkPlugin (~> 0.75.1) + - Flipper-PeerTalk (= 0.0.4) + - Flipper-RSocket (= 1.4.3) + - FlipperKit (= 0.99.0) + - FlipperKit/Core (= 0.99.0) + - FlipperKit/CppBridge (= 0.99.0) + - FlipperKit/FBCxxFollyDynamicConvert (= 0.99.0) + - FlipperKit/FBDefines (= 0.99.0) + - FlipperKit/FKPortForwarding (= 0.99.0) + - FlipperKit/FlipperKitHighlightOverlay (= 0.99.0) + - FlipperKit/FlipperKitLayoutPlugin (= 0.99.0) + - FlipperKit/FlipperKitLayoutTextSearchable (= 0.99.0) + - FlipperKit/FlipperKitNetworkPlugin (= 0.99.0) + - FlipperKit/FlipperKitReactPlugin (= 0.99.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.99.0) + - FlipperKit/SKIOSNetworkPlugin (= 0.99.0) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (~> 0.9.0) + - libevent (~> 2.1.12) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) @@ -354,9 +441,14 @@ DEPENDENCIES: - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - react-native-flipper (from `../node_modules/react-native-flipper`) + - react-native-pager-view (from `../node_modules/react-native-pager-view`) + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) @@ -369,24 +461,34 @@ DEPENDENCIES: - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" + - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) + - RNReanimated (from `../node_modules/react-native-reanimated`) + - RNScreens (from `../node_modules/react-native-screens`) + - RNSVG (from `../node_modules/react-native-svg`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: trunk: - - boost-for-react-native - CocoaAsyncSocket - Flipper + - Flipper-Boost-iOSX - Flipper-DoubleConversion + - Flipper-Fmt - Flipper-Folly - Flipper-Glog - Flipper-PeerTalk - Flipper-RSocket - FlipperKit + - fmt + - hermes-engine - libevent - OpenSSL-Universal - YogaKit EXTERNAL SOURCES: + boost: + :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" FBLazyVector: @@ -411,12 +513,22 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/CoreModules" React-cxxreact: :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" React-jsi: :path: "../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: :path: "../node_modules/react-native/ReactCommon/jsinspector" + React-logger: + :path: "../node_modules/react-native/ReactCommon/logger" + react-native-flipper: + :path: "../node_modules/react-native-flipper" + react-native-pager-view: + :path: "../node_modules/react-native-pager-view" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" React-RCTActionSheet: @@ -441,51 +553,75 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" ReactCommon: :path: "../node_modules/react-native/ReactCommon" + RNCMaskedView: + :path: "../node_modules/@react-native-community/masked-view" + RNGestureHandler: + :path: "../node_modules/react-native-gesture-handler" + RNReanimated: + :path: "../node_modules/react-native-reanimated" + RNScreens: + :path: "../node_modules/react-native-screens" + RNSVG: + :path: "../node_modules/react-native-svg" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c + boost: a7c83b31436843459a1961bfd74b96033dc77234 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de - FBLazyVector: 49cbe4b43e445b06bf29199b6ad2057649e4c8f5 - FBReactNativeSpec: bc1efe4fb5b16343044164476957f69ff8a7f840 - Flipper: d3da1aa199aad94455ae725e9f3aa43f3ec17021 - Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 - Flipper-Folly: f7a3caafbd74bda4827954fd7a6e000e36355489 + DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 + FBLazyVector: e5569e42a1c79ca00521846c223173a57aca1fe1 + FBReactNativeSpec: fe08c1cd7e2e205718d77ad14b34957cce949b58 + Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 + Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c + Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c + Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b + Flipper-Folly: 83af37379faa69497529e414bd43fbfc7cae259a Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 - Flipper-RSocket: 602921fee03edacf18f5d6f3d3594ba477f456e5 - FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00 - glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62 + Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 + FlipperKit: d8d346844eca5d9120c17d441a2f38596e8ed2b9 + fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 + glog: 5337263514dd6f09803962437687240c5dc39aa4 + hermes-engine: bf7577d12ac6ccf53ab8b5af3c6ccf0dd8458c5c libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b - RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c - RCTRequired: 2f8cb5b7533219bf4218a045f92768129cf7050a - RCTTypeSafety: 512728b73549e72ad7330b92f3d42936f2a4de5b - React: 98eac01574128a790f0bbbafe2d1a8607291ac24 - React-callinvoker: def3f7fae16192df68d9b69fd4bbb59092ee36bc - React-Core: 70a52aa5dbe9b83befae82038451a7df9fd54c5a - React-CoreModules: 052edef46117862e2570eb3a0f06d81c61d2c4b8 - React-cxxreact: c1dc71b30653cfb4770efdafcbdc0ad6d388baab - React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1 - React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b - React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301 - React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af - React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11 - React-RCTAnimation: 3f96f21a497ae7dabf4d2f150ee43f906aaf516f - React-RCTBlob: 283b8e5025e7f954176bc48164f846909002f3ed - React-RCTImage: 5088a484faac78f2d877e1b79125d3bb1ea94a16 - React-RCTLinking: 5e8fbb3e9a8bc2e4e3eb15b1eb8bda5fcac27b8c - React-RCTNetwork: 38ec277217b1e841d5e6a1fa78da65b9212ccb28 - React-RCTSettings: 242d6e692108c3de4f3bb74b7586a8799e9ab070 - React-RCTText: 8746736ac8eb5a4a74719aa695b7a236a93a83d2 - React-RCTVibration: 0fd6b21751a33cb72fce1a4a33ab9678416d307a - React-runtimeexecutor: cad74a1eaa53ee6e7a3620231939d8fe2c6afcf0 - ReactCommon: cfe2b7fd20e0dbd2d1185cd7d8f99633fbc5ff05 - Yoga: 8c8436d4171c87504c648ae23b1d81242bdf3bbf + RCT-Folly: a21c126816d8025b547704b777a2ba552f3d9fa9 + RCTRequired: 4bf86c70714490bca4bf2696148638284622644b + RCTTypeSafety: c475a7059eb77935fa53d2c17db299893f057d5d + React: f64af14e3f2c50f6f2c91a5fd250e4ff1b3c3459 + React-callinvoker: b74e4ae80287780dcdf0cab262bcb581eeef56e7 + React-Core: 3eb7432bad96ff1d25aebc1defbae013fee2fd0e + React-CoreModules: ad9e1fd5650e16666c57a08328df86fd7e480cb9 + React-cxxreact: 02633ff398cf7e91a2c1e12590d323c4a4b8668a + React-hermes: 7b4c6617b4d4c880d0f44e629651810bf3417440 + React-jsi: 805c41a927d6499fb811772acb971467d9204633 + React-jsiexecutor: 94ce921e1d8ce7023366873ec371f3441383b396 + React-jsinspector: d0374f7509d407d2264168b6d0fad0b54e300b85 + React-logger: 933f80c97c633ee8965d609876848148e3fef438 + react-native-flipper: 5626e75999bce12c90f587d4f8e2199afd4fe1f9 + react-native-pager-view: 3ee7d4c7697fb3ef788346e834a60cca97ed8540 + react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057 + React-perflogger: 93075d8931c32cd1fce8a98c15d2d5ccc4d891bd + React-RCTActionSheet: 7d3041e6761b4f3044a37079ddcb156575fb6d89 + React-RCTAnimation: 743e88b55ac62511ae5c2e22803d4f503f2a3a13 + React-RCTBlob: bee3a2f98fa7fc25c957c8643494244f74bea0a0 + React-RCTImage: 19fc9e29b06cc38611c553494f8d3040bf78c24e + React-RCTLinking: dc799503979c8c711126d66328e7ce8f25c2848f + React-RCTNetwork: 417e4e34cf3c19eaa5fd4e9eb20180d662a799ce + React-RCTSettings: 4df89417265af26501a7e0e9192a34d3d9848dff + React-RCTText: f8a21c3499ab322326290fa9b701ae29aa093aa5 + React-RCTVibration: e3ffca672dd3772536cb844274094b0e2c31b187 + React-runtimeexecutor: dec32ee6f2e2a26e13e58152271535fadff5455a + ReactCommon: 57b69f6383eafcbd7da625bfa6003810332313c4 + RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489 + RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211 + RNReanimated: da3860204e5660c0dd66739936732197d359d753 + RNScreens: 522705f2e5c9d27efb17f24aceb2bf8335bc7b8e + RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f + Yoga: e7dc4e71caba6472ff48ad7d234389b91dadc280 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 7074925f800e1159026db86a6d4bb95623c58a52 +PODFILE CHECKSUM: 0db1cf1fc2469e3b11a594d85e896cabec11ef90 -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.2 diff --git a/ios/blocks/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/blocks/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 118c98f..0000000 --- a/ios/blocks/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/ios/blocks.xcodeproj/project.pbxproj b/ios/reactNativeApp.xcodeproj/project.pbxproj similarity index 67% rename from ios/blocks.xcodeproj/project.pbxproj rename to ios/reactNativeApp.xcodeproj/project.pbxproj index 1ba1107..bc4fe5b 100644 --- a/ios/blocks.xcodeproj/project.pbxproj +++ b/ios/reactNativeApp.xcodeproj/project.pbxproj @@ -7,13 +7,13 @@ objects = { /* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* blocksTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* blocksTests.m */; }; + 00E356F31AD99517003FC87E /* reactNativeAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* reactNativeAppTests.m */; }; 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 */; }; - 3665345FA70F4B8B3366B75D /* libPods-blocks.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55806890229C2667D89B682E /* libPods-blocks.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - AE26B2D25814130AFF2D39FA /* libPods-blocks-blocksTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3147ADCEC7A737535721244 /* libPods-blocks-blocksTests.a */; }; + 8233B98A2D2472F8915B8658 /* libPods-reactNativeApp-reactNativeAppTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 63A7ACF52AB344D533E1D427 /* libPods-reactNativeApp-reactNativeAppTests.a */; }; + BCFE8D6998004A4754983ACE /* libPods-reactNativeApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3597469C956001AFC02E25E /* libPods-reactNativeApp.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -22,27 +22,27 @@ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = blocks; + remoteInfo = reactNativeApp; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00E356EE1AD99517003FC87E /* blocksTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = blocksTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356EE1AD99517003FC87E /* reactNativeAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = reactNativeAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* blocksTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = blocksTests.m; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* blocks.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = blocks.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = blocks/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = blocks/AppDelegate.m; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = blocks/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = blocks/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = blocks/main.m; sourceTree = ""; }; - 42D2C4F4FDB6A80C4DF53C51 /* Pods-blocks.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-blocks.release.xcconfig"; path = "Target Support Files/Pods-blocks/Pods-blocks.release.xcconfig"; sourceTree = ""; }; - 55806890229C2667D89B682E /* libPods-blocks.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-blocks.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = blocks/LaunchScreen.storyboard; sourceTree = ""; }; - B3147ADCEC7A737535721244 /* libPods-blocks-blocksTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-blocks-blocksTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - D27804E1311B8D6561D0B38B /* Pods-blocks-blocksTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-blocks-blocksTests.debug.xcconfig"; path = "Target Support Files/Pods-blocks-blocksTests/Pods-blocks-blocksTests.debug.xcconfig"; sourceTree = ""; }; - D6A0513F02FF7B1ADD4FB4ED /* Pods-blocks-blocksTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-blocks-blocksTests.release.xcconfig"; path = "Target Support Files/Pods-blocks-blocksTests/Pods-blocks-blocksTests.release.xcconfig"; sourceTree = ""; }; - E6D4928FB8760D74373E5AF6 /* Pods-blocks.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-blocks.debug.xcconfig"; path = "Target Support Files/Pods-blocks/Pods-blocks.debug.xcconfig"; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* reactNativeAppTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = reactNativeAppTests.m; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* reactNativeApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = reactNativeApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = reactNativeApp/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = reactNativeApp/AppDelegate.m; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = reactNativeApp/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = reactNativeApp/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = reactNativeApp/main.m; sourceTree = ""; }; + 2918840B34DCE86CE1C24C10 /* Pods-reactNativeApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-reactNativeApp.release.xcconfig"; path = "Target Support Files/Pods-reactNativeApp/Pods-reactNativeApp.release.xcconfig"; sourceTree = ""; }; + 3F0A05C6EEDEA6EBE97CC217 /* Pods-reactNativeApp-reactNativeAppTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-reactNativeApp-reactNativeAppTests.debug.xcconfig"; path = "Target Support Files/Pods-reactNativeApp-reactNativeAppTests/Pods-reactNativeApp-reactNativeAppTests.debug.xcconfig"; sourceTree = ""; }; + 63A7ACF52AB344D533E1D427 /* libPods-reactNativeApp-reactNativeAppTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-reactNativeApp-reactNativeAppTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = reactNativeApp/LaunchScreen.storyboard; sourceTree = ""; }; + 93B41420B7B339662CE9E5BD /* Pods-reactNativeApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-reactNativeApp.debug.xcconfig"; path = "Target Support Files/Pods-reactNativeApp/Pods-reactNativeApp.debug.xcconfig"; sourceTree = ""; }; + B3597469C956001AFC02E25E /* libPods-reactNativeApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-reactNativeApp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + BC17F0DE4CD71E4AB1C7AE79 /* Pods-reactNativeApp-reactNativeAppTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-reactNativeApp-reactNativeAppTests.release.xcconfig"; path = "Target Support Files/Pods-reactNativeApp-reactNativeAppTests/Pods-reactNativeApp-reactNativeAppTests.release.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -51,7 +51,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AE26B2D25814130AFF2D39FA /* libPods-blocks-blocksTests.a in Frameworks */, + 8233B98A2D2472F8915B8658 /* libPods-reactNativeApp-reactNativeAppTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -59,20 +59,20 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3665345FA70F4B8B3366B75D /* libPods-blocks.a in Frameworks */, + BCFE8D6998004A4754983ACE /* libPods-reactNativeApp.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* blocksTests */ = { + 00E356EF1AD99517003FC87E /* reactNativeAppTests */ = { isa = PBXGroup; children = ( - 00E356F21AD99517003FC87E /* blocksTests.m */, + 00E356F21AD99517003FC87E /* reactNativeAppTests.m */, 00E356F01AD99517003FC87E /* Supporting Files */, ); - path = blocksTests; + path = reactNativeAppTests; sourceTree = ""; }; 00E356F01AD99517003FC87E /* Supporting Files */ = { @@ -83,19 +83,7 @@ name = "Supporting Files"; sourceTree = ""; }; - 06D51DE28CDBA4EC30CFF0E1 /* Pods */ = { - isa = PBXGroup; - children = ( - E6D4928FB8760D74373E5AF6 /* Pods-blocks.debug.xcconfig */, - 42D2C4F4FDB6A80C4DF53C51 /* Pods-blocks.release.xcconfig */, - D27804E1311B8D6561D0B38B /* Pods-blocks-blocksTests.debug.xcconfig */, - D6A0513F02FF7B1ADD4FB4ED /* Pods-blocks-blocksTests.release.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* blocks */ = { + 13B07FAE1A68108700A75B9A /* reactNativeApp */ = { isa = PBXGroup; children = ( 13B07FAF1A68108700A75B9A /* AppDelegate.h */, @@ -105,15 +93,15 @@ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 13B07FB71A68108700A75B9A /* main.m */, ); - name = blocks; + name = reactNativeApp; sourceTree = ""; }; 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 55806890229C2667D89B682E /* libPods-blocks.a */, - B3147ADCEC7A737535721244 /* libPods-blocks-blocksTests.a */, + B3597469C956001AFC02E25E /* libPods-reactNativeApp.a */, + 63A7ACF52AB344D533E1D427 /* libPods-reactNativeApp-reactNativeAppTests.a */, ); name = Frameworks; sourceTree = ""; @@ -128,12 +116,12 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - 13B07FAE1A68108700A75B9A /* blocks */, + 13B07FAE1A68108700A75B9A /* reactNativeApp */, 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* blocksTests */, + 00E356EF1AD99517003FC87E /* reactNativeAppTests */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, - 06D51DE28CDBA4EC30CFF0E1 /* Pods */, + E233CBF5F47BEE60B243DCF8 /* Pods */, ); indentWidth = 2; sourceTree = ""; @@ -143,56 +131,67 @@ 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 13B07F961A680F5B00A75B9A /* blocks.app */, - 00E356EE1AD99517003FC87E /* blocksTests.xctest */, + 13B07F961A680F5B00A75B9A /* reactNativeApp.app */, + 00E356EE1AD99517003FC87E /* reactNativeAppTests.xctest */, ); name = Products; sourceTree = ""; }; + E233CBF5F47BEE60B243DCF8 /* Pods */ = { + isa = PBXGroup; + children = ( + 93B41420B7B339662CE9E5BD /* Pods-reactNativeApp.debug.xcconfig */, + 2918840B34DCE86CE1C24C10 /* Pods-reactNativeApp.release.xcconfig */, + 3F0A05C6EEDEA6EBE97CC217 /* Pods-reactNativeApp-reactNativeAppTests.debug.xcconfig */, + BC17F0DE4CD71E4AB1C7AE79 /* Pods-reactNativeApp-reactNativeAppTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* blocksTests */ = { + 00E356ED1AD99517003FC87E /* reactNativeAppTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "blocksTests" */; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "reactNativeAppTests" */; buildPhases = ( - 0E4AEFA3A987D5CDCE978EB9 /* [CP] Check Pods Manifest.lock */, + CFC168BF34B71F7C32988205 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - 95B2CE1479A0DBCB51353421 /* [CP] Embed Pods Frameworks */, - 872CBFE24A03B7527EB774C4 /* [CP] Copy Pods Resources */, + 050C365D46608ADA1696AA00 /* [CP] Embed Pods Frameworks */, + 5BEBA4A5B8246FF523A1EE96 /* [CP] Copy Pods Resources */, ); buildRules = ( ); dependencies = ( 00E356F51AD99517003FC87E /* PBXTargetDependency */, ); - name = blocksTests; - productName = blocksTests; - productReference = 00E356EE1AD99517003FC87E /* blocksTests.xctest */; + name = reactNativeAppTests; + productName = reactNativeAppTests; + productReference = 00E356EE1AD99517003FC87E /* reactNativeAppTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 13B07F861A680F5B00A75B9A /* blocks */ = { + 13B07F861A680F5B00A75B9A /* reactNativeApp */ = { isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "blocks" */; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "reactNativeApp" */; buildPhases = ( - C5E4058E83972C981C227817 /* [CP] Check Pods Manifest.lock */, + B73B85388D522C9679DE35C2 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 0D363978AAE4AD4B76CFD2D8 /* [CP] Embed Pods Frameworks */, - 9FCAF4A7199DD1EF0C34F6AA /* [CP] Copy Pods Resources */, + F0211C5CB91270A3E469B538 /* [CP] Embed Pods Frameworks */, + BE00DD6A992614E2E2A3D21F /* [CP] Copy Pods Resources */, ); buildRules = ( ); dependencies = ( ); - name = blocks; - productName = blocks; - productReference = 13B07F961A680F5B00A75B9A /* blocks.app */; + name = reactNativeApp; + productName = reactNativeApp; + productReference = 13B07F961A680F5B00A75B9A /* reactNativeApp.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -212,7 +211,7 @@ }; }; }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "blocks" */; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "reactNativeApp" */; compatibilityVersion = "Xcode 12.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -225,8 +224,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 13B07F861A680F5B00A75B9A /* blocks */, - 00E356ED1AD99517003FC87E /* blocksTests */, + 13B07F861A680F5B00A75B9A /* reactNativeApp */, + 00E356ED1AD99517003FC87E /* reactNativeAppTests */, ); }; /* End PBXProject section */ @@ -265,116 +264,116 @@ shellPath = /bin/sh; shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; }; - 0D363978AAE4AD4B76CFD2D8 /* [CP] Embed Pods Frameworks */ = { + 050C365D46608ADA1696AA00 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-blocks/Pods-blocks-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-reactNativeApp-reactNativeAppTests/Pods-reactNativeApp-reactNativeAppTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-blocks/Pods-blocks-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-reactNativeApp-reactNativeAppTests/Pods-reactNativeApp-reactNativeAppTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-blocks/Pods-blocks-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-reactNativeApp-reactNativeAppTests/Pods-reactNativeApp-reactNativeAppTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 0E4AEFA3A987D5CDCE978EB9 /* [CP] Check Pods Manifest.lock */ = { + 5BEBA4A5B8246FF523A1EE96 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-reactNativeApp-reactNativeAppTests/Pods-reactNativeApp-reactNativeAppTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-blocks-blocksTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-reactNativeApp-reactNativeAppTests/Pods-reactNativeApp-reactNativeAppTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-reactNativeApp-reactNativeAppTests/Pods-reactNativeApp-reactNativeAppTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 872CBFE24A03B7527EB774C4 /* [CP] Copy Pods Resources */ = { + B73B85388D522C9679DE35C2 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-blocks-blocksTests/Pods-blocks-blocksTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-blocks-blocksTests/Pods-blocks-blocksTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-reactNativeApp-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-blocks-blocksTests/Pods-blocks-blocksTests-resources.sh\"\n"; + 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"; showEnvVarsInLog = 0; }; - 95B2CE1479A0DBCB51353421 /* [CP] Embed Pods Frameworks */ = { + BE00DD6A992614E2E2A3D21F /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-blocks-blocksTests/Pods-blocks-blocksTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-reactNativeApp/Pods-reactNativeApp-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-blocks-blocksTests/Pods-blocks-blocksTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-reactNativeApp/Pods-reactNativeApp-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-blocks-blocksTests/Pods-blocks-blocksTests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-reactNativeApp/Pods-reactNativeApp-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 9FCAF4A7199DD1EF0C34F6AA /* [CP] Copy Pods Resources */ = { + CFC168BF34B71F7C32988205 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-blocks/Pods-blocks-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-blocks/Pods-blocks-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-reactNativeApp-reactNativeAppTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-blocks/Pods-blocks-resources.sh\"\n"; + 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"; showEnvVarsInLog = 0; }; - C5E4058E83972C981C227817 /* [CP] Check Pods Manifest.lock */ = { + F0211C5CB91270A3E469B538 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-reactNativeApp/Pods-reactNativeApp-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-blocks-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-reactNativeApp/Pods-reactNativeApp-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-reactNativeApp/Pods-reactNativeApp-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; FD10A7F022414F080027D42C /* Start Packager */ = { @@ -403,7 +402,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 00E356F31AD99517003FC87E /* blocksTests.m in Sources */, + 00E356F31AD99517003FC87E /* reactNativeAppTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -421,7 +420,7 @@ /* Begin PBXTargetDependency section */ 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* blocks */; + target = 13B07F861A680F5B00A75B9A /* reactNativeApp */; targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -429,15 +428,15 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D27804E1311B8D6561D0B38B /* Pods-blocks-blocksTests.debug.xcconfig */; + baseConfigurationReference = 3F0A05C6EEDEA6EBE97CC217 /* Pods-reactNativeApp-reactNativeAppTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); - INFOPLIST_FILE = blocksTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + INFOPLIST_FILE = reactNativeAppTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -450,18 +449,18 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/blocks.app/blocks"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/reactNativeApp.app/reactNativeApp"; }; name = Debug; }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D6A0513F02FF7B1ADD4FB4ED /* Pods-blocks-blocksTests.release.xcconfig */; + baseConfigurationReference = BC17F0DE4CD71E4AB1C7AE79 /* Pods-reactNativeApp-reactNativeAppTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = blocksTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + INFOPLIST_FILE = reactNativeAppTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -474,19 +473,20 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/blocks.app/blocks"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/reactNativeApp.app/reactNativeApp"; }; name = Release; }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E6D4928FB8760D74373E5AF6 /* Pods-blocks.debug.xcconfig */; + baseConfigurationReference = 93B41420B7B339662CE9E5BD /* Pods-reactNativeApp.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A62L5AV4U6; ENABLE_BITCODE = NO; - INFOPLIST_FILE = blocks/Info.plist; + INFOPLIST_FILE = reactNativeApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -497,21 +497,22 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = blocks; + PRODUCT_NAME = reactNativeApp; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 42D2C4F4FDB6A80C4DF53C51 /* Pods-blocks.release.xcconfig */; + baseConfigurationReference = 2918840B34DCE86CE1C24C10 /* Pods-reactNativeApp.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; - INFOPLIST_FILE = blocks/Info.plist; + INFOPLIST_FILE = reactNativeApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -522,8 +523,9 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = blocks; + PRODUCT_NAME = reactNativeApp; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -561,7 +563,7 @@ COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -577,12 +579,13 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", ); LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", "\"$(inherited)\"", @@ -626,7 +629,7 @@ COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -635,12 +638,13 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", ); LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", "\"$(inherited)\"", @@ -654,7 +658,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "blocksTests" */ = { + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "reactNativeAppTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 00E356F61AD99517003FC87E /* Debug */, @@ -663,7 +667,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "blocks" */ = { + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "reactNativeApp" */ = { isa = XCConfigurationList; buildConfigurations = ( 13B07F941A680F5B00A75B9A /* Debug */, @@ -672,7 +676,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "blocks" */ = { + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "reactNativeApp" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA201A601CBA00E9B192 /* Debug */, diff --git a/ios/blocks.xcodeproj/xcshareddata/xcschemes/blocks.xcscheme b/ios/reactNativeApp.xcodeproj/xcshareddata/xcschemes/reactNativeApp.xcscheme similarity index 79% rename from ios/blocks.xcodeproj/xcshareddata/xcschemes/blocks.xcscheme rename to ios/reactNativeApp.xcodeproj/xcshareddata/xcschemes/reactNativeApp.xcscheme index 71bf601..dc74d10 100644 --- a/ios/blocks.xcodeproj/xcshareddata/xcschemes/blocks.xcscheme +++ b/ios/reactNativeApp.xcodeproj/xcshareddata/xcschemes/reactNativeApp.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "reactNativeApp.app" + BlueprintName = "reactNativeApp" + ReferencedContainer = "container:reactNativeApp.xcodeproj"> @@ -33,9 +33,9 @@ + BuildableName = "reactNativeAppTests.xctest" + BlueprintName = "reactNativeAppTests" + ReferencedContainer = "container:reactNativeApp.xcodeproj"> @@ -55,9 +55,9 @@ + BuildableName = "reactNativeApp.app" + BlueprintName = "reactNativeApp" + ReferencedContainer = "container:reactNativeApp.xcodeproj"> @@ -72,9 +72,9 @@ + BuildableName = "reactNativeApp.app" + BlueprintName = "reactNativeApp" + ReferencedContainer = "container:reactNativeApp.xcodeproj"> diff --git a/ios/blocks.xcworkspace/contents.xcworkspacedata b/ios/reactNativeApp.xcworkspace/contents.xcworkspacedata similarity index 78% rename from ios/blocks.xcworkspace/contents.xcworkspacedata rename to ios/reactNativeApp.xcworkspace/contents.xcworkspacedata index 463f556..5d928b6 100644 --- a/ios/blocks.xcworkspace/contents.xcworkspacedata +++ b/ios/reactNativeApp.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:reactNativeApp.xcodeproj"> diff --git a/ios/reactNativeApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/reactNativeApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/reactNativeApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/blocks/AppDelegate.h b/ios/reactNativeApp/AppDelegate.h similarity index 100% rename from ios/blocks/AppDelegate.h rename to ios/reactNativeApp/AppDelegate.h diff --git a/ios/blocks/AppDelegate.m b/ios/reactNativeApp/AppDelegate.m similarity index 99% rename from ios/blocks/AppDelegate.m rename to ios/reactNativeApp/AppDelegate.m index 30ad257..afe0945 100644 --- a/ios/blocks/AppDelegate.m +++ b/ios/reactNativeApp/AppDelegate.m @@ -33,7 +33,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge - moduleName:@"blocks" + moduleName:@"reactNativeApp" initialProperties:nil]; if (@available(iOS 13.0, *)) { diff --git a/ios/reactNativeApp/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/reactNativeApp/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..8121323 --- /dev/null +++ b/ios/reactNativeApp/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,53 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/blocks/Images.xcassets/Contents.json b/ios/reactNativeApp/Images.xcassets/Contents.json similarity index 100% rename from ios/blocks/Images.xcassets/Contents.json rename to ios/reactNativeApp/Images.xcassets/Contents.json diff --git a/ios/blocks/Info.plist b/ios/reactNativeApp/Info.plist similarity index 94% rename from ios/blocks/Info.plist rename to ios/reactNativeApp/Info.plist index e81c687..a82b89b 100644 --- a/ios/blocks/Info.plist +++ b/ios/reactNativeApp/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - blocks + reactNativeApp CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -48,6 +48,7 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown UIViewControllerBasedStatusBarAppearance diff --git a/ios/blocks/LaunchScreen.storyboard b/ios/reactNativeApp/LaunchScreen.storyboard similarity index 100% rename from ios/blocks/LaunchScreen.storyboard rename to ios/reactNativeApp/LaunchScreen.storyboard diff --git a/ios/blocks/main.m b/ios/reactNativeApp/main.m similarity index 100% rename from ios/blocks/main.m rename to ios/reactNativeApp/main.m diff --git a/ios/blocksTests/Info.plist b/ios/reactNativeAppTests/Info.plist similarity index 100% rename from ios/blocksTests/Info.plist rename to ios/reactNativeAppTests/Info.plist diff --git a/ios/blocksTests/blocksTests.m b/ios/reactNativeAppTests/reactNativeAppTests.m similarity index 95% rename from ios/blocksTests/blocksTests.m rename to ios/reactNativeAppTests/reactNativeAppTests.m index 493638e..8d95364 100644 --- a/ios/blocksTests/blocksTests.m +++ b/ios/reactNativeAppTests/reactNativeAppTests.m @@ -7,11 +7,11 @@ #define TIMEOUT_SECONDS 600 #define TEXT_TO_LOOK_FOR @"Welcome to React" -@interface blocksTests : XCTestCase +@interface reactNativeAppTests : XCTestCase @end -@implementation blocksTests +@implementation reactNativeAppTests - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test { diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..4ee5f16 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,4 @@ +module.exports = { + preset: 'react-native', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], +}; diff --git a/metro.config.js b/metro.config.js index e91aba9..ae63118 100644 --- a/metro.config.js +++ b/metro.config.js @@ -5,13 +5,25 @@ * @format */ -module.exports = { - transformer: { - getTransformOptions: async () => ({ - transform: { - experimentalImportSupport: false, - inlineRequires: true, - }, - }), - }, -}; +const {getDefaultConfig} = require('metro-config'); + +module.exports = (async () => { + const { + resolver: {sourceExts, assetExts}, + } = await getDefaultConfig(); + return { + transformer: { + getTransformOptions: async () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: false, + }, + }), + babelTransformerPath: require.resolve('react-native-svg-transformer'), + }, + resolver: { + assetExts: assetExts.filter(ext => ext !== 'svg'), + sourceExts: [...sourceExts, 'svg'], + }, + }; +})(); diff --git a/package.json b/package.json index f0aa9af..90a36da 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,69 @@ { - "name": "blocks", + "name": "reactNativeApp", "version": "0.0.1", - "private": true, + "license": "MIT", + "private": false, "scripts": { - "android": "react-native run-android", "ios": "react-native run-ios", + "and": "react-native run-android", + "web": "webpack serve --config ./webpack.dev.js --mode development", + "web:prod": "webpack serve --config ./webpack.dev.js --mode production", + "web:build": "webpack --config webpack.prod.js --mode production", "start": "react-native start", "test": "jest", - "lint": "eslint ." + "lint": "eslint .", + "pods": "pod install --project-directory=ios" }, "dependencies": { - "react": "17.0.1", - "react-native": "0.64.0" + "@react-native-community/masked-view": "^0.1.11", + "@react-navigation/bottom-tabs": "^6.0.7", + "@react-navigation/devtools": "^6.0.1", + "@react-navigation/native": "^6.0.4", + "@react-navigation/native-stack": "^6.2.2", + "@react-navigation/stack": "^6.0.9", + "react": "17.0.2", + "react-dom": "17.0.2", + "react-native": "0.66.4", + "react-native-gesture-handler": "^1.10.3", + "react-native-pager-view": "^5.4.9", + "react-native-reanimated": "^2.3.1", + "react-native-safe-area-context": "^3.3.2", + "react-native-screens": "^3.8.0", + "react-native-svg": "^12.1.0", + "react-native-web": "^0.17.5", + "react-native-web-hover": "^0.2.9" }, "devDependencies": { - "@babel/core": "^7.12.9", + "@babel/core": "^7.13.10", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/preset-env": "^7.13.10", + "@babel/preset-react": "^7.12.13", + "@babel/preset-typescript": "^7.13.0", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^2.0.0", + "@svgr/webpack": "^5.5.0", + "@types/jest": "^26.0.20", + "@types/react": "^17.0.3", + "@types/react-native": "^0.63.51", + "@types/react-test-renderer": "^17.0.1", "babel-jest": "^26.6.3", + "babel-loader": "^8.2.2", "eslint": "7.14.0", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.3.1", "jest": "^26.6.3", - "metro-react-native-babel-preset": "^0.64.0", - "react-test-renderer": "17.0.1" + "metro-react-native-babel-preset": "^0.66.2", + "react-native-flipper": "^0.105.0", + "react-native-svg-transformer": "^0.14.3", + "react-test-renderer": "17.0.2", + "typescript": "^4.2.3", + "webpack": "^5.25.0", + "webpack-cli": "^4.5.0", + "webpack-dev-server": "^3.11.2", + "webpack-merge": "^5.7.3" }, "jest": { "preset": "react-native" diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..5e2030c --- /dev/null +++ b/public/index.html @@ -0,0 +1,10 @@ + + + + + reactNativeApp + + +
+ + diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..0c1562c --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { + NavigationContainer, + useNavigationContainerRef, +} from '@react-navigation/native'; +import {RootStackScreen} from './navigation/Navigator'; +import {useColorScheme} from 'react-native'; +import {DarkTheme, LightTheme} from './components/Themes'; +import {SafeAreaProvider} from 'react-native-safe-area-context'; +import {useFlipper} from '@react-navigation/devtools'; + +const App = () => { + const scheme = useColorScheme(); + + const navigationRef = useNavigationContainerRef(); + useFlipper(navigationRef); + + return ( + + + + + + ); +}; + +export default App; diff --git a/src/Constants.ts b/src/Constants.ts new file mode 100644 index 0000000..9494d71 --- /dev/null +++ b/src/Constants.ts @@ -0,0 +1,3 @@ +export const Constants = { + maxWidth: 1000, +}; diff --git a/src/components/Button.tsx b/src/components/Button.tsx new file mode 100644 index 0000000..478da17 --- /dev/null +++ b/src/components/Button.tsx @@ -0,0 +1,69 @@ +import {useTheme} from '@react-navigation/native'; +import React from 'react'; +import { + GestureResponderEvent, + StyleProp, + StyleSheet, + ViewStyle, + View, +} from 'react-native'; +import {Pressable} from 'react-native-web-hover'; +import Text from './Text'; +import {Theme} from './Themes'; + +type Props = { + title: string; + style?: StyleProp; + onPress?: ((event: GestureResponderEvent) => void) | null | undefined; +}; + +const Button = (props: Props) => { + const {colors} = useTheme() as Theme; + return ( + + [ + styles.baseContainer, + {backgroundColor: colors.card}, + hovered && {backgroundColor: colors.hovered}, + pressed && [styles.buttonPressed, {backgroundColor: colors.pressed}], + ]}> + {props.title} + + + ); +}; + +const styles = StyleSheet.create({ + baseContainer: { + padding: 16, + borderRadius: 10, + alignContent: 'center', + justifyContent: 'center', + shadowColor: '#000000', + shadowRadius: 10, + shadowOpacity: 0.1, + shadowOffset: { + width: 0, + height: 0, + }, + }, + buttonPressed: { + shadowColor: '#000000', + shadowRadius: 3, + shadowOpacity: 0.1, + shadowOffset: { + width: 0, + height: 0, + }, + }, + text: { + fontSize: 15, + textAlign: 'center', + fontWeight: '500', + }, +}); + +export default Button; diff --git a/src/components/Card.tsx b/src/components/Card.tsx new file mode 100644 index 0000000..8934996 --- /dev/null +++ b/src/components/Card.tsx @@ -0,0 +1,66 @@ +import {useTheme} from '@react-navigation/native'; +import React from 'react'; +import {View, StyleSheet} from 'react-native'; +import ScalePressable from './ScalePressable'; +import Spacing from './Spacing'; +import {Theme} from './Themes'; + +type Props = { + fullBleed?: boolean; + children?: any; + onPress?: () => void; +}; + +const Card = (props: Props) => { + const {colors} = useTheme() as Theme; + + const renderCard = () => { + return ( + + + {props.children} + + + ); + }; + + if (props.onPress) { + return ( + + {renderCard()} + + ); + } else { + return renderCard(); + } +}; + +export default Card; + +const styles = StyleSheet.create({ + container: { + width: '100%', + alignContent: 'center', + justifyContent: 'center', + shadowColor: '#000000', + shadowRadius: 18, + shadowOpacity: 0.03, + shadowOffset: { + width: 0, + height: 0, + }, + }, +}); diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx new file mode 100644 index 0000000..0d7fcf8 --- /dev/null +++ b/src/components/Icon.tsx @@ -0,0 +1,229 @@ +import {useTheme} from '@react-navigation/native'; +import React from 'react'; +import {Platform, ViewStyle} from 'react-native'; + +import * as Icons from '../../assets/svg'; +import {Theme} from './Themes'; + +type Props = { + name?: IconNames; + size?: number; + color?: string; + style?: ViewStyle; +}; + +const Icon = ({name = 'edit', size = 25, color, style = {}}: Props) => { + const {colors} = useTheme() as Theme; + + const props: any = { + width: size, + height: size, + fill: color ? color : colors.text, + style, + }; + + switch (name) { + case 'action': + return ; + case 'add-s': + return ; + case 'add': + return ; + case 'add-person': + return ; + case 'arrow-right': + return ; + case 'back-ios': + return ; + case 'bar-back-android': + return ; + case 'bar-menu': + return ; + case 'block': + return ; + case 'bolt': + return ; + case 'calendar': + return ; + case 'camera': + return ; + case 'chart': + return ; + case 'check': + return ; + case 'check-circle': + return ; + case 'close': + return ; + case 'copy': + return ; + case 'delete': + return ; + case 'download': + return ; + case 'edit': + return ; + case 'emoji-add': + return ; + case 'feedback': + return ; + case 'file': + return ; + case 'file-audio': + return ; + case 'file-csv': + return ; + case 'file-file': + return ; + case 'file-pdf': + return ; + case 'file-text': + return ; + case 'file-video': + return ; + case 'file-zip': + return ; + case 'gif': + return ; + case 'heart': + return ; + case 'image': + return ; + case 'info': + return ; + case 'listen': + return ; + case 'notifications': + return ; + case 'notifications-off': + return ; + case 'person': + return ; + case 'person-circle': + return ; + case 'people': + return ; + case 'play': + return ; + case 'remove-s': + return ; + case 'remove': + return ; + case 'reply': + return ; + case 'restart': + return ; + case 'send': + return ; + case 'settings': + return ; + case 'share': + return Platform.OS === 'ios' ? ( + + ) : ( + + ); + default: + return ; + } +}; +export default Icon; + +export const IconList = [ + 'action', + 'add-person', + 'add-s', + 'add', + 'arrow-right', + 'back-ios', + 'bar-back-android', + 'bar-menu', + 'calendar', + 'camera', + 'chart', + 'check-circle', + 'check', + 'close', + 'copy', + 'delete', + 'download', + 'edit', + 'emoji-add', + 'feedback', + 'file-audio', + 'file-csv', + 'file-file', + 'file-pdf', + 'file-text', + 'file-video', + 'file-zip', + 'gif', + 'heart', + 'image', + 'info', + 'listen', + 'notifications-off', + 'notifications', + 'person-circle', + 'person', + 'play', + 'remove-s', + 'remove', + 'reply', + 'restart', + 'send', + 'settings', + 'share', +]; + +// Keep in alphabetical order +export type IconNames = + | 'action' + | 'add-person' + | 'add-s' + | 'add' + | 'arrow-right' + | 'back-ios' + | 'bar-back-android' + | 'bar-menu' + | 'block' + | 'bolt' + | 'calendar' + | 'camera' + | 'chart' + | 'check-circle' + | 'check' + | 'close' + | 'copy' + | 'delete' + | 'download' + | 'edit' + | 'emoji-add' + | 'feedback' + | 'file-audio' + | 'file-csv' + | 'file-file' + | 'file-pdf' + | 'file-text' + | 'file-video' + | 'file-zip' + | 'file' + | 'gif' + | 'give' + | 'heart' + | 'image' + | 'info' + | 'listen' + | 'notifications-off' + | 'notifications' + | 'person-circle' + | 'person' + | 'people' + | 'play' + | 'remove-s' + | 'remove' + | 'reply' + | 'restart' + | 'send' + | 'settings' + | 'share'; diff --git a/src/components/Loader.tsx b/src/components/Loader.tsx new file mode 100644 index 0000000..9cc95f3 --- /dev/null +++ b/src/components/Loader.tsx @@ -0,0 +1,16 @@ +import {useTheme} from '@react-navigation/native'; +import React from 'react'; +import {ActivityIndicator} from 'react-native'; +import {Theme} from './Themes'; + +type Props = { + color?: string; +}; + +const Loader = (props: Props) => { + const {colors} = useTheme() as Theme; + + return ; +}; + +export default Loader; diff --git a/src/components/Palette.ts b/src/components/Palette.ts new file mode 100644 index 0000000..6e55b46 --- /dev/null +++ b/src/components/Palette.ts @@ -0,0 +1,20 @@ +const Palette = { + white: '#FFFFFF', + gray25: '#FAFBFC', + gray50: '#F5F6F7', + gray75: '#F2F3F5', + gray100: '#EDEEF0', + gray200: '#C8CACF', + gray300: '#B8BABF', + gray400: '#999B9E', + gray500: '#747578', + gray600: '#525254', + gray700: '#434445', + gray800: '#323233', + gray900: '#222222', + gray950: '#161616', + black: '#000000', + brand: '#F48C06', +}; + +export default Palette; diff --git a/src/components/PressableIcon.tsx b/src/components/PressableIcon.tsx new file mode 100644 index 0000000..d98f3cd --- /dev/null +++ b/src/components/PressableIcon.tsx @@ -0,0 +1,47 @@ +import {useTheme} from '@react-navigation/native'; +import React from 'react'; +import {GestureResponderEvent, StyleSheet, View, ViewStyle} from 'react-native'; +import {Pressable} from 'react-native-web-hover'; +import Icon, {IconNames} from './Icon'; +import Text from './Text'; +import {Theme} from './Themes'; + +type Props = { + onPress: ((event: GestureResponderEvent) => void) | null; + name: IconNames; + color?: string; + disabled?: boolean; + size?: number; + style?: ViewStyle; +}; + +const PressableIcon = (props: Props) => { + const {colors} = useTheme() as Theme; + const {style = {}} = props; + const size = props.size ? props.size : 24; + return ( + + [ + styles.container, + {width: size + 16, height: size + 16}, + hovered && {backgroundColor: colors.hovered}, + pressed && {backgroundColor: colors.pressed}, + ]}> + + + + ); +}; + +export default PressableIcon; + +const styles = StyleSheet.create({ + container: { + alignContent: 'center', + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/components/ScalePressable.tsx b/src/components/ScalePressable.tsx new file mode 100644 index 0000000..c2f9aaa --- /dev/null +++ b/src/components/ScalePressable.tsx @@ -0,0 +1,70 @@ +import React, {useState} from 'react'; +import {Animated, ViewStyle, Pressable, View} from 'react-native'; + +type Props = { + style?: ViewStyle; + onPress: () => void; + children: any; +}; + +const ScalePressable = (props: Props) => { + const {style, children, onPress} = props; + + const [scaleInAnimated] = useState(new Animated.Value(0)); + + return ( + + { + Scale.pressInAnimation(scaleInAnimated); + }} + onPressOut={() => { + Scale.pressOutAnimation(scaleInAnimated); + }}> + + {children} + + + + ); +}; + +export default ScalePressable; + +const Scale = { + // this defines the terms of our scaling animation. + getScaleTransformationStyle(animated: Animated.Value) { + const scaleInterpolation = animated.interpolate({ + inputRange: [0, 1], + outputRange: [1, 0.98], + }); + const opacityInterpolation = animated.interpolate({ + inputRange: [0, 1], + outputRange: [1, 0.8], + }); + return { + opacity: opacityInterpolation, + transform: [{scale: scaleInterpolation}], + }; + }, + // This defines animation behavior we expext onPressIn + pressInAnimation(animated: Animated.Value, duration: number = 150) { + animated.setValue(0); + Animated.timing(animated, { + toValue: 1, + duration, + useNativeDriver: true, + }).start(); + }, + // This defines animatiom behavior we expect onPressOut + pressOutAnimation(animated: Animated.Value, duration: number = 150) { + animated.setValue(1); + Animated.timing(animated, { + toValue: 0, + duration, + useNativeDriver: true, + }).start(); + }, +}; diff --git a/src/components/Spacer.tsx b/src/components/Spacer.tsx new file mode 100644 index 0000000..cbaea9b --- /dev/null +++ b/src/components/Spacer.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import {View, ViewStyle} from 'react-native'; +import Spacing from './Spacing'; + +type Props = { + xxs?: boolean; + xs?: boolean; + s?: boolean; + m?: boolean; + l?: boolean; + xl?: boolean; + xxl?: boolean; + height?: number; + style?: ViewStyle; + horizontal?: boolean; +}; + +const Spacer = (props: Props) => { + const {style = {}, horizontal = false} = props; + + let space = Spacing.xxl; + if (props.height) { + space = props.height; + } else if (props.xxs) { + space = Spacing.xxs; + } else if (props.xs) { + space = Spacing.xs; + } else if (props.s) { + space = Spacing.s; + } else if (props.m) { + space = Spacing.m; + } else if (props.l) { + space = Spacing.l; + } else if (props.xl) { + space = Spacing.xl; + } else if (props.xxl) { + space = Spacing.xxl; + } + + return ( + + ); +}; + +export default Spacer; diff --git a/src/components/Spacing.ts b/src/components/Spacing.ts new file mode 100644 index 0000000..4804cc5 --- /dev/null +++ b/src/components/Spacing.ts @@ -0,0 +1,12 @@ +const Spacing = { + xxs: 2, + xs: 4, + s: 8, + m: 16, + l: 22, + xl: 36, + xxl: 52, + borderRadius: 12, +}; + +export default Spacing; diff --git a/src/components/Text.tsx b/src/components/Text.tsx new file mode 100644 index 0000000..49bf87a --- /dev/null +++ b/src/components/Text.tsx @@ -0,0 +1,60 @@ +import {useTheme} from '@react-navigation/native'; +import React from 'react'; +import {Text as RNText, TextStyle} from 'react-native'; +import {Theme} from './Themes'; + +type Props = { + p?: boolean; + h1?: boolean; + h2?: boolean; + style?: TextStyle; + children?: any; +}; + +const Text = (props: Props) => { + const {colors} = useTheme() as Theme; + const {p, h1, h2, style = {}} = props; + + const getSize = () => { + if (h1) { + return 22; + } else if (h2) { + return 13; + } + return 14; + }; + + const getColor = () => { + if (h2) { + return colors.textSecondary; + } + return colors.text; + }; + + const getLineHeight = () => { + if (p) { + return 22; + } + return undefined; + }; + + const getFontWeight = () => { + if (h1) { + return '800'; + } else if (h2) { + return '600'; + } + return '400'; + }; + + const textStyle: TextStyle = { + fontSize: getSize(), + color: getColor(), + lineHeight: getLineHeight(), + fontWeight: getFontWeight(), + }; + + return {props.children}; +}; + +export default Text; diff --git a/src/components/Themes.ts b/src/components/Themes.ts new file mode 100644 index 0000000..d852a4a --- /dev/null +++ b/src/components/Themes.ts @@ -0,0 +1,55 @@ +import { + DefaultTheme as NavigationDefault, + DarkTheme as NavigationDark, + Theme as NavigationTheme, +} from '@react-navigation/native'; +import Palette from './Palette'; + +export type Theme = { + colors: { + secondary: string; + tabBar: string; + hovered: string; + pressed: string; + inactive: string; + textSecondary: string; + }; +} & NavigationTheme; + +export const LightTheme: Theme = { + ...NavigationDefault, + colors: { + primary: Palette.brand, + secondary: Palette.gray200, + background: Palette.gray50, + card: Palette.white, + text: Palette.gray900, + border: Palette.white, + notification: Palette.brand, + + tabBar: Palette.white, + hovered: Palette.gray200, + pressed: Palette.gray75, + inactive: Palette.gray200, + textSecondary: Palette.gray400, + }, +}; + +export const DarkTheme: Theme = { + ...NavigationDark, + colors: { + primary: Palette.brand, + secondary: Palette.gray600, + background: Palette.black, + card: Palette.gray900, + text: Palette.gray100, + border: Palette.black, + notification: Palette.brand, + + tabBar: Palette.gray900, + hovered: Palette.gray700, + pressed: Palette.gray600, + inactive: Palette.gray500, + textSecondary: Palette.gray200, + }, +}; diff --git a/src/navigation/NavigationUtils/index.d.ts b/src/navigation/NavigationUtils/index.d.ts new file mode 100644 index 0000000..0b23cbe --- /dev/null +++ b/src/navigation/NavigationUtils/index.d.ts @@ -0,0 +1,15 @@ +import {StackNavigationState} from '@react-navigation/native'; +import {StackNavigationOptions} from '@react-navigation/stack'; +import {StackNavigationEventMap} from '@react-navigation/stack/lib/typescript/src/types'; + +declare function StackNavigator(): JSX.Element; + +export declare const createStackNavigator: < + ParamList extends Record, +>() => import('@react-navigation/native').TypedNavigator< + ParamList, + StackNavigationState>, + StackNavigationOptions, + StackNavigationEventMap, + typeof StackNavigator +>; diff --git a/src/navigation/NavigationUtils/index.native.ts b/src/navigation/NavigationUtils/index.native.ts new file mode 100644 index 0000000..0cff51f --- /dev/null +++ b/src/navigation/NavigationUtils/index.native.ts @@ -0,0 +1,3 @@ +import {createNativeStackNavigator as createStackNavigator} from '@react-navigation/native-stack'; + +export {createStackNavigator}; diff --git a/src/navigation/NavigationUtils/index.web.ts b/src/navigation/NavigationUtils/index.web.ts new file mode 100644 index 0000000..3549c6e --- /dev/null +++ b/src/navigation/NavigationUtils/index.web.ts @@ -0,0 +1,3 @@ +import {createStackNavigator} from '@react-navigation/stack'; + +export {createStackNavigator}; diff --git a/src/navigation/Navigator.tsx b/src/navigation/Navigator.tsx new file mode 100644 index 0000000..97f1ba7 --- /dev/null +++ b/src/navigation/Navigator.tsx @@ -0,0 +1,168 @@ +import React from 'react'; +import {Platform} from 'react-native'; + +import {createStackNavigator} from './NavigationUtils'; +import ModalScreen from '../screens/ModalScreen'; +import HomeScreen from '../screens/HomeScreen'; +import DetailScreen from '../screens/DetailScreen'; +import InfoScreen from '../screens/InfoScreen'; +import {useTheme} from '@react-navigation/native'; +import {Theme} from '../components/Themes'; +import AnimatedScreen from '../screens/AnimatedScreen'; +import PressableIcon from '../components/PressableIcon'; +import {createTabNavigator} from './TabNavigator'; + +const RootStack = createStackNavigator(); +const Tabs = createTabNavigator(); + +const FirstTabStack = createStackNavigator(); +const SecondTabStack = createStackNavigator(); +const ThirdTabStack = createStackNavigator(); + +const NavigationTabs = () => { + return ( + + + + + + + ); +}; + +const modalStackPresentationOptions = Platform.select({ + ios: { + presentation: 'formSheet', + headerHideShadow: true, + headerShown: false, + }, + android: { + stackPresentation: 'modal', + headerHideShadow: true, + headerShown: false, + }, + web: {headerShown: false}, +}); + +const FirstTab = () => { + const {colors} = useTheme() as Theme; + return ( + + + + ); +}; + +const SecondTab = () => { + const {colors} = useTheme() as Theme; + return ( + + + ({ + headerLeft: () => ( + navigation.goBack()} + size={20} + style={{marginStart: Platform.OS === 'web' ? 12 : 0}} + name={Platform.select({ + ios: 'back-ios', + default: 'bar-back-android', + })} + /> + ), + })} + /> + + ({ + headerLeft: () => ( + navigation.goBack()} + size={20} + style={{marginStart: Platform.OS === 'web' ? 12 : 0}} + name={Platform.select({ + ios: 'back-ios', + default: 'bar-back-android', + })} + /> + ), + })} + /> + + ); +}; + +const ThirdTab = () => { + const {colors} = useTheme() as Theme; + return ( + + + + ); +}; + +export const RootStackScreen = () => { + return ( + + + + + ); +}; diff --git a/src/navigation/TabBar.tsx b/src/navigation/TabBar.tsx new file mode 100644 index 0000000..75dbc9e --- /dev/null +++ b/src/navigation/TabBar.tsx @@ -0,0 +1,145 @@ +import React from 'react'; +import {StyleSheet, View, SafeAreaView, Platform} from 'react-native'; +import {Pressable} from 'react-native-web-hover'; +import { + BottomTabBarOptions, + BottomTabBarProps, +} from '@react-navigation/bottom-tabs'; +import Icon from '../components/Icon'; +import {useTheme} from '@react-navigation/native'; +import {Theme} from '../components/Themes'; +import Text from '../components/Text'; +import {Constants} from '../Constants'; +import Palette from '../components/Palette'; + +export const TabBar = ({ + state, + descriptors, + navigation, +}: BottomTabBarProps) => { + const {colors} = useTheme() as Theme; + const renderTabButton = (name: string, key: string, index: number) => { + const {options} = descriptors[key]; + const label = + options.tabBarLabel !== undefined + ? options.tabBarLabel + : options.title !== undefined + ? options.title + : name; + + const isFocused = state.index === index; + + const onPress = () => { + if (!isFocused) { + navigation.navigate(name); + } + }; + + const onLongPress = () => { + navigation.emit({ + type: 'tabLongPress', + target: key, + }); + }; + + let iconName = 'bolt'; + switch (label) { + case 'Home': + iconName = 'play'; + break; + case 'Details': + iconName = 'settings'; + break; + case 'Calendar': + iconName = 'camera'; + break; + case 'More': + iconName = 'listen'; + break; + default: + break; + } + + return ( + + [ + styles.pressibleContainer, + hovered && { + backgroundColor: + Platform.OS === 'web' ? colors.hovered : undefined, + }, + pressed && { + backgroundColor: + Platform.OS === 'web' ? colors.pressed : undefined, + }, + ]}> + {Platform.OS !== 'web' && ( + + )} + {Platform.OS === 'web' && ( + + {label} + + )} + + {Platform.OS === 'web' && ( + + )} + + ); + }; + + return ( + + + {state.routes.map((route, index) => + renderTabButton(route.name, route.key, index), + )} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flexDirection: 'row', + justifyContent: 'center', + }, + buttonContainer: { + flex: 1, + maxWidth: Constants.maxWidth, + justifyContent: 'center', + alignItems: 'center', + flexDirection: 'row', + }, + pressibleContainer: { + height: 54, + borderRadius: 10, + marginVertical: 6, + alignContent: 'center', + alignItems: 'center', + justifyContent: 'center', + }, +}); diff --git a/src/navigation/TabNavigator.tsx b/src/navigation/TabNavigator.tsx new file mode 100644 index 0000000..83da338 --- /dev/null +++ b/src/navigation/TabNavigator.tsx @@ -0,0 +1,91 @@ +import * as React from 'react'; +import {Platform, StyleProp, View, ViewStyle} from 'react-native'; +import { + useNavigationBuilder, + TabRouter, + DefaultNavigatorOptions, + TabRouterOptions, + TabNavigationState, + ParamListBase, + TabActionHelpers, + createNavigatorFactory, +} from '@react-navigation/native'; +import {TabBar} from './TabBar'; + +// Props accepted by the view +type TabNavigationConfig = { + tabBarStyle: StyleProp; + contentStyle: StyleProp; +}; + +// Supported screen options +type TabNavigationOptions = { + title?: string; +}; + +// Map of event name and the type of data (in event.data) +// +// canPreventDefault: true adds the defaultPrevented property to the +// emitted events. +type TabNavigationEventMap = { + tabPress: { + data: {isAlreadyFocused: boolean}; + canPreventDefault: true; + }; +}; + +// The props accepted by the component is a combination of 3 things +type Props = DefaultNavigatorOptions & + TabRouterOptions & + TabNavigationConfig; + +function TabNavigator({ + initialRouteName, + children, + screenOptions, + tabBarStyle, + contentStyle, +}: Props) { + const {state, navigation, descriptors} = useNavigationBuilder< + TabNavigationState, + TabRouterOptions, + TabActionHelpers, + TabNavigationOptions, + TabNavigationEventMap + >(TabRouter, { + children, + screenOptions, + initialRouteName, + }); + + const top = Platform.OS === 'web'; + + return ( + + {top && ( + + )} + + {descriptors[state.routes[state.index].key].render()} + + {!top && ( + + )} + + ); +} + +export const createTabNavigator = createNavigatorFactory< + TabNavigationState, + TabNavigationOptions, + TabNavigationEventMap, + typeof TabNavigator +>(TabNavigator); diff --git a/src/screens/AnimatedScreen.tsx b/src/screens/AnimatedScreen.tsx new file mode 100644 index 0000000..bdfd675 --- /dev/null +++ b/src/screens/AnimatedScreen.tsx @@ -0,0 +1,101 @@ +import React, {useEffect, useState} from 'react'; +import {Animated, Easing, ScrollView, StyleSheet, View} from 'react-native'; + +import Icon from '../components/Icon'; +import Palette from '../components/Palette'; +import PressableIcon from '../components/PressableIcon'; +import Spacer from '../components/Spacer'; +import Text from '../components/Text'; +import {Constants} from '../Constants'; + +const PulsingIcon = () => { + const [animatedValue] = useState(new Animated.Value(1)); + useEffect(() => { + Animated.loop( + Animated.sequence([ + Animated.timing(animatedValue, { + toValue: 0.6, + duration: 2000, + easing: Easing.inOut(Easing.ease), + useNativeDriver: true, + }), + Animated.timing(animatedValue, { + toValue: 1, + duration: 2000, + easing: Easing.inOut(Easing.ease), + useNativeDriver: true, + }), + ]), + ).start(); + }, [animatedValue]); + + return ( + + + + ); +}; + +const AnimatedScreen = () => { + return ( + + + Icon + + + + Animated Icon + + + + Icon Row + + + + + + + + + + + + PressableIcon + + + {}} /> + + {}} /> + + {}} /> + + {}} /> + + + + ); +}; + +export default AnimatedScreen; + +const styles = StyleSheet.create({ + container: { + alignContent: 'center', + alignItems: 'center', + justifyContent: 'center', + margin: 32, + }, + content: { + width: '100%', + maxWidth: Constants.maxWidth, + alignContent: 'center', + alignItems: 'center', + justifyContent: 'center', + paddingBottom: 36, + }, +}); diff --git a/src/screens/DetailScreen.tsx b/src/screens/DetailScreen.tsx new file mode 100644 index 0000000..9414beb --- /dev/null +++ b/src/screens/DetailScreen.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import {StyleSheet, ScrollView} from 'react-native'; + +import Button from '../components/Button'; +import Card from '../components/Card'; +import Loader from '../components/Loader'; +import Spacer from '../components/Spacer'; +import Text from '../components/Text'; + +const DetailScreen = ({navigation}: {navigation: any}) => { + return ( + + + + + + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam neque + odio, iaculis id tempus id, egestas at ipsum. Nulla ullamcorper + hendrerit arcu. In quis diam id felis finibus facilisis. Maecenas + pretium quis lorem et molestie. Curabitur convallis, mi at laoreet + semper, ante sapien vestibulum arcu, quis laoreet dui quam non tellus. + Maecenas eget auctor nunc, quis auctor tellus. Donec nec orci sit amet + quam dapibus fringilla. Maecenas ultricies eget lorem suscipit + aliquet. + + +