@appearhere/bloom
Version:
Appear Here's pattern library and styleguide
72 lines (64 loc) • 1.7 kB
JavaScript
import PropTypes from 'prop-types';
import React from 'react';
import cx from 'classnames';
import css from './CondensedSpaceCard.css';
import LeftRight from '../../LeftRight/LeftRight';
import FittedImage from '../../FittedImage/FittedImage';
const CondensedSpaceCard = (props) => {
const {
href,
images,
name,
price,
priceFromLabel,
priceUnit,
className,
} = props;
/* eslint-disable react/jsx-no-target-blank */
return (
<a
href={href}
className={cx(css.root, className)}
title={name}
target="_blank"
>
<LeftRight
primarySide="left"
leftChildren={
images.length > 0 && (
<FittedImage
className={css.image}
src={images[0].src}
alt={images[0].alt}
/>
)
}
rightChildren={
<div className={css.body}>
<div className={css.name}>
{ priceFromLabel && <span className={css.priceFromLabel}>{ priceFromLabel }</span> }
<span className={css.price}>{ price }</span>
{ '\u00a0' }
<span className={css.priceUnit}>{ priceUnit }</span>
</div>
<div className={css.name}>{ name }</div>
</div>
}
/>
</a>
);
/* eslint-enable react/jsx-no-target-blank */
};
CondensedSpaceCard.propTypes = {
href: PropTypes.string,
images: PropTypes.array,
name: PropTypes.string,
price: PropTypes.string,
className: PropTypes.string,
priceFromLabel: PropTypes.string,
priceUnit: PropTypes.string,
};
CondensedSpaceCard.defaultProps = {
images: [],
};
export default CondensedSpaceCard;