@age/quantum
Version:
Catho react components
89 lines (71 loc) • 3.13 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 _Menu = _interopRequireDefault(require("@material-ui/icons/Menu"));
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _theme = require("../shared/theme");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var HAMBURGER_SIZE = 24;
var NOTIFICATION_SIZE = 7;
var getColors = function getColors(_ref) {
var inverted = _ref.inverted;
var weight = !inverted ? 0 : 900;
return _theme.colors.neutral[weight];
};
var HamburgerWrapper = _styledComponents.default.div.withConfig({
displayName: "Hamburger__HamburgerWrapper",
componentId: "d3x1kx-0"
})(["display:inline-block;position:relative;width:", "px;height:", "px;"], HAMBURGER_SIZE, HAMBURGER_SIZE);
var NotificationIcon = _styledComponents.default.span.withConfig({
displayName: "Hamburger__NotificationIcon",
componentId: "d3x1kx-1"
})(["position:absolute;width:", "px;height:", "px;border:solid 2px ", "}};top:0;right:0;border-radius:", "px;background-color:", ";"], NOTIFICATION_SIZE, NOTIFICATION_SIZE, function (props) {
return _theme.colors.neutral[props.inverted ? 0 : 1000];
}, NOTIFICATION_SIZE, _theme.colors.error[700]);
var HamburgerIconWrapper = (0, _styledComponents.default)(_Menu.default).withConfig({
displayName: "Hamburger__HamburgerIconWrapper",
componentId: "d3x1kx-2"
})(["color:", ";"], getColors);
var CloseIconWrapper = (0, _styledComponents.default)(_Close.default).withConfig({
displayName: "Hamburger__CloseIconWrapper",
componentId: "d3x1kx-3"
})(["color:", ";"], getColors);
var Hamburger = function Hamburger(_ref2) {
var showNotification = _ref2.showNotification,
isOpened = _ref2.isOpened,
inverted = _ref2.inverted,
ariaLabelDescription = _ref2.ariaLabelDescription;
var HamburgerBlock = _react.default.createElement(_react.default.Fragment, null, showNotification && _react.default.createElement(NotificationIcon, {
"aria-label": ariaLabelDescription,
inverted: inverted
}), _react.default.createElement(HamburgerIconWrapper, {
inverted: inverted ? 1 : 0
}));
return _react.default.createElement(HamburgerWrapper, {
"aria-live": "polite"
}, !isOpened ? HamburgerBlock : _react.default.createElement(CloseIconWrapper, {
inverted: inverted
}));
};
HamburgerWrapper.displayName = 'HamburgerWrapper';
Hamburger.displayName = 'Hamburger';
Hamburger.propTypes = {
showNotification: _propTypes.default.bool,
isOpened: _propTypes.default.bool,
/** Swap background and text color */
inverted: _propTypes.default.bool,
ariaLabelDescription: _propTypes.default.string
};
Hamburger.defaultProps = {
inverted: false,
showNotification: false,
isOpened: false,
ariaLabelDescription: 'There are new notifications'
};
var _default = Hamburger;
exports.default = _default;