components/elements/PeerList/PeerList.jsxjavascript
import "./PeerList.scss";
/**
* Grid of peer/benchmark cards ("peerList" element type), each with a logo,
* optional flag, optional stat tiles and an optional highlighted quote.
*
* @param {Object} props
* @param {Array<{flag: ?string, logo: string, stats: Array<{value: string, label: string}>, highlight: ?{headline: string, text: string}}>} props.peers - One entry per peer card.
*/
export const PeerList = ({ peers }) => {
return (
<div className="peerlist">
{peers.map((peer, index) => (
<div key={index} className="peer">
{peer.stats && peer.stats.length !== 0 ? (
<div className="peer--normal">
<div className="peer__head">
{peer.flag ? <img className="peer__head--flag" src={peer.flag} alt="" /> : null}
<img className="peer__head--logo" src={peer.logo} alt="" />
</div>
<div className="peer__body">
{peer.stats && peer.stats.length !== 0 ? (
<div className="peer__stats">
{peer.stats.map((stat, index) => (
<div
className={`peer__card--stats ${peer.stats.length === 1 ? "peer__card--width" : ""}`}
key={index}>
<div className={`card-stat--value `}>{stat.value}</div>
<div className="card--stat-lable">{stat.label}</div>
</div>
))}
</div>
) : // <div className="card-highlight--headline">{peer.highlight.headline}</div>
null}
<div
className={` ${peer.stats && peer.stats.length !== 0 ? "peer__card--quote" : ""}`}>
{peer.highlight ? (
<div className={` ${index === 3 ? "peer__card--heigth" : ""}`}>
<div className="card-highlight--headline">{peer.highlight.headline}</div>
<div className="card--text">{peer.highlight.text}</div>
</div>
) : null}
</div>
</div>
</div>
) : (
<div className="peer--justtext">
<div className="peer__header">
<div className="peer__head">
{peer.flag ? <img className="peer__head--flag" src={peer.flag} alt="" /> : null}
<img className="peer__head--logo" src={peer.logo} alt="" />
</div>
<div className="card-highlight--headline">{peer.highlight.headline}</div>
</div>
<div className="card--text">{peer.highlight.text}</div>
</div>
)}
</div>
))}
</div>
);
};