UNPKG

@pubsweet/ui

Version:

React component library for use in pubsweet apps

138 lines (105 loc) 5.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _propTypes = _interopRequireDefault(require("prop-types")); var _uiToolkit = require("@pubsweet/ui-toolkit"); var _atoms = require("../atoms"); var _Action = _interopRequireDefault(require("./Action")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _templateObject5() { var data = _taggedTemplateLiteral(["\n align-items: center;\n display: inline-flex;\n margin: calc(", " * 3) 1rem calc(", " * 3) 0;\n"]); _templateObject5 = function _templateObject5() { return data; }; return data; } function _templateObject4() { var data = _taggedTemplateLiteral(["\n & > * {\n height: calc(", " * 6);\n }\n\n ", ";\n"]); _templateObject4 = function _templateObject4() { return data; }; return data; } function _templateObject3() { var data = _taggedTemplateLiteral(["\n margin: calc(", " * 2) 1rem calc(", " * 2) 1rem;\n\n ", ";\n"]); _templateObject3 = function _templateObject3() { return data; }; return data; } function _templateObject2() { var data = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n"]); _templateObject2 = function _templateObject2() { return data; }; return data; } function _templateObject() { var data = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: calc(", " * 6);\n\n ", ";\n"]); _templateObject = function _templateObject() { return data; }; return data; } function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } // #region styled-components var Root = _styledComponents["default"].nav(_templateObject(), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.override)('ui.AppBar')); var Section = _styledComponents["default"].div(_templateObject2()); var Logo = _styledComponents["default"].span(_templateObject3(), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.override)('ui.AppBar.Logo')); var LogoLink = (0, _styledComponents["default"])(_Action["default"])(_templateObject4(), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.override)('ui.AppBar.LogoLink')); var Item = _styledComponents["default"].span(_templateObject5(), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.th)('gridUnit')); // #endregion var AppBar = function AppBar(_ref) { var _ref$brandLink = _ref.brandLink, brandLink = _ref$brandLink === void 0 ? '/' : _ref$brandLink, brand = _ref.brand, className = _ref.className, _ref$loginLink = _ref.loginLink, loginLink = _ref$loginLink === void 0 ? '/login' : _ref$loginLink, onLogoutClick = _ref.onLogoutClick, navLinkComponents = _ref.navLinkComponents, user = _ref.user, _ref$rightComponent = _ref.rightComponent, RightComponent = _ref$rightComponent === void 0 ? DefaultRightComponent : _ref$rightComponent; return /*#__PURE__*/_react["default"].createElement(Root, { className: className }, /*#__PURE__*/_react["default"].createElement(Section, null, brand && /*#__PURE__*/_react["default"].createElement(Logo, null, /*#__PURE__*/_react["default"].createElement(LogoLink, { to: brandLink }, brand)), navLinkComponents && navLinkComponents.map(function (NavLinkComponent, idx) { return /*#__PURE__*/_react["default"].createElement("span", { key: NavLinkComponent.props.to }, /*#__PURE__*/_react["default"].createElement(Item, null, NavLinkComponent)); })), /*#__PURE__*/_react["default"].createElement(RightComponent, { loginLink: loginLink, onLogoutClick: onLogoutClick, user: user })); }; var DefaultRightComponent = function DefaultRightComponent(_ref2) { var user = _ref2.user, onLogoutClick = _ref2.onLogoutClick, loginLink = _ref2.loginLink; return /*#__PURE__*/_react["default"].createElement(Section, null, user && /*#__PURE__*/_react["default"].createElement(Item, null, /*#__PURE__*/_react["default"].createElement(_atoms.Icon, { size: 2 }, "user"), user.username, user.admin ? ' (admin)' : ''), user && /*#__PURE__*/_react["default"].createElement(Item, null, /*#__PURE__*/_react["default"].createElement(_atoms.Icon, { size: 2 }, "power"), /*#__PURE__*/_react["default"].createElement(_Action["default"], { onClick: onLogoutClick }, "Logout")), !user && /*#__PURE__*/_react["default"].createElement(Item, null, /*#__PURE__*/_react["default"].createElement(_Action["default"], { to: loginLink }, "Login"))); }; AppBar.propTypes = { brandLink: _propTypes["default"].string, brand: _propTypes["default"].node, loginLink: _propTypes["default"].string, onLogoutClick: _propTypes["default"].func, user: _propTypes["default"].object, navLinkComponents: _propTypes["default"].arrayOf(_propTypes["default"].element), rightComponent: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]) }; var _default = AppBar; exports["default"] = _default;