@music-loopy/loops
Version:
A React component library for Music Loopy Applications and websites
50 lines • 2.62 kB
JavaScript
var _excluded = ["size", "header", "children", "fullWidth"];
var _templateObject, _templateObject2, _templateObject3;
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
function _taggedTemplateLiteralLoose(e, t) { return t || (t = e.slice(0)), e.raw = t, e; }
import React from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
var StyledCard = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n background-color: ", ";\n color: ", ";\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n padding: 16px;\n width: ", ";\n max-width: ", ";\n"])), function (props) {
return props.theme.colors.background;
}, function (props) {
return props.theme.colors.text;
}, function (props) {
return props.fullWidth ? '100%' : 'auto';
}, function (props) {
return props.theme.card.size[props.size || 'medium'].maxWidth;
});
var CardHeader = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n font-weight: bold;\n margin-bottom: 8px;\n"])), function (props) {
return props.theme.card.size[props.size || 'medium'].headerFontSize;
});
var CardBody = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n"])), function (props) {
return props.theme.card.size[props.size || 'medium'].bodyFontSize;
});
export var Card = function Card(_ref) {
var size = _ref.size,
header = _ref.header,
children = _ref.children,
fullWidth = _ref.fullWidth,
props = _objectWithoutPropertiesLoose(_ref, _excluded);
return /*#__PURE__*/React.createElement(StyledCard, _extends({
size: size,
fullWidth: fullWidth
}, props), header && /*#__PURE__*/React.createElement(CardHeader, {
size: size
}, header), /*#__PURE__*/React.createElement(CardBody, {
size: size
}, children));
};
Card.propTypes = process.env.NODE_ENV !== "production" ? {
size: PropTypes.oneOf(['small', 'medium', 'large']),
header: PropTypes.string,
children: PropTypes.node.isRequired,
fullWidth: PropTypes.bool
} : {};
Card.defaultProps = {
size: 'medium',
header: '',
fullWidth: false
};
export default Card;