UNPKG

optimizely-oui

Version:

Optimizely's Component Library.

66 lines (59 loc) 1.68 kB
import React from "react"; import PropTypes from "prop-types"; import classNames from "classnames"; const HeaderDetails = ({ className, items, spaceBelow, ...props }) => { const itemList = items.map((item, ind) => { if (item.isVisible !== undefined && !item.isVisible) { return null; } return [ <div key={`label-${item.label}`} className={classNames({ sidenav__details__title: true, muted: true, "flush--bottom": true, "push--top": ind > 0, })} > <h5>{item.label}</h5> </div>, <span key={`value-${item.label}`} className="sidenav__details__item"> {item.value} </span>, ]; }); return ( <div className={classNames({ sidenav__details: true, "soft-double--bottom": spaceBelow, }, className)} {...props} > {itemList} </div> ); }; HeaderDetails.propTypes = { /** CSS class names. */ className: PropTypes.string, /** List of details to display */ items: PropTypes.arrayOf( PropTypes.shape({ label: PropTypes.string.isRequired, value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.node]).isRequired, }) ).isRequired, /** Whether or not the details have extra space below */ spaceBelow: PropTypes.bool, }; HeaderDetails.defaultProps = { spaceBelow: false, }; export default HeaderDetails;