@age/quantum
Version:
Catho react components
119 lines (100 loc) • 5.47 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _Button = _interopRequireDefault(require("../Button"));
var _Icon = _interopRequireDefault(require("../Icon"));
var _theme = require("../shared/theme");
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 Content = _styledComponents.default.div.withConfig({
displayName: "Alert__Content",
componentId: "sc-5ru3ay-0"
})(["align-items:start;display:flex;"]);
var AlertIcon = (0, _styledComponents.default)(_Icon.default).withConfig({
displayName: "Alert__AlertIcon",
componentId: "sc-5ru3ay-1"
})([""]);
var CloseButton = (0, _styledComponents.default)(_Button.default.Icon).attrs({
icon: 'close'
}).withConfig({
displayName: "Alert__CloseButton",
componentId: "sc-5ru3ay-2"
})(["height:auto;opacity:0.8;padding:0;transition:opacity 0.4s ease;width:auto;:hover{background:none;opacity:1;}"]);
CloseButton.displayName = 'CloseButton';
var Wrapper = _styledComponents.default.div.withConfig({
displayName: "Alert__Wrapper",
componentId: "sc-5ru3ay-3"
})(["border-radius:8px;box-sizing:border-box;", ""], function (_ref) {
var skin = _ref.skin,
_ref$theme = _ref.theme,
baseFontSize = _ref$theme.baseFontSize,
_ref$theme$spacing = _ref$theme.spacing,
small = _ref$theme$spacing.small,
medium = _ref$theme$spacing.medium,
_ref$theme$components = _ref$theme.components.alert.skins[skin],
background = _ref$theme$components.background,
icon = _ref$theme$components.icon,
text = _ref$theme$components.text;
return "\n font-size: ".concat(baseFontSize, "px;\n background-color: ").concat(background, ";\n border: 1.5px solid ").concat(icon, ";\n color: ").concat(text, ";\n padding: ").concat(small, "px ").concat(medium, "px;\n\n ").concat(Content, " ").concat(AlertIcon, " {\n color: ").concat(icon, ";\n margin-right: ").concat(medium, "px;\n }\n\n ").concat(Content, " > ").concat(CloseButton, " {\n color: ").concat(icon, ";\n margin: 0 0 0 ").concat(medium, "px;\n min-height: 0;\n opacity: 1;\n\n ").concat(_Button.default.Icon, " {\n color: ").concat(icon, ";\n margin-left: 0;\n }\n }\n ");
});
var Alert = function Alert(_ref2) {
var icon = _ref2.icon,
children = _ref2.children,
theme = _ref2.theme,
onClose = _ref2.onClose,
rest = _objectWithoutProperties(_ref2, ["icon", "children", "theme", "onClose"]);
return _react.default.createElement(Wrapper, _extends({
theme: theme
}, rest, {
role: "alert"
}), _react.default.createElement(Content, {
onClose: onClose
}, icon && _react.default.createElement(AlertIcon, {
name: icon
}), children && _react.default.createElement("span", null, children), onClose && _react.default.createElement(CloseButton, {
theme: theme,
onClick: onClose
})));
};
Alert.defaultProps = {
icon: null,
skin: 'neutral',
theme: {
colors: _theme.colors,
baseFontSize: _theme.baseFontSize,
spacing: _theme.spacing,
breakpoints: _theme.breakpoints,
components: {
alert: _theme.components.alert,
button: _theme.components.button
}
}
};
Alert.propTypes = {
/** At least one children is required for Alert component properly works */
children: _propTypes.default.node.isRequired,
/** Icon name. The full catalogue can be found
* [here](/?selectedKind=1.%20Foundation&selectedStory=Icons) */
icon: _propTypes.default.string,
/** You must pass a callback that is called when close button is clicked */
onClose: _propTypes.default.func.isRequired,
skin: _propTypes.default.oneOf(['primary', 'success', 'error', 'neutral', 'warning']),
theme: _propTypes.default.shape({
baseFontSize: _propTypes.default.number,
colors: _propTypes.default.object,
spacing: _propTypes.default.object,
components: _propTypes.default.shape({
alert: _propTypes.default.object,
button: _propTypes.default.object
})
})
};
var _default = Alert;
exports.default = _default;