From 6b393b27e18e663d39b66fd121ee302bce29d77d Mon Sep 17 00:00:00 2001 From: cpojer Date: Wed, 8 May 2019 14:50:55 -0700 Subject: [PATCH] Polish the new app screen (#24737) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: Continuation of #24687 > Issue: [Polish the "new app screen"](https://github.com/react-native-community/discussions-and-proposals/issues/122) > This is the pull request for the new intro screen proposal in react native as directed by cpojer This PR was created because the previous one could not be pushed to for some reason. I cleaned up a few small things and added the component as an example to RNTester so we can keep iterating. My plan is to land this, and then polish it and make it the default in a follow-up. [General][Added] - New Intro screen, Icons Removed Lottie Integration 100% React Native 💥 Pull Request resolved: https://github.com/facebook/react-native/pull/24737 Differential Revision: D15259092 Pulled By: cpojer fbshipit-source-id: bc141fb1425cf354f29deffd907c37f83fd92c75 --- Libraries/NewAppScreen/components/Colors.js | 20 +++ Libraries/NewAppScreen/components/Header.js | 56 +++++++ .../NewAppScreen/components/LearnMoreLinks.js | 109 ++++++++++++++ Libraries/NewAppScreen/components/logo.png | Bin 0 -> 24031 bytes Libraries/NewAppScreen/index.js | 139 ++++++++++++++++++ RNTester/js/NewAppScreenExample.js | 26 ++++ RNTester/js/RNTesterList.android.js | 4 + RNTester/js/RNTesterList.ios.js | 5 + 8 files changed, 359 insertions(+) create mode 100644 Libraries/NewAppScreen/components/Colors.js create mode 100644 Libraries/NewAppScreen/components/Header.js create mode 100644 Libraries/NewAppScreen/components/LearnMoreLinks.js create mode 100644 Libraries/NewAppScreen/components/logo.png create mode 100644 Libraries/NewAppScreen/index.js create mode 100644 RNTester/js/NewAppScreenExample.js diff --git a/Libraries/NewAppScreen/components/Colors.js b/Libraries/NewAppScreen/components/Colors.js new file mode 100644 index 00000000000..512d5bd79ac --- /dev/null +++ b/Libraries/NewAppScreen/components/Colors.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +'use strict'; + +export default { + primary: '#1292B4', + white: '#FFF', + lighter: '#F3F3F3', + light: '#DAE1E7', + dark: '#444', + black: '#000', +}; diff --git a/Libraries/NewAppScreen/components/Header.js b/Libraries/NewAppScreen/components/Header.js new file mode 100644 index 00000000000..31b159a576d --- /dev/null +++ b/Libraries/NewAppScreen/components/Header.js @@ -0,0 +1,56 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +'use strict'; + +import React from 'react'; +import {View, Text, StyleSheet, ImageBackground} from 'react-native'; +import Colors from './Colors'; + +const Header = () => ( + + + + Welcome to React Native + +); + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + justifyContent: 'center', + paddingTop: 100, + paddingBottom: 40, + paddingHorizontal: 32, + backgroundColor: Colors.lighter, + }, + backgroundLogo: { + position: 'absolute', + top: -20, + left: -200, + opacity: 0.2, + alignItems: 'center', + justifyContent: 'center', + height: 540, + width: 540, + }, + text: { + fontSize: 40, + fontWeight: '600', + textAlign: 'center', + color: Colors.black, + }, +}); + +export default Header; diff --git a/Libraries/NewAppScreen/components/LearnMoreLinks.js b/Libraries/NewAppScreen/components/LearnMoreLinks.js new file mode 100644 index 00000000000..6b9cab65cfe --- /dev/null +++ b/Libraries/NewAppScreen/components/LearnMoreLinks.js @@ -0,0 +1,109 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +'use strict'; + +import React from 'react'; +import {View, Text, StyleSheet, TouchableOpacity, Linking} from 'react-native'; +import Colors from './Colors'; + +const links = [ + { + title: 'The Basics', + link: 'https://facebook.github.io/react-native/docs/tutorial', + description: + 'Read the docs on what to do once seen how to work in React Native.', + }, + { + title: 'Style', + link: 'https://facebook.github.io/react-native/docs/style', + description: 'All of the core components accept a prop named style.', + }, + { + title: 'Layout', + link: 'https://facebook.github.io/react-native/docs/flexbox', + description: + 'A component can specify the layout of its children using the flexbox specification.', + }, + { + title: 'Components', + link: 'https://facebook.github.io/react-native/docs/components-and-apis', + description: 'The full list of components and APIs inside React Native.', + }, + { + title: 'Navigation', + link: 'https://facebook.github.io/react-native/docs/navigation', + description: + 'How to handle moving between screens inside your application.', + }, + { + title: 'Networking', + link: 'https://facebook.github.io/react-native/docs/network', + description: 'How to use the Fetch API in React Native.', + }, + { + title: 'Help', + link: 'https://facebook.github.io/react-native/help', + description: + 'Need more help? There are many other React Native developers who may have the answer.', + }, +]; + +const LinkList = () => ( + + {links.map((item, index) => { + return ( + + + Linking.openURL(item.link)} + style={styles.linkContainer}> + {item.title} + {item.description} + + + ); + })} + +); + +const styles = StyleSheet.create({ + container: { + marginTop: 32, + paddingHorizontal: 24, + }, + linkContainer: { + flexWrap: 'wrap', + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + paddingVertical: 8, + }, + link: { + flex: 2, + fontSize: 18, + fontWeight: '400', + color: Colors.primary, + }, + description: { + flex: 3, + paddingVertical: 16, + fontWeight: '400', + fontSize: 18, + color: Colors.dark, + }, + separator: { + backgroundColor: Colors.light, + height: 1, + }, +}); + +export default LinkList; diff --git a/Libraries/NewAppScreen/components/logo.png b/Libraries/NewAppScreen/components/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc42891300a2f2b591e95cb5adfaeba7b4cee23 GIT binary patch literal 24031 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 a ( + {children} +); + +const ReloadInstructions = () => { + return Platform.OS === 'ios' ? ( + + Press Cmd+R in the simulator to + reload your app's code + + ) : ( + + Double tap R on your keyboard to + reload your app's code + + ); +}; + +const DebugInstructions = () => { + return Platform.OS === 'ios' ? ( + + Press Cmd+D in the simulator or{' '} + Shake your device to open the React + Native debug menu. + + ) : ( + + Press menu button or + Shake your device to open the React + Native debug menu. + + ); +}; + +const App = () => { + return ( + + + + + + +
+ +
+ Step One + + Edit App.js to change this + screen and then come back to see your edits. + +
+ +
+ See Your Changes + + + +
+ +
+ Debug + +
+ +
+ Learn More + + Read the docs on what to do once seen how to work in React + Native. + +
+ +
+ + + + ); +}; + +const styles = StyleSheet.create({ + sectionContainer: { + marginTop: 32, + paddingHorizontal: 24, + }, + topSafeArea: { + flex: 0, + backgroundColor: Colors.lighter, + }, + bottomSafeArea: { + flex: 1, + backgroundColor: Colors.white, + }, + body: { + backgroundColor: Colors.white, + }, + sectionTitle: { + fontSize: 24, + fontWeight: '600', + color: Colors.black, + }, + sectionDescription: { + marginTop: 8, + fontSize: 18, + fontWeight: '400', + color: Colors.dark, + }, + highlight: { + fontWeight: '700', + }, +}); + +export default App; diff --git a/RNTester/js/NewAppScreenExample.js b/RNTester/js/NewAppScreenExample.js new file mode 100644 index 00000000000..142aac3b8ba --- /dev/null +++ b/RNTester/js/NewAppScreenExample.js @@ -0,0 +1,26 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +'use strict'; + +const React = require('react'); +const NewAppScreen = require('../../Libraries/NewAppScreen').default; + +exports.title = 'New App Screen'; +exports.description = 'Displays the content of the new app screen'; +exports.examples = [ + { + title: 'New App Screen', + description: 'Displays the content of the new app screen', + render(): React.Element { + return ; + }, + }, +]; diff --git a/RNTester/js/RNTesterList.android.js b/RNTester/js/RNTesterList.android.js index c982f278784..db60069b1e2 100644 --- a/RNTester/js/RNTesterList.android.js +++ b/RNTester/js/RNTesterList.android.js @@ -41,6 +41,10 @@ const ComponentExamples: Array = [ key: 'MultiColumnExample', module: require('./MultiColumnExample'), }, + { + key: 'NewAppScreenExample', + module: require('./NewAppScreenExample'), + }, { key: 'PickerExample', module: require('./PickerExample'), diff --git a/RNTester/js/RNTesterList.ios.js b/RNTester/js/RNTesterList.ios.js index b5d38ee0c11..a221ed9dccf 100644 --- a/RNTester/js/RNTesterList.ios.js +++ b/RNTester/js/RNTesterList.ios.js @@ -73,6 +73,11 @@ const ComponentExamples: Array = [ module: require('./MultiColumnExample'), supportsTVOS: true, }, + { + key: 'NewAppScreenExample', + module: require('./NewAppScreenExample'), + supportsTVOS: false, + }, { key: 'PickerExample', module: require('./PickerExample'),