import * as React from "react"; import * as Constants from "~/common/constants"; import * as Styles from "~/common/styles"; import * as UserBehaviors from "~/common/user-behaviors"; import { PopoverNavigation } from "~/components/system"; import { css } from "@emotion/react"; import { Link } from "~/components/core/Link"; import { Boundary } from "~/components/system/components/fragments/Boundary"; import { useIntercom } from "react-use-intercom"; const STYLES_HEADER = css` position: relative; margin-left: 16px; @media (max-width: ${Constants.sizes.mobile}px) { padding: 0px; width: auto; } `; const STYLES_PROFILE = css` position: relative; display: flex; align-items: center; justify-content: flex-start; min-width: 10%; width: 204px; color: ${Constants.system.pitchBlack}; background-color: ${Constants.system.white}; font-size: 12px; text-decoration: none; border-radius: 4px; min-height: 48px; cursor: pointer; border: 1px solid rgba(229, 229, 229, 0.5); box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.03); @media (max-width: ${Constants.sizes.mobile}px) { display: none; } `; const STYLES_PROFILE_MOBILE = css` display: flex; align-items: center; `; const STYLES_PROFILE_IMAGE = css` background-color: ${Constants.system.foreground}; background-size: cover; background-position: 50% 50%; flex-shrink: 0; height: 24px; width: 24px; border-radius: 2px; cursor: pointer; ${"" /* @media (max-width: ${Constants.sizes.mobile}px) { height: 24px; width: 24px; } */} `; const STYLES_PROFILE_USERNAME = css` min-width: 10%; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 12px; user-select: none; font-family: ${Constants.font.medium}; font-size: ${Constants.typescale.lvl1}; `; const STYLES_ITEM_BOX_MOBILE = css` display: flex; align-items: center; justify-content: center; padding: 4px; background-color: ${Constants.system.white}; cursor: pointer; border-radius: 4px; border-left: 2px solid ${Constants.system.foreground}; `; const STYLES_ITEM_BOX = css` display: flex; align-items: center; justify-content: center; height: 100%; padding: 8px; padding-right: 9px; transition: 200ms ease all; border-left: 2px solid ${Constants.system.foreground}; :hover { color: ${Constants.system.blue}; } `; const OpenIntercom = ({ user, onTogglePopup }) => { const { show, update } = useIntercom(); return ( { onTogglePopup(); update({ name: user.data.name, email: user.email, customAttributes: { slate_userid: user.id, username: user.username, }, }); show(); }} > Help ); }; export class ApplicationUserControlsPopup extends React.Component { _handleAction = (props) => { this.props.onTogglePopup(); this.props.onAction(props); }; _handleSignOut = (e) => { e.preventDefault(); e.stopPropagation(); this.props.onTogglePopup(); UserBehaviors.signOut({ viewer: this.props.viewer }); }; render() { if (this.props.popup === "profile") { const topSection = (