@massds/mayflower-react
Version:
React versions of Mayflower design system UI components
144 lines (117 loc) • 6.5 kB
JavaScript
"use strict";
exports.__esModule = true;
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _index = _interopRequireDefault(require("../Image/index.js"));
var _IconChevron = _interopRequireDefault(require("../Icon/IconChevron.js"));
var _IconBuilding = _interopRequireDefault(require("../Icon/IconBuilding.js"));
var _IconLock = _interopRequireDefault(require("../Icon/IconLock.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* BrandBanner module.
* @module @massds/mayflower-react/BrandBanner
* @requires module:@massds/mayflower-assets/scss/02-molecules/brand-banner
* @requires module:@massds/mayflower-assets/scss/01-atoms/button-with-icon
*/
var BrandBanner = function BrandBanner(_ref) {
var _classNames, _classNames2;
var _ref$hasSeal = _ref.hasSeal,
hasSeal = _ref$hasSeal === void 0 ? true : _ref$hasSeal,
_ref$hasToggle = _ref.hasToggle,
hasToggle = _ref$hasToggle === void 0 ? true : _ref$hasToggle,
_ref$bgTheme = _ref.bgTheme,
bgTheme = _ref$bgTheme === void 0 ? 'light' : _ref$bgTheme,
_ref$bgColor = _ref.bgColor,
bgColor = _ref$bgColor === void 0 ? 'c-primary' : _ref$bgColor,
_ref$seal = _ref.seal,
seal = _ref$seal === void 0 ? null : _ref$seal,
_ref$text = _ref.text,
text = _ref$text === void 0 ? 'An official website of the Commonwealth of Massachusetts' : _ref$text;
var lightTheme = bgTheme === 'light';
var brandBannerClasses = (0, _classnames["default"])('ma__brand-banner', (_classNames = {}, _classNames["ma__brand-banner--" + bgColor + "-bg-" + bgTheme] = bgColor && bgTheme, _classNames));
var ContainerTag = hasToggle ? 'button' : 'div';
var containerProps = {
className: 'ma__brand-banner-container'
};
var brandBannerToggleColor = bgTheme === 'light' ? bgColor : 'c-white';
var _React$useState = _react["default"].useState(false),
hovered = _React$useState[0],
setHovered = _React$useState[1];
var _React$useState2 = _react["default"].useState(false),
expanded = _React$useState2[0],
setExpanded = _React$useState2[1];
var brandBannerExpansionClasses = (0, _classnames["default"])('ma__brand-banner-expansion', {
'ma__brand-banner-expansion--expanded': expanded
});
var handleOnToggle = function handleOnToggle() {
setExpanded(function (prevExpanded) {
return !prevExpanded;
});
};
var brandBannerToggleClasses = (0, _classnames["default"])('ma__brand-banner-button ma__button-icon ma__icon-small ma__button-icon--quaternary', (_classNames2 = {}, _classNames2["ma__button-icon--" + brandBannerToggleColor] = bgColor && bgTheme, _classNames2.active = hovered, _classNames2));
var contentId = 'ma__brand-banner-content';
if (hasToggle) {
containerProps.onClick = handleOnToggle;
containerProps.onMouseEnter = function () {
return setHovered(true);
};
containerProps.onMouseLeave = function () {
return setHovered(false);
};
containerProps['aria-controls'] = contentId;
containerProps['aria-expanded'] = expanded;
}
return /*#__PURE__*/_react["default"].createElement("div", {
className: brandBannerClasses
}, /*#__PURE__*/_react["default"].createElement(ContainerTag, containerProps, hasSeal && /*#__PURE__*/_react["default"].createElement(_index["default"], {
className: "ma__brand-banner-logo",
src: seal,
alt: "Massachusetts State Seal"
}), /*#__PURE__*/_react["default"].createElement("span", {
className: "ma__brand-banner-text"
}, /*#__PURE__*/_react["default"].createElement("span", null, text), /*#__PURE__*/_react["default"].createElement("span", null, "\xA0\xA0\xA0"), hasToggle && /*#__PURE__*/_react["default"].createElement("span", {
className: brandBannerToggleClasses
}, /*#__PURE__*/_react["default"].createElement("span", null, "Here's how you know"), /*#__PURE__*/_react["default"].createElement(_IconChevron["default"], null)))), hasToggle && /*#__PURE__*/_react["default"].createElement("ul", {
className: brandBannerExpansionClasses,
id: contentId
}, /*#__PURE__*/_react["default"].createElement("li", {
className: "ma__brand-banner-expansion-item"
}, /*#__PURE__*/_react["default"].createElement(_IconBuilding["default"], {
width: 30,
height: 30,
fill: lightTheme ? '#14558F' : '#fff'
}), /*#__PURE__*/_react["default"].createElement("div", {
className: "ma__brand-banner-expansion-item-content"
}, /*#__PURE__*/_react["default"].createElement("p", null, "Official websites use .mass.gov"), /*#__PURE__*/_react["default"].createElement("p", null, "A .mass.gov website belongs to an official government organization in Massachusetts."))), /*#__PURE__*/_react["default"].createElement("li", {
className: "ma__brand-banner-expansion-item"
}, /*#__PURE__*/_react["default"].createElement(_IconLock["default"], {
width: 30,
height: 30,
fill: lightTheme ? '#388557' : '#fff'
}), /*#__PURE__*/_react["default"].createElement("div", {
className: "ma__brand-banner-expansion-item-content"
}, /*#__PURE__*/_react["default"].createElement("p", null, "Secure websites use HTTPS certificate"), /*#__PURE__*/_react["default"].createElement("p", null, "A lock icon (", /*#__PURE__*/_react["default"].createElement(_IconLock["default"], {
width: 12,
height: 12
}), ") or https:// means you\u2019ve safely connected to the official website. Share sensitive information only on official, secure websites.")))));
};
BrandBanner.propTypes = process.env.NODE_ENV !== "production" ? {
/** Banner state seal src.
* To ensure sufficient color contrast, pass in the gray seal for light bgTheme and the white seal for dark bgTheme. */
seal: _propTypes["default"].string,
/** Banner text */
text: _propTypes["default"].string,
/** Whether to include seal */
hasSeal: _propTypes["default"].bool,
/** Whether to render the toggle button and content */
hasToggle: _propTypes["default"].bool,
/** Background color option */
bgColor: _propTypes["default"].oneOf(['', 'c-primary', 'c-primary-alt', 'c-gray']),
/** Background color theme */
bgTheme: _propTypes["default"].oneOf(['', 'light', 'dark'])
} : {};
var _default = BrandBanner;
exports["default"] = _default;
module.exports = exports.default;