import React from 'react' import { StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' import AppText from './app-text' import { Sizes, Spacing, Typography } from '../../styles' const Table = ({ tableContent }) => { return ( tableContent.map((rowContent, i) => <Row key={i} rowContent={rowContent} />) ) } Table.propTypes = { tableContent: PropTypes.array.isRequired } const Row = ({ rowContent }) => { return( <View style={styles.row}> <Cell content={rowContent[0]} isLeft /> <Cell content={rowContent[1]} /> </View> ) } Row.propTypes = { rowContent: PropTypes.array.isRequired } const Cell = ({ content, isLeft }) => { const styleContainer = isLeft ? styles.cellLeft : styles.cellRight const styleText = isLeft ? styles.accentPurpleBig : styles.accentOrange const numberOfLines = isLeft ? 1 : 2 const ellipsizeMode = isLeft ? 'clip' : 'tail' return( <View style={styleContainer}> <AppText numberOfLines={numberOfLines} ellipsizeMode={ellipsizeMode} style={styleText} > {content} </AppText> </View> ) } Cell.propTypes = { content: PropTypes.node.isRequired, isLeft: PropTypes.bool, } const styles = StyleSheet.create({ accentOrange: { ...Typography.accentOrange, fontSize: Sizes.small, }, accentPurpleBig: { ...Typography.accentPurpleBig, marginRight: Spacing.small, }, cellLeft: { alignItems: 'flex-end', flex: 5, justifyContent: 'center', }, cellRight: { flex: 6, justifyContent: 'center', }, row: { flexDirection: 'row', marginBottom: Spacing.tiny, } }) export default Table