@age/quantum
Version:
Catho react components
162 lines (135 loc) • 7.3 kB
JavaScript
;
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireWildcard(require("styled-components"));
var _Icon = _interopRequireDefault(require("../Icon"));
var _theme = require("../shared/theme");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
var _colors = function _colors(_ref) {
var inverted = _ref.inverted,
skin = _ref.skin,
stroked = _ref.stroked,
_ref$theme$components = _ref.theme.components.tag.skins[skin],
background = _ref$theme$components.background,
text = _ref$theme$components.text;
return {
background: inverted && !stroked ? text : background,
text: inverted && !stroked ? background : text
};
};
var wrapperColors = function wrapperColors(props) {
var _colors2 = _colors(props),
background = _colors2.background,
text = _colors2.text;
var stroked = props.stroked,
neutral = props.theme.colors.neutral;
return (0, _styledComponents.css)(["background-color:", ";border:", ";color:", ";"], stroked ? neutral[0] : background, stroked ? "1px solid ".concat(text) : 'none', text);
};
var wrapperSize = function wrapperSize(_ref2) {
var _ref2$theme = _ref2.theme,
xxsmall = _ref2$theme.spacing.xxsmall,
baseFontSize = _ref2$theme.baseFontSize,
propSize = _ref2.size;
return {
small: "\n font-size: ".concat(baseFontSize * 0.75, "px;\n padding-top: ").concat(xxsmall, "px;\n padding-bottom: ").concat(xxsmall, "px;\n "),
large: "\n font-size: ".concat(baseFontSize * 1.125, "px;\n ")
}[propSize];
};
var Wrapper = _styledComponents.default.div.withConfig({
displayName: "Tag__Wrapper",
componentId: "xm8zcm-0"
})(["border-radius:8px;box-sizing:border-box;display:inline-block;margin-right:8px;padding:4px 12px;", " ", " ", ""], function (_ref3) {
var bold = _ref3.bold;
return bold && "font-weight: bold;";
}, wrapperColors, wrapperSize);
var Content = _styledComponents.default.div.withConfig({
displayName: "Tag__Content",
componentId: "xm8zcm-1"
})(["", ""], function (_ref4) {
var onClose = _ref4.onClose;
return onClose && "\n display: flex;\n align-items: center;\n ";
});
var iconSize = function iconSize(_ref5) {
var size = _ref5.size,
baseFontSize = _ref5.theme.baseFontSize;
return {
small: "".concat(baseFontSize * 0.875, "px"),
medium: "".concat(baseFontSize * 1.125, "px"),
large: "".concat(baseFontSize * 1.25, "px")
}[size];
};
var CloseIcon = (0, _styledComponents.default)(_Icon.default).withConfig({
displayName: "Tag__CloseIcon",
componentId: "xm8zcm-2"
})([""]);
var CloseButton = _styledComponents.default.button.withConfig({
displayName: "Tag__CloseButton",
componentId: "xm8zcm-3"
})(["background:none;border:none;cursor:pointer;height:", ";padding:0;", " ", "{font-size:", ";color:", ";}"], iconSize, function (_ref6) {
var xxsmall = _ref6.theme.spacing.xxsmall;
return "margin-left: ".concat(xxsmall, "px;");
}, CloseIcon, iconSize, function (props) {
return _colors(props).text;
});
CloseButton.displayName = 'CloseButton';
var Tag = function Tag(_ref7) {
var children = _ref7.children,
text = _ref7.text,
onClose = _ref7.onClose,
rest = _objectWithoutProperties(_ref7, ["children", "text", "onClose"]);
return _react.default.createElement(Wrapper, rest, _react.default.createElement(Content, {
onClose: onClose
}, children || text, onClose && _react.default.createElement(CloseButton, _extends({}, rest, {
onClick: onClose
}), _react.default.createElement(CloseIcon, {
name: "close"
}))));
};
Tag.propTypes = {
bold: _propTypes.default.bool,
children: _propTypes.default.string,
inverted: _propTypes.default.bool,
/** A callback that is called when close button is clicked */
onClose: _propTypes.default.func,
size: _propTypes.default.oneOf(['small', 'medium', 'large']),
skin: _propTypes.default.oneOf(['neutral', 'primary', 'success', 'warning', 'error']),
stroked: _propTypes.default.bool,
text: _propTypes.default.string,
theme: _propTypes.default.shape({
colors: _propTypes.default.object,
components: _propTypes.default.shape({
tag: _propTypes.default.object
}),
spacing: _propTypes.default.object
})
};
Tag.defaultProps = {
bold: false,
inverted: false,
stroked: false,
text: 'Tag text',
children: '',
size: 'medium',
skin: 'neutral',
onClose: undefined,
theme: {
baseFontSize: _theme.baseFontSize,
colors: _theme.colors,
components: {
tag: _theme.components.tag
},
spacing: _theme.spacing
}
};
var _default = Tag;
exports.default = _default;