/* Copyright 2024 New Vector Ltd. Copyright 2020-2023 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ /* Note: the room tile expects to be in a flexbox column container */ .mx_RoomTile { margin-bottom: 4px; padding: 4px; /* The tile is also a flexbox row itself */ display: flex; contain: content; /* Not strict as it will break when resizing a sublist vertically */ box-sizing: border-box; font-size: var(--cpd-font-size-body-sm); &.mx_RoomTile_selected, &:hover, &:focus-within, &.mx_RoomTile_hasMenuOpen { background-color: $panel-actions; border-radius: 8px; } .mx_DecoratedRoomAvatar, .mx_RoomTile_avatarContainer { margin-right: 10px; } .mx_RoomTile_details { min-width: 0; } .mx_RoomTile_titleContainer { height: 32px; min-width: 0; flex-basis: 0; flex-grow: 1; margin-right: 8px; /* spacing to buttons/badges */ /* Create a new column layout flexbox for the title parts */ display: flex; flex-direction: column; justify-content: center; .mx_RoomTile_subtitle { align-items: center; color: $secondary-content; display: flex; gap: $spacing-4; line-height: 1.25; position: relative; top: -1px; } .mx_RoomTile_title, .mx_RoomTile_subtitle_text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .mx_RoomTile_title { font: var(--cpd-font-body-md-regular); line-height: 1.25; &.mx_RoomTile_titleHasUnreadEvents { font-weight: var(--cpd-font-weight-semibold); } } .mx_RoomTile_titleWithSubtitle { margin-top: -2px; /* shift the title up a bit more */ } } .mx_RoomTile_notificationsButton { margin-left: 4px; /* spacing between buttons */ } .mx_RoomTile_badgeContainer { height: 16px; /* don't set width so that it takes no space when there is no badge to show */ margin: auto 0; /* vertically align */ /* Create a flexbox to make aligning dot badges easier */ display: flex; align-items: center; .mx_NotificationBadge { margin-right: 2px; /* centering */ } .mx_NotificationBadge_dot { /* make the smaller dot occupy the same width for centering */ margin-left: 5px; margin-right: 7px; } } /* The context menu buttons are hidden by default */ .mx_RoomTile_menuButton, .mx_RoomTile_notificationsButton { width: 20px; min-width: 20px; /* yay flex */ height: 20px; margin-top: auto; margin-bottom: auto; position: relative; display: none; &::before { top: 2px; left: 2px; content: ""; width: 16px; height: 16px; position: absolute; mask-position: center; mask-size: contain; mask-repeat: no-repeat; background: var(--cpd-color-icon-primary); } } /* If the room has an overriden notification setting then we always show the notifications menu button */ .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show { display: block; } .mx_RoomTile_menuButton::before { mask-image: url("@vector-im/compound-design-tokens/icons/overflow-horizontal.svg"); } &:not(.mx_RoomTile_minimized, .mx_RoomTile_sticky) { &:hover, &:focus-within, &.mx_RoomTile_hasMenuOpen { /* Hide the badge container on hover because it'll be a menu button */ .mx_RoomTile_badgeContainer { width: 0; height: 0; display: none; } .mx_RoomTile_notificationsButton, .mx_RoomTile_menuButton { display: block; } } } &.mx_RoomTile_minimized { flex-direction: column; align-items: center; position: relative; .mx_DecoratedRoomAvatar, .mx_RoomTile_avatarContainer { margin-right: 0; } } } /* We use these both in context menus and the room tiles */ .mx_RoomTile_iconBell::before { mask-image: url("$(res)/img/element-icons/notifications.svg"); } .mx_RoomTile_iconBellDot::before { mask-image: url("$(res)/img/element-icons/roomlist/notifications-default.svg"); } .mx_RoomTile_iconBellCrossed::before { mask-image: url("$(res)/img/element-icons/roomlist/notifications-off.svg"); } .mx_RoomTile_iconBellMentions::before { mask-image: url("$(res)/img/element-icons/roomlist/notifications-dm.svg"); } .mx_RoomTile_contextMenu { .mx_RoomTile_iconStar::before { mask-image: url("@vector-im/compound-design-tokens/icons/favourite-solid.svg"); } .mx_RoomTile_iconArrowDown::before { mask-image: url("$(res)/img/element-icons/roomlist/low-priority.svg"); } .mx_RoomTile_iconNotificationsDefault::before { mask-image: url("$(res)/img/element-icons/notifications.svg"); } .mx_RoomTile_iconNotificationsAllMessages::before { mask-image: url("$(res)/img/element-icons/roomlist/notifications-default.svg"); } .mx_RoomTile_iconNotificationsMentionsKeywords::before { mask-image: url("$(res)/img/element-icons/roomlist/notifications-dm.svg"); } .mx_RoomTile_iconNotificationsNone::before { mask-image: url("$(res)/img/element-icons/roomlist/notifications-off.svg"); } .mx_RoomTile_iconPeople::before { mask-image: url("@vector-im/compound-design-tokens/icons/user-profile-solid.svg"); } .mx_RoomTile_iconFiles::before { mask-image: url("@vector-im/compound-design-tokens/icons/files.svg"); } .mx_RoomTile_iconPins::before { mask-image: url("$(res)/img/element-icons/room/pin-upright.svg"); } .mx_RoomTile_iconWidgets::before { mask-image: url("@vector-im/compound-design-tokens/icons/extensions-solid.svg"); } .mx_RoomTile_iconSettings::before { mask-image: url("@vector-im/compound-design-tokens/icons/settings-solid.svg"); } .mx_RoomTile_iconExport::before { mask-image: url("@vector-im/compound-design-tokens/icons/export-archive.svg"); } .mx_RoomTile_iconCopyLink::before { mask-image: url("@vector-im/compound-design-tokens/icons/link.svg"); } .mx_RoomTile_iconInvite::before { mask-image: url("$(res)/img/element-icons/room/invite.svg"); } .mx_RoomTile_iconSignOut::before { mask-image: url("@vector-im/compound-design-tokens/icons/leave.svg"); } }