ImageBGCard.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { StyleSheet, Text, ImageBackground, TouchableOpacity } from 'react-native'
  2. import React from 'react'
  3. import LinearGradient from 'react-native-linear-gradient'
  4. import { horizontalScale, moderateScale, verticalScale } from '../../../constants/metrics'
  5. import colors from '../../../constants/colors'
  6. import fonts from '../../../constants/fonts'
  7. const ImageBGCard = ({image, author, headline, onPress, }) => {
  8. const styles = StyleSheet.create({
  9. cardImage: {
  10. height: 'auto',
  11. width: 'auto',
  12. },
  13. gradient: {
  14. borderRadius: moderateScale(8),
  15. height: verticalScale(240),
  16. justifyContent: 'flex-end',
  17. paddingHorizontal: horizontalScale(16),
  18. paddingVertical: verticalScale(10)
  19. },
  20. authorText: {
  21. color: colors().white,
  22. fontFamily: fonts.type.bold,
  23. fontSize: moderateScale(12)
  24. },
  25. headlineText: {
  26. color: colors().white,
  27. fontFamily: fonts.type.medium,
  28. fontSize: moderateScale(16)
  29. }
  30. })
  31. return (
  32. <TouchableOpacity onPress={onPress}>
  33. <ImageBackground source={image}
  34. imageStyle={{ borderRadius: moderateScale(8), }}
  35. style={styles.cardImage}
  36. >
  37. <LinearGradient
  38. colors={['transparent', 'black']}
  39. style={styles.gradient}
  40. start={{ x: 0.5, y: 0.3 }}
  41. >
  42. <Text style={styles.authorText}>
  43. by {author}
  44. </Text>
  45. <Text style={styles.headlineText}>{headline}</Text>
  46. </LinearGradient>
  47. </ImageBackground>
  48. </TouchableOpacity>
  49. )
  50. }
  51. export default ImageBGCard