UNPKG

@sanity/default-layout

Version:

The default layout components for Sanity

109 lines (108 loc) 4.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoginStatus = LoginStatus; var _react = _interopRequireDefault(require("react")); var _components = require("@sanity/base/components"); var _ui = require("@sanity/ui"); var _icons = require("@sanity/icons"); var _styledComponents = _interopRequireDefault(require("styled-components")); var _LoginProviderLogo = require("./LoginProviderLogo"); var _templateObject, _templateObject2; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } var StyledMenu = (0, _styledComponents.default)(_ui.Menu)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n min-width: 125px;\n max-width: 350px;\n"]))); var AvatarBox = (0, _styledComponents.default)(_ui.Box)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: relative;\n"]))); var MENU_BUTTON_POPOVER_PROPS = { portal: true, scheme: 'light', placement: 'bottom-end' }; var getProviderTitle = provider => { if (provider === 'google') { return 'Google'; } if (provider === 'github') { return 'GitHub'; } if (provider === 'sanity') { return 'Sanity'; } if (provider !== null && provider !== void 0 && provider.startsWith('saml-')) { return 'SAML/SSO'; } return undefined; }; function LoginStatus(props) { var currentUser = props.currentUser, onLogout = props.onLogout, projectId = props.projectId; var providerTitle = getProviderTitle(currentUser.provider); return /*#__PURE__*/_react.default.createElement(_ui.MenuButton, { button: /*#__PURE__*/_react.default.createElement(_ui.Button, { mode: "bleed", paddingX: 1, paddingY: 0, title: "Toggle user menu" }, /*#__PURE__*/_react.default.createElement(_ui.Flex, { align: "center" }, /*#__PURE__*/_react.default.createElement(_components.UserAvatar, { size: "medium", tone: "navbar", userId: "me" }), /*#__PURE__*/_react.default.createElement(_ui.Box, { marginLeft: 1 }, /*#__PURE__*/_react.default.createElement(_ui.Text, { size: 1 }, /*#__PURE__*/_react.default.createElement(_icons.ChevronDownIcon, null))))), id: "login-status-menu", menu: /*#__PURE__*/_react.default.createElement(StyledMenu, null, /*#__PURE__*/_react.default.createElement(_ui.Card, { padding: 2 }, /*#__PURE__*/_react.default.createElement(_ui.Box, { marginBottom: 3 }, /*#__PURE__*/_react.default.createElement(_ui.Label, { size: 0, muted: true }, "Signed in as")), /*#__PURE__*/_react.default.createElement(_ui.Flex, { align: "center" }, /*#__PURE__*/_react.default.createElement(_ui.Tooltip, { disabled: !providerTitle, portal: true, content: providerTitle && /*#__PURE__*/_react.default.createElement(_ui.Box, { padding: 2 }, /*#__PURE__*/_react.default.createElement(_ui.Text, { size: 1 }, "Signed in with ", providerTitle)) }, /*#__PURE__*/_react.default.createElement(AvatarBox, { marginRight: 3 }, /*#__PURE__*/_react.default.createElement(_components.UserAvatar, { size: "medium", userId: "me" }), (currentUser === null || currentUser === void 0 ? void 0 : currentUser.provider) && /*#__PURE__*/_react.default.createElement(_LoginProviderLogo.LoginProviderLogo, { provider: currentUser.provider }))), /*#__PURE__*/_react.default.createElement(_ui.Stack, { space: 2, flex: 1 }, /*#__PURE__*/_react.default.createElement(_ui.Text, { size: 1, weight: "semibold", textOverflow: "ellipsis" }, currentUser.name), /*#__PURE__*/_react.default.createElement(_ui.Text, { size: 1, muted: true, textOverflow: "ellipsis" }, currentUser.email)))), /*#__PURE__*/_react.default.createElement(_ui.MenuDivider, null), /*#__PURE__*/_react.default.createElement(_ui.MenuItem, { as: "a", href: "https://sanity.io/manage/project/".concat(projectId), target: "_blank", text: "Manage project", icon: _icons.CogIcon }), /*#__PURE__*/_react.default.createElement(_ui.MenuDivider, null), /*#__PURE__*/_react.default.createElement(_ui.MenuItem, { text: "Sign out", icon: _icons.LeaveIcon, onClick: onLogout })), popover: MENU_BUTTON_POPOVER_PROPS }); }