import React from 'react'
import PropTypes from 'prop-types'
import { StyleSheet, TouchableOpacity } from 'react-native'

import AppText from './app-text'

import { Colors, Fonts, Spacing } from '../../styles/redesign'

const Button = ({ children, isCTA, isSmall, onPress, testID }) => {
  const buttonStyle = isCTA ? styles.cta : styles.regular
  const textCTA = isCTA ? styles.buttonTextBold : styles.buttonTextRegular
  const textStyle = isSmall ? [ textCTA, textSmall ] : [textCTA, text]

  return (
    <TouchableOpacity onPress={onPress} style={buttonStyle} testID={testID}>
      <AppText style={textStyle}>{children}</AppText>
    </TouchableOpacity>
  )
}

Button.propTypes = {
  children: PropTypes.node,
  isCTA: PropTypes.bool,
  isSmall: PropTypes.bool,
  onPress: PropTypes.func,
  testID: PropTypes.string
}

const text = {
  padding: Spacing.base,
  textTransform: 'uppercase'
}

const textSmall = {
  fontSize: Fonts.small,
  padding: Spacing.small,
  textTransform: 'uppercase'
}

const button = {
  alignItems: 'center',
  justifyContent: 'center',
  margin: Spacing.base
}

const styles = StyleSheet.create({
  regular: {
    ...button
  },
  cta: {
    backgroundColor: Colors.orange,
    borderRadius: 25,
    ...button
  },
  buttonTextBold: {
    color: 'white',
    fontFamily: Fonts.bold
  },
  buttonTextRegular: {
    color: Colors.greyDark,
    fontFamily: Fonts.main
  }
})

export default Button