/*
Copyright 2024 New Vector Ltd.
Copyright 2019, 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_InviteDialog_flexWrapper .mx_Dialog {
    display: flex;
    flex-direction: column;
}

.mx_InviteDialog_transferWrapper .mx_Dialog {
    padding-bottom: $spacing-16;
}

.mx_InviteDialog_addressBar {
    display: flex;
    flex-direction: row;
    /* Right margin for the design. We could apply this to the whole dialog, but then the scrollbar */
    /* for the user section gets weird. */
    margin: $spacing-8 45px 0 0;

    .mx_InviteDialog_editor {
        flex: 1;
        width: 100%; /* Needed to make the Field inside grow */
        background-color: $header-panel-bg-color;
        border-radius: 4px;
        min-height: 25px;
        padding-inline-start: $spacing-8;
        overflow-x: hidden;
        overflow-y: auto;
        display: flex;
        flex-wrap: wrap;

        .mx_InviteDialog_userTile {
            margin: 6px 6px 0 0;
            display: inline-block;
            min-width: max-content; /* prevent manipulation by flexbox */
        }

        /* overrides bunch of our default text input styles */
        > input[type="text"] {
            margin: 6px 0 !important;
            height: 24px;
            font: var(--cpd-font-body-md-regular);
            line-height: $font-24px;
            padding-inline-start: $spacing-12;
            border: 0 !important;
            outline: 0 !important;
            resize: none;
            box-sizing: border-box;
            min-width: 40%;
            flex: 1 !important;
            color: $primary-content !important;
        }
    }

    .mx_InviteDialog_goButton {
        min-width: 48px;
        margin-inline-start: 10px;
        height: 25px;
        line-height: $font-25px;
    }

    .mx_InviteDialog_buttonAndSpinner {
        .mx_Spinner {
            /* Width and height are required to trick the layout engine. */
            width: 20px;
            height: 20px;
            margin-inline-start: 5px;
            display: inline-block;
            vertical-align: middle;
        }
    }
}

.mx_InviteDialog_section {
    padding-bottom: $spacing-4;

    h3 {
        font-size: $font-12px;
        color: $muted-fg-color;
        font-weight: bold;
        text-transform: uppercase;
    }

    > p {
        margin: 0;
    }

    > span {
        color: $primary-content;
    }

    .mx_InviteDialog_section_showMore {
        margin: 7px 18px;
        display: block;
    }
}

.mx_InviteDialog_section_hidden_suggestions_disclaimer {
    padding: $spacing-8 0 $spacing-16 0;
    font: var(--cpd-font-body-md-regular);

    > span {
        color: $primary-content;
        font-weight: var(--cpd-font-weight-semibold);
    }

    > p {
        margin: 0;
    }
}

.mx_InviteDialog_footer {
    border-top: 1px solid $input-border-color;

    > h3 {
        margin: $spacing-12 0;
        font-size: $font-12px;
        color: $muted-fg-color;
        font-weight: bold;
        text-transform: uppercase;
    }

    .mx_CopyableText.mx_CopyableText_border {
        width: unset; /* full width */
        margin-bottom: 0;

        > a {
            text-decoration: none;
            flex-shrink: 1;
            overflow: hidden;
            text-overflow: ellipsis;
        }
    }
}

/* Many of these styles are stolen from mx_UserPill, but adjusted for the invite dialog. */
.mx_InviteDialog_userTile {
    margin-inline-end: $spacing-8;

    .mx_InviteDialog_userTile_pill {
        background-color: var(--cpd-color-bg-canvas-default);
        border: 1px solid var(--cpd-color-gray-400);
        border-radius: 99px;
        display: inline-block;
        height: 24px;
        line-height: $font-24px;
        padding-inline: $spacing-8;
        vertical-align: middle;
        color: var(--cpd-color-gray-1100);

        .mx_SearchResultAvatar {
            border-radius: 20px;
            position: relative;
            left: -5px;
            top: 2px;
        }

        img.mx_SearchResultAvatar {
            vertical-align: top;
        }

        .mx_InviteDialog_userTile_name {
            vertical-align: top;
        }

        .mx_SearchResultAvatar_threepidAvatar {
            background-color: #ffffff; /* this is fine without a var because it's for both themes */
        }
    }

    .mx_InviteDialog_userTile_remove {
        display: inline-block;
        vertical-align: middle;

        svg {
            vertical-align: middle;
        }
    }
}

.mx_InviteDialog_other {
    /* Prevent the dialog from jumping around randomly when elements change. */
    display: flex;
    flex-direction: column;
    height: 600px;
    overflow: hidden;

    h2 {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        white-space: pre-wrap;
        overflow: hidden;
    }

    .mx_InviteDialog_addressBar {
        margin-inline-end: 0;
    }

    .mx_InviteDialog_userSections {
        flex-grow: 1;
        padding-inline-end: 0;

        .mx_InviteDialog_section {
            padding-bottom: 0;
            margin-top: $spacing-12;
        }
    }
}

.mx_InviteDialog_content {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    overflow: hidden;
}

.mx_InviteDialog_transfer {
    width: auto;

    .mx_InviteDialog_content {
        width: 496px;
        height: 430px;
        overflow: visible;

        .mx_TabbedView {
            display: flex;
            flex-direction: column;
            flex-shrink: 1;
            flex-grow: 1;
            min-height: 0;

            .mx_TabbedView_tabPanel {
                flex-direction: column;

                .mx_TabbedView_tabPanelContent {
                    display: flex;
                    flex-direction: column;
                }
            }
        }
    }

    .mx_InviteDialog_addressBar {
        margin-top: $spacing-8;
    }

    input[type="checkbox"] {
        margin-inline-end: $spacing-8;
    }
}

.mx_InviteDialog_userSections {
    margin-top: $spacing-4;
    overflow-y: auto;
    padding: 0 45px $spacing-4 0;
}

.mx_InviteDialog_helpText {
    margin: 0;
}

.mx_InviteDialog_dialPad {
    width: 224px;
    margin-top: $spacing-16;
    margin-inline: auto;

    .mx_InviteDialog_dialPadField {
        border-top: 0;
        border-inline: 0;
        border-radius: 0;
        margin-top: 0;
        border-color: $quaternary-content;

        &:focus-within {
            border-color: $accent;
        }

        input {
            font-size: 18px;
            font-weight: var(--cpd-font-weight-semibold);
            padding-top: 0;
        }

        .mx_Field_postfix {
            /* Remove border separator between postfix and field content */
            border-left: none;
        }
    }

    .mx_DialPad {
        row-gap: $spacing-16;
        column-gap: 48px;
        margin-inline: auto;
    }
}

.mx_InviteDialog_transferConsultConnect {
    padding-top: $spacing-16;
    /* This wants a drop shadow the full width of the dialog, so use negative margin to make it full width,
     * then compensate with padding
     */
    padding-inline: $spacing-24;
    margin-inline: calc(-1 * $spacing-24);
    border-top: 1px solid $quinary-content;

    display: flex;
    flex-direction: row;
    align-items: center;
}

.mx_InviteDialog_transferConsultConnect_pushRight {
    margin-inline-start: auto;
}

.mx_InviteDialog_userDirectoryIcon::before {
    mask-image: url("$(res)/img/voip/tab-userdirectory.svg");
}

.mx_InviteDialog_dialPadIcon::before {
    mask-image: url("$(res)/img/voip/tab-dialpad.svg");
}

.mx_InviteDialog_tile {
    cursor: pointer;
    display: grid;
    gap: $spacing-8 $spacing-12;
    align-items: center;

    &.mx_InviteDialog_tile--room {
        /* mx_InviteDialog_tile_avatarStack, mx_InviteDialog_tile_nameStack, time */
        grid-template-columns: min-content auto auto;
        padding: $spacing-4 $spacing-8;

        &:hover {
            background-color: $header-panel-bg-color;
            border-radius: 4px;
        }

        .mx_InviteDialog_tile--room_selected {
            border-radius: 36px;
            background-color: var(--cpd-color-bg-success-subtle);

            &::before {
                content: "";
                width: 24px;
                height: 24px;
                grid-column: 1;
                grid-row: 1;
                mask-image: url("@vector-im/compound-design-tokens/icons/check.svg");
                mask-size: 100%;
                mask-repeat: no-repeat;
                position: absolute;
                top: 6px; /* 50% */
                left: 6px; /* 50% */
                background-color: $primary-content;
            }
        }

        .mx_InviteDialog_tile--room_time {
            margin-inline-start: auto;
            width: max-content;
            font-size: $font-12px;
            color: $muted-fg-color;
        }

        .mx_InviteDialog_tile--room_highlight {
            font-weight: 900;
        }
    }

    &.mx_InviteDialog_tile--inviterError {
        grid-template-columns: max-content auto; /* max-content = avatar width */
        margin-bottom: $spacing-24;

        &:last-child {
            margin-bottom: 0;
        }

        .mx_InviteDialog_tile--inviterError_errorText {
            grid-row-start: 2;
            grid-column-start: 2;

            font-size: $font-15px;
            color: $alert;
        }
    }

    * {
        vertical-align: middle;
    }

    .mx_InviteDialog_tile_avatarStack,
    .mx_InviteDialog_tile--room_selected {
        width: 36px;
        height: 36px;
        display: inline-block;
        position: relative;
    }

    .mx_InviteDialog_tile_avatarStack {
        grid-row-start: 1;
        grid-column-start: 1;

        & > * {
            position: absolute;
            top: 0;
            left: 0;
        }
    }

    .mx_InviteDialog_tile_nameStack {
        grid-row-start: 1;
        grid-column-start: 2;

        display: flex;
        flex-flow: column;
        align-self: center;
        align-items: baseline;
        gap: 2px 0;
        overflow: hidden;

        .mx_InviteDialog_tile_nameStack_name,
        .mx_InviteDialog_tile_nameStack_userId {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            max-width: 100%;
        }

        .mx_InviteDialog_tile_nameStack_name {
            font-size: $font-15px;
            font-weight: var(--cpd-font-weight-semibold);
            color: $primary-content;
        }

        .mx_InviteDialog_tile_nameStack_userId {
            font-size: $font-12px;
            color: $muted-fg-color;
        }
    }
}

.mx_InviteDialog_multiInviterError {
    > h4 {
        font-size: $font-15px;
        line-height: $font-24px;
        color: $secondary-content;
        font-weight: normal;
    }
}

.mx_InviteDialog_identityServer {
    margin-top: 1em;
}

.mx_InviteDialog_oneThreepid {
    font-size: $font-12px;
    margin: $spacing-8 0;
}
