UNPKG

generator-rn-toolbox

Version:

React-Native generators to kickstart your project

78 lines (70 loc) 1.85 kB
// @flow import React, { Component } from 'react'; import { StyleSheet, View, Image, Text, ActivityIndicator } from 'react-native'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import { Page, Touchable } from 'components'; import theme from 'theme'; type Props = { user: ?Object, onPress: ?Function, }; class ProfileHeader extends Component<void, Props, void> { render() { const { user } = this.props; return ( <View style={styles.container}> <Touchable onPress={this.props.onPress} useOpacity> <View style={styles.imageContainer}> <Image source={theme.images.defaultUserImage} style={styles.userImage} /> <View style={styles.imageOverlay}> {user ? <Icon name="pencil" color="white" size={25} /> : <ActivityIndicator style={{ alignSelf: 'center' }} color="white" />} </View> </View> </Touchable> {user && <View> <Text style={styles.name}> {user.firstName} {user.lastName} </Text> </View>} </View> ); } } const styles = StyleSheet.create({ container: { backgroundColor: theme.colors.primary, alignSelf: 'stretch', alignItems: 'center', paddingVertical: 16, }, imageContainer: { marginHorizontal: Page.DEFAULT_PADDING, }, userImage: { height: 70, width: 70, borderRadius: 35, borderWidth: 2, borderColor: 'white', }, name: { color: 'white', marginTop: 10, fontSize: 18, textAlign: 'center', }, imageOverlay: { position: 'absolute', top: 0, height: 70, width: 70, borderRadius: 35, backgroundColor: '#00000055', justifyContent: 'center', alignItems: 'center', }, }); export default ProfileHeader;