/*
Copyright 2024 New Vector Ltd.
Copyright 2020 The Matrix.org Foundation C.I.C.

SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/

.mx_UserMenu {
    box-sizing: border-box;
    display: flex;
    align-items: center;

    .mx_AccessibleButton {
        display: flex;
        align-items: center;

        .mx_UserMenu_userAvatar {
            position: relative;

            .mx_BaseAvatar {
                pointer-events: none; /* makes the avatar non-draggable */
            }
        }
    }

    .mx_UserMenu_contextMenuButton {
        width: 100%;
    }

    .mx_UserMenu_name {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        font-weight: var(--cpd-font-weight-semibold);
        font-size: $font-15px;
        line-height: $font-24px;
        margin-left: 10px;
    }

    .mx_UserMenu_dndBadge {
        position: absolute;
        bottom: -2px;
        right: -7px;
        width: 16px;
        height: 16px;
        border-radius: 50%;

        &::before {
            content: "";
            width: 16px;
            height: 16px;
            position: absolute;
            mask-position: center;
            mask-size: contain;
            mask-repeat: no-repeat;
            background-color: $alert;
            mask-image: url("$(res)/img/element-icons/roomlist/dnd.svg");
        }
    }
}

.mx_IconizedContextMenu {
    &.mx_UserMenu_contextMenu {
        width: 258px;
    }
}

.mx_UserMenu_contextMenu {
    &.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red {
        .mx_AccessibleButton {
            padding-top: 16px;
            padding-bottom: 16px;
        }
    }

    .mx_UserMenu_contextMenu_header {
        padding: 20px;

        /* Create a flexbox to organize the header a bit easier */
        display: flex;
        align-items: center;

        .mx_UserMenu_contextMenu_name {
            /* Create another flexbox of columns to handle large user IDs */
            display: flex;
            flex-direction: column;
            width: calc(100% - 40px); /* 40px = 32px theme button + 8px margin to theme button */

            .mx_UserMenu_contextMenu_displayName,
            .mx_UserMenu_contextMenu_userId {
                font: var(--cpd-font-body-lg-regular);

                /* Automatically grow subelements to fit the container */
                flex: 1;
                width: 100%;

                /* Ellipsize text overflow */
                text-overflow: ellipsis;
                overflow: hidden;
                white-space: nowrap;
            }

            .mx_UserMenu_contextMenu_displayName {
                font-weight: var(--cpd-font-weight-semibold);
            }
        }

        .mx_UserMenu_contextMenu_themeButton {
            min-width: 32px;
            max-width: 32px;
            width: 32px;
            height: 32px;
            margin-left: 8px;
            border-radius: 32px;
            background-color: $theme-button-bg-color;
            cursor: pointer;

            /* to make alignment easier, create flexbox for the image */
            display: flex;
            align-items: center;
            justify-content: center;
        }

        &.mx_UserMenu_contextMenu_guestPrompts {
            padding-top: 0;
            display: inline-block;

            > span {
                font-weight: var(--cpd-font-weight-semibold);
                display: block;

                & + span {
                    margin-top: 8px;
                }
            }
        }
    }

    .mx_IconizedContextMenu_icon {
        width: 16px;
        height: 16px;
        display: block;

        &::before {
            content: "";
            width: 16px;
            height: 16px;
            display: block;
            mask-position: center;
            mask-size: contain;
            mask-repeat: no-repeat;
            background: $icon-button-color;
        }
    }

    .mx_UserMenu_iconHome::before {
        mask-image: url("@vector-im/compound-design-tokens/icons/home-solid.svg");
    }

    .mx_UserMenu_iconDnd::before {
        mask-image: url("$(res)/img/element-icons/roomlist/dnd.svg");
    }

    .mx_UserMenu_iconDndOff::before {
        mask-image: url("$(res)/img/element-icons/roomlist/dnd-cross.svg");
    }

    .mx_UserMenu_iconBell::before {
        mask-image: url("$(res)/img/element-icons/notifications.svg");
    }

    .mx_UserMenu_iconLock::before {
        mask-image: url("@vector-im/compound-design-tokens/icons/lock-solid.svg");
    }

    .mx_UserMenu_iconSettings::before {
        mask-image: url("@vector-im/compound-design-tokens/icons/settings-solid.svg");
    }

    .mx_UserMenu_iconMessage::before {
        mask-image: url("$(res)/img/element-icons/feedback.svg");
    }

    .mx_UserMenu_iconSignOut::before {
        mask-image: url("@vector-im/compound-design-tokens/icons/leave.svg");
    }

    .mx_UserMenu_iconQr::before {
        mask-image: url("@vector-im/compound-design-tokens/icons/qr-code.svg");
    }
}