@rocketsofawesome/mirage
Version: 
[Live Demo of the Pattern Library](https://rocketsofawesome.github.io/mirage/)
71 lines (64 loc) • 1.61 kB
JavaScript
import React from 'react'
import PropTypes from 'prop-types'
import styled from 'styled-components'
import Label, { LowercaseLabel } from 'SRC/core/typography/Label'
import CardIcon from 'SRC/core/icons/cards/CardIcon'
const prettyBrand = (brand) => `${brand.charAt(0).toUpperCase()}${brand.slice(1)}`
const cardData = (brand, last_4_digits) => {
  return `${prettyBrand(brand)} ending in ****${last_4_digits}`
}
const BaseDefaultPayment = ({
  card: {
    brand,
    exp_month,
    exp_year,
    last_4_digits
  },
  className
}) => {
  return (
    <section className={className}>
      <CardIcon brand={brand} />
      <aside>
        <LowercaseLabel>{cardData(brand, last_4_digits)}</LowercaseLabel>
        <LowercaseLabel>expires {exp_month}/{exp_year}</LowercaseLabel>
      </aside>
    </section>
  )
}
const DefaultPayment = styled(BaseDefaultPayment)`
  display: flex;
  align-items: flex-start;
  ${CardIcon} {
    display: inline-block;
    width: 2.5rem;
    margin-top: .6rem;
    margin-right: 1rem;
    flex: 0 0 auto;
  }
  > aside {
    display: inline-block;
  }
  ${Label} {
    display: inline-block;
    box-sizing: border-box;
    width: 100%;
    &:first-of-type {
      padding-right: 7rem;
      ${props => props.theme.media.tablet`
        padding-right: 5rem;
      `}
    }
  }
`
DefaultPayment.propTypes = {
  card: PropTypes.shape({
    brand: PropTypes.string,
    exp_month: PropTypes.string,
    exp_year: PropTypes.string,
    last_4_digits: PropTypes.string
  }).isRequired
}
/** @component */
export default DefaultPayment
export { BaseDefaultPayment, cardData }