# All files / text Text.js

100% Statements 5/5
100% Branches 20/20
100% Functions 1/1
100% Lines 5/5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60

    17x

    17x
    7x

    7x

    17x

     import PropTypes from 'prop-types';
    import React from 'react';
    import { Text, StyleSheet, Platform } from 'react-native';
    import fonts from '../config/fonts';
    import normalize from '../helpers/normalizeText';

    const styles = StyleSheet.create({
      text: {
        ...Platform.select({
          android: {
            ...fonts.android.regular,
          },
        }),
      },
      bold: {
        ...Platform.select({
          android: {
            ...fonts.android.bold,
          },
        }),
      },
    });

    const TextElement = props => {
      const { style, children, h1, h2, h3, h4, fontFamily, ...rest } = props;

      return (
        <Text
          style={[
            styles.text,
            h1 && { fontSize: normalize(40) },
            h2 && { fontSize: normalize(34) },
            h3 && { fontSize: normalize(28) },
            h4 && { fontSize: normalize(22) },
            h1 && styles.bold,
            h2 && styles.bold,
            h3 && styles.bold,
            h4 && styles.bold,
            fontFamily && { fontFamily },
            style && style,
          ]}
          {...rest}
        >
          {children}
        </Text>
      );
    };

    TextElement.propTypes = {
      style: PropTypes.any,
      h1: PropTypes.bool,
      h2: PropTypes.bool,
      h3: PropTypes.bool,
      h4: PropTypes.bool,
      fontFamily: PropTypes.string,
      children: PropTypes.any,
    };

    export default TextElement;