Skip to content
Snippets Groups Projects
UserHeader.tsx 2.06 KiB
Newer Older
insert's avatar
insert committed
import { User } from "revolt.js";
import Header from "../ui/Header";
import UserIcon from "./UserIcon";
import UserStatus from './UserStatus';
import styled from "styled-components";
import { Localizer } from 'preact-i18n';
import { Settings } from "@styled-icons/feather";
import { isTouchscreenDevice } from "../../lib/isTouchscreenDevice";

const HeaderBase = styled.div`
    gap: 0;
    flex-grow: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    
    * {
        min-width: 0;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }

    .username {
        cursor: pointer;
        font-size: 16px;
        font-weight: 600;
    }

    .status {
        cursor: pointer;
        font-size: 12px;
        margin-top: -2px;
    }
`;

interface Props {
    user: User
}

export default function UserHeader({ user }: Props) {
    function openPresenceSelector() {
        // openContextMenu("Status");
    }

    function writeClipboard(a: string) {
        alert('unimplemented');
    }

    return (
        <Header placement="secondary">
            <UserIcon
                target={user}
                size={32}
                status
                onClick={openPresenceSelector}
            />
            <HeaderBase>
                <Localizer>
                    {/*<Tooltip content={<Text id="app.special.copy_username" />}>*/}
                        <span className="username"
                            onClick={() => writeClipboard(user.username)}>
                            @{user.username}
                        </span>
                    {/*</Tooltip>*/}
                </Localizer>
                <span className="status"
                    onClick={openPresenceSelector}>
                    <UserStatus user={user} />
                </span>
            </HeaderBase>
            { !isTouchscreenDevice && <div className="actions">
                {/*<IconButton to="/settings">*/}
                    <Settings size={24} />
                {/*</IconButton>*/}
            </div> }
        </Header>
    )
}