/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

$SpaceRoomViewInnerWidth: 428px;

@define-mixin SpacePillButton {
    position: relative;
    padding: 16px 32px 16px 72px;
    width: 432px;
    box-sizing: border-box;
    border-radius: 8px;
    border: 1px solid $input-border-color;
    font-size: $font-15px;
    margin: 20px 0;

    > h3 {
        font-weight: $font-semi-bold;
        margin: 0 0 4px;
    }

    > span {
        color: $secondary-content;
    }

    &::before {
        position: absolute;
        content: '';
        width: 32px;
        height: 32px;
        top: 24px;
        left: 20px;
        mask-position: center;
        mask-repeat: no-repeat;
        mask-size: 24px;
        background-color: $tertiary-content;
    }

    &:hover {
        border-color: $accent-color;

        &::before {
            background-color: $accent-color;
        }

        > span {
            color: $primary-content;
        }
    }
}

.mx_SpaceRoomView {
    overflow-y: auto;
    flex: 1;

    .mx_MainSplit > div:first-child {
        padding: 80px 60px;
        flex-grow: 1;
        max-height: 100%;
        overflow-y: auto;

        h1 {
            margin: 0;
            font-size: $font-24px;
            font-weight: $font-semi-bold;
            color: $primary-content;
            width: max-content;
        }

        .mx_SpaceRoomView_description {
            font-size: $font-15px;
            color: $secondary-content;
            margin-top: 12px;
            margin-bottom: 24px;
            max-width: $SpaceRoomViewInnerWidth;
        }

        .mx_AddExistingToSpace {
            max-width: $SpaceRoomViewInnerWidth;

            .mx_AddExistingToSpace_content {
                height: calc(100vh - 360px);
                max-height: 400px;
            }
        }

        &:not(.mx_SpaceRoomView_landing) .mx_SpaceFeedbackPrompt {
            width: $SpaceRoomViewInnerWidth;
        }

        .mx_SpaceRoomView_buttons {
            display: block;
            margin-top: 44px;
            width: $SpaceRoomViewInnerWidth;
            text-align: right; // button alignment right

            .mx_AccessibleButton_hasKind {
                padding: 8px 22px;
                margin-left: 16px;
            }

            input.mx_AccessibleButton {
                border: none; // override default styles
            }
        }

        .mx_Field {
            max-width: $SpaceRoomViewInnerWidth;

            & + .mx_Field {
                margin-top: 28px;
            }
        }

        .mx_SpaceRoomView_errorText {
            font-weight: $font-semi-bold;
            font-size: $font-12px;
            line-height: $font-15px;
            color: $notice-primary-color;
            margin-bottom: 28px;
        }

        .mx_AccessibleButton_disabled {
            cursor: not-allowed;
        }
    }

    .mx_SpaceRoomView_preview {
        padding: 32px 24px !important; // override default padding from above
        margin: auto;
        max-width: 480px;
        box-sizing: border-box;
        box-shadow: 2px 15px 30px $dialog-shadow-color;
        border-radius: 8px;
        position: relative;

        // XXX remove this when spaces leaves Beta
        .mx_BetaCard_betaPill {
            position: absolute;
            right: 24px;
            top: 32px;
        }
        // XXX remove this when spaces leaves Beta
        .mx_SpaceRoomView_preview_spaceBetaPrompt {
            font-weight: $font-semi-bold;
            font-size: $font-14px;
            line-height: $font-24px;
            color: $primary-content;
            margin-top: 24px;
            position: relative;
            padding-left: 24px;

            .mx_AccessibleButton_kind_link {
                display: inline;
                padding: 0;
                font-size: inherit;
                line-height: inherit;
            }

            &::before {
                content: "";
                position: absolute;
                height: $font-24px;
                width: 20px;
                left: 0;
                mask-repeat: no-repeat;
                mask-position: center;
                mask-size: contain;
                mask-image: url('$(res)/img/element-icons/room/room-summary.svg');
                background-color: $secondary-content;
            }
        }

        .mx_SpaceRoomView_preview_migratedCommunity {
            margin-bottom: 16px;
            padding: 8px 12px;
            border-radius: 8px;
            border: 1px solid $input-border-color;
            width: max-content;

            .mx_BaseAvatar {
                margin-right: 4px;
            }
        }

        .mx_SpaceRoomView_preview_inviter {
            display: flex;
            align-items: center;
            margin-bottom: 20px;
            font-size: $font-15px;

            > div {
                margin-left: 8px;

                .mx_SpaceRoomView_preview_inviter_name {
                    line-height: $font-18px;
                }

                .mx_SpaceRoomView_preview_inviter_mxid {
                    line-height: $font-24px;
                    color: $secondary-content;
                }
            }
        }

        > .mx_RoomAvatar_isSpaceRoom {
            &.mx_BaseAvatar_image, .mx_BaseAvatar_image {
                border-radius: 12px;
            }
        }

        h1.mx_SpaceRoomView_preview_name {
            margin: 20px 0 !important; // override default margin from above
        }

        .mx_SpaceRoomView_preview_topic {
            font-size: $font-14px;
            line-height: $font-22px;
            color: $secondary-content;
            margin: 20px 0;
            max-height: 160px;
            overflow-y: auto;
        }

        .mx_SpaceRoomView_preview_joinButtons {
            margin-top: 20px;

            .mx_AccessibleButton {
                width: 200px;
                box-sizing: border-box;
                padding: 14px 0;

                & + .mx_AccessibleButton {
                    margin-left: 20px;
                }
            }
        }
    }

    .mx_SpaceRoomView_landing {
        display: flex;
        flex-direction: column;
        min-width: 0;

        > .mx_BaseAvatar_image,
        > .mx_BaseAvatar > .mx_BaseAvatar_image {
            border-radius: 12px;
        }

        .mx_SpaceRoomView_landing_name {
            margin: 24px 0 16px;
            font-size: $font-15px;
            color: $secondary-content;

            > span {
                display: inline-block;
            }

            .mx_SpaceRoomView_landing_nameRow {
                margin-top: 12px;

                > h1 {
                    display: inline-block;
                }
            }

            .mx_SpaceRoomView_landing_inviter {
                .mx_BaseAvatar {
                    margin-right: 4px;
                    vertical-align: middle;
                }
            }
        }

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

            .mx_SpaceRoomView_info {
                display: inline-block;
                margin: 0 auto 0 0;
            }

            .mx_FacePile {
                display: inline-block;
                margin-right: 12px;

                .mx_FacePile_faces {
                    cursor: pointer;
                }
            }

            .mx_SpaceRoomView_landing_inviteButton {
                position: relative;
                padding: 4px 18px 4px 40px;
                line-height: $font-24px;
                height: min-content;

                &::before {
                    position: absolute;
                    content: "";
                    left: 8px;
                    height: 16px;
                    width: 16px;
                    background: #ffffff; // white icon fill
                    mask-position: center;
                    mask-size: 16px;
                    mask-repeat: no-repeat;
                    mask-image: url('$(res)/img/element-icons/room/invite.svg');
                }
            }

            .mx_SpaceRoomView_landing_settingsButton {
                position: relative;
                margin-left: 16px;
                width: 24px;
                height: 24px;

                &::before {
                    position: absolute;
                    content: "";
                    left: 0;
                    top: 0;
                    height: 24px;
                    width: 24px;
                    background: $tertiary-content;
                    mask-position: center;
                    mask-size: contain;
                    mask-repeat: no-repeat;
                    mask-image: url('$(res)/img/element-icons/settings.svg');
                }
            }
        }

        .mx_SpaceRoomView_landing_topic {
            font-size: $font-15px;
            margin-top: 12px;
            margin-bottom: 16px;
            white-space: pre-wrap;
            word-wrap: break-word;
        }

        .mx_SearchBox {
            margin: 0 0 20px;
            flex: 0;
        }

        .mx_SpaceFeedbackPrompt {
            padding: 7px; // 8px - 1px border
            border: 1px solid rgba($primary-content, .1);
            border-radius: 8px;
            width: max-content;
            margin: 0 0 -40px auto; // collapse its own height to not push other components down
        }
    }

    .mx_SpaceRoomView_privateScope {
        > .mx_AccessibleButton {
            @mixin SpacePillButton;
        }

        .mx_SpaceRoomView_privateScope_justMeButton::before {
            mask-image: url('$(res)/img/element-icons/room/members.svg');
        }

        .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton::before {
            mask-image: url('$(res)/img/element-icons/community-members.svg');
        }
    }

    .mx_SpaceRoomView_betaWarning {
        padding: 12px 12px 12px 54px;
        position: relative;
        font-size: $font-15px;
        line-height: $font-24px;
        width: 432px;
        border-radius: 8px;
        background-color: $info-plinth-bg-color;
        color: $secondary-content;
        box-sizing: border-box;

        > h3 {
            font-weight: $font-semi-bold;
            font-size: inherit;
            line-height: inherit;
            margin: 0;
        }

        > p {
            font-size: inherit;
            line-height: inherit;
            margin: 0;
        }

        &::before {
            mask-image: url('$(res)/img/element-icons/room/room-summary.svg');
            mask-position: center;
            mask-repeat: no-repeat;
            mask-size: contain;
            content: '';
            width: 20px;
            height: 20px;
            position: absolute;
            top: 14px;
            left: 14px;
            background-color: $secondary-content;
        }
    }

    .mx_SpaceRoomView_inviteTeammates {
        // XXX remove this when spaces leaves Beta
        .mx_SpaceRoomView_inviteTeammates_betaDisclaimer {
            padding: 58px 16px 16px;
            position: relative;
            border-radius: 8px;
            background-color: $header-panel-bg-color;
            max-width: $SpaceRoomViewInnerWidth;
            margin: 20px 0 30px;
            box-sizing: border-box;

            .mx_BetaCard_betaPill {
                position: absolute;
                left: 16px;
                top: 16px;
            }
        }

        .mx_SpaceRoomView_inviteTeammates_buttons {
            color: $secondary-content;
            margin-top: 28px;

            .mx_AccessibleButton {
                position: relative;
                display: inline-block;
                padding-left: 32px;
                line-height: 24px; // to center icons

                &::before {
                    content: "";
                    position: absolute;
                    height: 24px;
                    width: 24px;
                    top: 0;
                    left: 0;
                    background-color: $secondary-content;
                    mask-repeat: no-repeat;
                    mask-position: center;
                    mask-size: contain;
                }

                & + .mx_AccessibleButton {
                    margin-left: 32px;
                }
            }

            .mx_SpaceRoomView_inviteTeammates_inviteDialogButton::before {
                mask-image: url('$(res)/img/element-icons/room/invite.svg');
            }
        }
    }
}

.mx_SpaceRoomView_info {
    color: $secondary-content;
    font-size: $font-15px;
    line-height: $font-24px;
    margin: 20px 0;

    .mx_SpaceRoomView_info_public,
    .mx_SpaceRoomView_info_private {
        padding-left: 20px;
        position: relative;

        &::before {
            position: absolute;
            content: "";
            width: 20px;
            height: 20px;
            top: 0;
            left: -2px;
            mask-position: center;
            mask-repeat: no-repeat;
            background-color: $tertiary-content;
        }
    }

    .mx_SpaceRoomView_info_public::before {
        mask-size: 12px;
        mask-image: url("$(res)/img/globe.svg");
    }

    .mx_SpaceRoomView_info_private::before {
        mask-size: 14px;
        mask-image: url("$(res)/img/element-icons/lock.svg");
    }

    .mx_AccessibleButton_kind_link {
        color: inherit;
        position: relative;
        padding-left: 16px;

        &::before {
            content: "·"; // visual separator
            position: absolute;
            left: 6px;
        }
    }
}
