@massds/mayflower-react
Version:
React versions of Mayflower design system UI components
47 lines • 2.15 kB
JavaScript
/**
* CalloutAlert module.
* @module @massds/mayflower-react/CalloutAlert
* @requires module:@massds/mayflower-assets/scss/03-organisms/callout-alert
*/
import React from "react";
import PropTypes from "prop-types";
import classNames from "classnames";
// eslint-disable-next-line import/no-unresolved
import * as Icon from "../Icon/index.mjs";
const CalloutAlert = props => {
var _classNames, _props$icon, _props$icon2;
const calloutAlertClasses = classNames((_classNames = {
'ma__callout-alert': true
}, _classNames["ma__callout-alert--" + props.theme] = props.theme, _classNames));
const calloutAlertContentClasses = classNames({
'ma__callout-alert__content': true,
'ma__callout-alert__content--no-icon': !(props.icon && props.icon.name)
});
const IconComponent = props !== null && props !== void 0 && (_props$icon = props.icon) !== null && _props$icon !== void 0 && _props$icon.name ? Icon[props.icon.name] : null;
return /*#__PURE__*/React.createElement("div", {
className: calloutAlertClasses
}, /*#__PURE__*/React.createElement("div", {
className: calloutAlertContentClasses
}, (props === null || props === void 0 ? void 0 : (_props$icon2 = props.icon) === null || _props$icon2 === void 0 ? void 0 : _props$icon2.name) && /*#__PURE__*/React.createElement("div", {
className: "ma__callout-alert__icon"
}, /*#__PURE__*/React.createElement(IconComponent, props.icon)), props.children));
};
CalloutAlert.propTypes = process.env.NODE_ENV !== "production" ? {
icon: PropTypes.shape({
name: PropTypes.string,
title: PropTypes.string,
width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
className: PropTypes.string,
fill: PropTypes.string
}),
/** Themes correspond to site color scheme i.e. sass variables */
theme: PropTypes.oneOf(['', 'c-primary', 'c-primary-alt', 'c-highlight', 'c-gray-dark', 'c-error-red']),
children: PropTypes.oneOfType([PropTypes.element, PropTypes.array])
} : {};
CalloutAlert.defaultProps = {
icon: {
name: 'IconAlert'
}
};
export default CalloutAlert;