mv element.io @types __mocks__/ debian docker module_system/ playwright res src test webapp Dockerfile .dockerignore .eslintignore .stylelintrc.cjs babel.config.cjs recorder-worklet-loader.cjs .modernizr.json components.json config.json config.sample.json package.json project.json tsconfig.json tsconfig.module_system.json jest.config.ts playwright.config.ts webpack.config.ts build_config.sample.yaml apps/web/
mkdir apps/web/scripts
mv scripts/{cleanup.sh,ci_package.sh,copy-res.ts,deploy.py,package.sh} apps/web/scripts
And a couple of gitignore tweaks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
/*
|
||||
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_BaseCard {
|
||||
--BaseCard_EventTile_line-padding-block: 2px;
|
||||
--BaseCard_EventTile-spacing-inline: 36px;
|
||||
--BaseCard_header-button-size: 28px;
|
||||
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
font-size: var(--cpd-font-size-body-md);
|
||||
|
||||
.mx_BaseCard_header {
|
||||
height: 64px;
|
||||
padding: var(--cpd-space-4x);
|
||||
box-sizing: border-box;
|
||||
/* changing the color from $separator to transparent as it is
|
||||
the best visual output during the transition period. This will be
|
||||
reintroduced at a later stage. */
|
||||
border-bottom: 1px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: var(--cpd-space-3x);
|
||||
flex-shrink: 0;
|
||||
border-block-end: var(--cpd-border-width-1) solid $separator;
|
||||
|
||||
.mx_BaseCard_header_spacer {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
> h2 {
|
||||
margin: 0 44px;
|
||||
font: var(--cpd-font-body-sm-semibold);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.mx_BaseCard_header_title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
height: 24px;
|
||||
flex: 1;
|
||||
|
||||
.mx_BaseCard_header_title_heading {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
font: var(--cpd-font-body-md-medium);
|
||||
color: var(--cpd-color-text-secondary);
|
||||
}
|
||||
|
||||
.mx_BaseCard_header_title_button--option {
|
||||
position: relative;
|
||||
width: calc(var(--BaseCard_header-button-size) - 4px);
|
||||
height: calc(var(--BaseCard_header-button-size) - 4px);
|
||||
padding: 2px;
|
||||
|
||||
svg {
|
||||
width: inherit;
|
||||
height: inherit;
|
||||
display: block;
|
||||
color: $secondary-content;
|
||||
}
|
||||
|
||||
&:hover svg {
|
||||
color: $primary-content;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_AutoHideScrollbar {
|
||||
min-height: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
scrollbar-gutter: stable;
|
||||
}
|
||||
|
||||
.mx_BaseCard_footer {
|
||||
padding-top: $spacing-4;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
|
||||
.mx_AccessibleButton_kind_secondary {
|
||||
color: $secondary-content;
|
||||
background-color: rgb(141, 151, 165, 0.2);
|
||||
font: var(--cpd-font-body-md-semibold);
|
||||
}
|
||||
|
||||
.mx_AccessibleButton_disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_ContextualMenu_wrapper.mx_BaseCard_header_title {
|
||||
.mx_ContextualMenu {
|
||||
position: initial;
|
||||
|
||||
span:first-of-type {
|
||||
font-weight: var(--cpd-font-weight-semibold);
|
||||
font-size: inherit;
|
||||
color: $primary-content;
|
||||
}
|
||||
|
||||
font: var(--cpd-font-body-sm-regular);
|
||||
color: $primary-content;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
|
||||
border: var(--cpd-border-width-1) solid var(--cpd-color-border-interactive-secondary);
|
||||
box-shadow: 0px 4px 24px rgb(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.mx_ContextualMenu_chevron_top {
|
||||
left: auto;
|
||||
right: 22px;
|
||||
border-bottom-color: var(--cpd-color-border-interactive-secondary);
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
border: inherit;
|
||||
border-bottom-color: var(--cpd-color-bg-canvas-default);
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: -8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
Copyright 2024 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_EmptyState {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: var(--cpd-space-4x);
|
||||
text-align: center;
|
||||
|
||||
svg {
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px;
|
||||
padding: var(--cpd-space-3x);
|
||||
background-color: $panel-actions;
|
||||
}
|
||||
|
||||
&::before {
|
||||
/* Bloom using magic numbers directly out of Figma */
|
||||
content: "";
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
width: 642px;
|
||||
height: 775px;
|
||||
right: -253.77px;
|
||||
top: 0;
|
||||
background: radial-gradient(49.95% 49.95% at 50% 50%, rgb(13, 189, 139, 0.12) 0%, rgb(18, 115, 235, 0) 100%);
|
||||
transform: rotate(-89.69deg);
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
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_EncryptionInfo_spinner {
|
||||
.mx_Spinner {
|
||||
margin-top: 25px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
text-align: center;
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
Copyright 2024 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_ExtensionsCard {
|
||||
--cpd-separator-spacing: var(--cpd-space-6x);
|
||||
--AddExtension-overlap: -76px;
|
||||
.mx_AutoHideScrollbar {
|
||||
padding: 0 var(--cpd-space-4x);
|
||||
margin-top: var(--cpd-space-6x);
|
||||
box-sizing: border-box;
|
||||
|
||||
/* Styling for the "Add extensions" button */
|
||||
& > button {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_ExtensionsCard_container {
|
||||
text-align: center;
|
||||
margin: $spacing-20 var(--cpd-space-4x) 0;
|
||||
}
|
||||
|
||||
.mx_ExtensionsCard_Button {
|
||||
/* this button is special so we have to override some of the original styling */
|
||||
/* as we will be applying it in its children */
|
||||
padding: 0;
|
||||
height: auto;
|
||||
color: $tertiary-content;
|
||||
position: relative;
|
||||
|
||||
.mx_WidgetAvatar {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.mx_ExtensionsCard_icon_app {
|
||||
padding: var(--cpd-space-2x) var(--cpd-space-12x) var(--cpd-space-2x) var(--cpd-space-3x);
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
p {
|
||||
margin: 0 var(--cpd-space-3x);
|
||||
color: $primary-content;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_ExtensionsCard_app_pinToggle,
|
||||
.mx_ExtensionsCard_app_options {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
height: 100%; /* to give bigger interactive zone */
|
||||
width: 24px;
|
||||
padding: var(--cpd-space-3x) var(--cpd-space-1x);
|
||||
box-sizing: border-box;
|
||||
flex-shrink: 0;
|
||||
|
||||
svg {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
color: $icon-button-color;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
top: var(--cpd-space-2x); /* equal to padding-top of parent */
|
||||
left: 0;
|
||||
border-radius: 12px;
|
||||
background-color: rgb(141, 151, 165, 0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_ExtensionsCard_app_pinToggle {
|
||||
right: 8px;
|
||||
}
|
||||
|
||||
.mx_ExtensionsCard_app_options {
|
||||
right: 32px; /* 24 + 8 */
|
||||
}
|
||||
|
||||
&.mx_ExtensionsCard_Button_pinned {
|
||||
&::after {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.mx_ExtensionsCard_app_pinToggle svg {
|
||||
color: $accent;
|
||||
}
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: unset;
|
||||
}
|
||||
|
||||
&::after {
|
||||
top: var(--cpd-space-2x); /* re-align based on the height change */
|
||||
pointer-events: none; /* pass through to the real button */
|
||||
}
|
||||
}
|
||||
|
||||
/* Set layout for everyone button */
|
||||
a[data-kind="primary"] {
|
||||
margin-top: var(--cpd-space-10x);
|
||||
}
|
||||
|
||||
.mx_EmptyState::before {
|
||||
/* Overlap the Add extensions button */
|
||||
top: var(--AddExtension-overlap);
|
||||
}
|
||||
|
||||
.mx_EmptyState {
|
||||
/* Stop empty state scrolling */
|
||||
height: calc(100% + var(--AddExtension-overlap));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
Copyright 2021 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_PinnedMessagesCard {
|
||||
--unpin-height: 76px;
|
||||
|
||||
.mx_PinnedMessagesCard_wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: var(--cpd-space-4x);
|
||||
gap: var(--cpd-space-6x);
|
||||
overflow-y: auto;
|
||||
|
||||
.mx_PinnedMessagesCard_Separator {
|
||||
min-height: 1px;
|
||||
/* Override default compound value */
|
||||
margin-block: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_PinnedMessagesCard_wrapper_unpin_all {
|
||||
/* Remove the unpin all button height and the top and bottom padding */
|
||||
height: calc(100% - var(--unpin-height) - calc(var(--cpd-space-4x) * 2));
|
||||
}
|
||||
|
||||
.mx_PinnedMessagesCard_unpin {
|
||||
/* Make it float at the bottom of the unpin panel */
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: var(--unpin-height);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
box-shadow: 0 4px 24px 0 rgb(27, 29, 34, 0.1);
|
||||
background: var(--cpd-color-bg-canvas-default);
|
||||
}
|
||||
|
||||
.mx_EventTile_body {
|
||||
word-break: break-word;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
Copyright 2024, 2025 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_RoomSummaryCard {
|
||||
--cpd-separator-inset: var(--cpd-space-4x);
|
||||
--cpd-separator-spacing: var(--cpd-space-4x);
|
||||
|
||||
.mx_RoomSummaryCard_container {
|
||||
text-align: center;
|
||||
margin: $spacing-20 var(--cpd-space-4x) 0;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_roomName,
|
||||
.mx_RoomSummaryCard_alias {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
white-space: pre-wrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_alias {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_topic {
|
||||
padding: 0 12px;
|
||||
color: var(--cpd-color-text-secondary);
|
||||
|
||||
.mx_RoomSummaryCard_topic_box {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_topic_container {
|
||||
text-align: start;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_topic_edit {
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
p {
|
||||
white-space: pre-wrap;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_topic_chevron {
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
&.mx_RoomSummaryCard_topic_collapsed {
|
||||
p {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_topic_chevron {
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_AccessibleButton_kind_link {
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
font-size: $font-13px;
|
||||
font-weight: var(--cpd-font-weight-semibold);
|
||||
}
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_badges {
|
||||
margin: var(--cpd-space-4x) 0;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_search {
|
||||
flex-grow: 1;
|
||||
min-width: 0;
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button {
|
||||
display: unset; /* override _common.pcss which inhibits this */
|
||||
}
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_roomName {
|
||||
margin: $spacing-12 0 $spacing-4;
|
||||
}
|
||||
|
||||
.mx_RoomSummaryCard_bottomOptions {
|
||||
margin: 0 0 var(--cpd-space-8x);
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
Copyright 2021-2024 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_ThreadPanel {
|
||||
height: 100px;
|
||||
overflow: visible;
|
||||
|
||||
.mx_ThreadPanelHeader {
|
||||
height: 60px;
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
padding: 16px;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid var(--cpd-color-gray-400);
|
||||
|
||||
.mx_AccessibleButton {
|
||||
font-size: 12px;
|
||||
color: $secondary-content;
|
||||
}
|
||||
|
||||
.mx_ThreadPanel_vertical_separator {
|
||||
height: 28px;
|
||||
margin-left: var(--cpd-space-3x);
|
||||
margin-right: var(--cpd-space-2x);
|
||||
border-left: 1px solid var(--cpd-color-gray-400);
|
||||
}
|
||||
|
||||
.mx_ThreadPanel_dropdown {
|
||||
font: var(--cpd-font-body-sm-regular);
|
||||
padding: 3px $spacing-4 3px $spacing-8;
|
||||
border-radius: 4px;
|
||||
line-height: 1.5;
|
||||
user-select: none;
|
||||
|
||||
&:hover,
|
||||
&[aria-expanded="true"] {
|
||||
background: $quinary-content;
|
||||
}
|
||||
|
||||
svg {
|
||||
margin-left: 2px;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
display: inline-block;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_AutoHideScrollbar,
|
||||
.mx_RoomView_messagePanelSpinner {
|
||||
background-color: $background;
|
||||
border-radius: 8px;
|
||||
padding-inline-end: 0;
|
||||
overflow-y: scroll; /* set gap between the thread tile and the right border */
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.mx_EventTile[data-layout="group"] {
|
||||
.mx_MessageActionBar {
|
||||
right: 0;
|
||||
top: -36px; /* 2px above EventTile */
|
||||
z-index: 10; /* See _EventTile.pcss */
|
||||
}
|
||||
}
|
||||
|
||||
/* For style rules of EventTile in a thread, see _EventTile.pcss */
|
||||
&.mx_ThreadView {
|
||||
max-height: 100%;
|
||||
|
||||
.mx_ThreadView_timelinePanelWrapper {
|
||||
position: relative;
|
||||
min-height: 0; /* don't displace the composer */
|
||||
flex-grow: 1;
|
||||
|
||||
.mx_FileDropTarget {
|
||||
border-radius: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_MessageComposer_sendMessage {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
// Make use of the space above the composer buttons too
|
||||
.mx_Autocomplete {
|
||||
width: calc(100% + 140px);
|
||||
}
|
||||
&.mx_ThreadView_narrow .mx_Autocomplete {
|
||||
width: calc(100% + 108px);
|
||||
}
|
||||
}
|
||||
|
||||
.mx_RoomView_messagePanel {
|
||||
&.mx_RoomView_messageListWrapper {
|
||||
position: initial;
|
||||
}
|
||||
|
||||
.mx_RoomView_messageListWrapper {
|
||||
width: calc(100% + 6px); /* 8px - 2px */
|
||||
}
|
||||
|
||||
.mx_RoomView_empty {
|
||||
display: contents;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_RoomView_MessageList {
|
||||
padding-inline-start: $spacing-8;
|
||||
padding-inline-end: $spacing-8;
|
||||
content-visibility: visible;
|
||||
}
|
||||
|
||||
.mx_EventTile,
|
||||
.mx_GenericEventListSummary {
|
||||
/* Account for scrollbar when hovering */
|
||||
padding-top: 0;
|
||||
|
||||
.mx_TimelineSeparator {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.mx_EventTile_clamp:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_MessageComposer {
|
||||
background-color: $background;
|
||||
border-radius: 8px;
|
||||
margin-top: 8px;
|
||||
padding: 0 8px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.mx_MessageTimestamp {
|
||||
color: $secondary-content;
|
||||
}
|
||||
|
||||
.mx_BaseCard_footer {
|
||||
text-align: left;
|
||||
font-size: $font-12px;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
gap: 4px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
padding-right: 8px;
|
||||
|
||||
.mx_AccessibleButton_kind_link_inline {
|
||||
color: $secondary-content;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_ContextualMenu_wrapper {
|
||||
.mx_ThreadPanel_Header_FilterOptionItem {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
justify-content: space-between;
|
||||
flex-direction: column;
|
||||
padding: 10px 20px 10px 30px;
|
||||
position: relative;
|
||||
|
||||
&:hover {
|
||||
background-color: $event-selected-color;
|
||||
}
|
||||
|
||||
&[aria-checked="true"] {
|
||||
span:first-child {
|
||||
margin-left: -20px;
|
||||
}
|
||||
|
||||
svg {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin-right: 8px;
|
||||
color: $primary-content;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
position: absolute;
|
||||
top: 14px;
|
||||
left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
span:last-child {
|
||||
color: $secondary-content;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
Copyright 2021, 2022 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_TimelineCard {
|
||||
.mx_TimelineCard_timeline {
|
||||
overflow: hidden;
|
||||
position: relative; /* offset parent for jump to bottom button */
|
||||
flex: 1;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.mx_NewRoomIntro {
|
||||
margin-inline-start: var(--BaseCard_EventTile-spacing-inline);
|
||||
margin-inline-end: var(--BaseCard_EventTile-spacing-inline);
|
||||
}
|
||||
|
||||
.mx_EventTile_content {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.mx_EventTile {
|
||||
.mx_ThreadSummary {
|
||||
position: relative;
|
||||
padding-right: 11px;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: -16px;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
border-bottom: 1px solid $message-action-bar-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
&[data-layout="irc"],
|
||||
&[data-layout="group"] {
|
||||
--TimelineCard_ReadReceiptGroup-inset-block-start: -6px;
|
||||
--EventTile_group_line-spacing-inline-start: var(--BaseCard_EventTile-spacing-inline);
|
||||
|
||||
&.mx_EventTile_info .mx_EventTile_line,
|
||||
.mx_EventTile_line {
|
||||
padding: var(--BaseCard_EventTile_line-padding-block) var(--BaseCard_EventTile-spacing-inline);
|
||||
padding-inline-end: var(--MessageTimestamp-width); /* ensure timestamp is not hidden */
|
||||
|
||||
.mx_EventTile_e2eIcon {
|
||||
inset-inline-start: $spacing-8;
|
||||
}
|
||||
}
|
||||
|
||||
&.mx_EventTile_info {
|
||||
.mx_EventTile_avatar {
|
||||
inset-inline-start: 18px;
|
||||
}
|
||||
|
||||
/* Info events should have the same size as state events, those
|
||||
* are usually wrapped in a generic event list summary */
|
||||
font: var(--cpd-font-body-sm-regular);
|
||||
}
|
||||
|
||||
.mx_EventTile_avatar {
|
||||
inset-inline-start: -3px;
|
||||
}
|
||||
|
||||
.mx_EventTile_msgOption {
|
||||
margin-inline-end: 0;
|
||||
|
||||
.mx_ReadReceiptGroup {
|
||||
top: var(--TimelineCard_ReadReceiptGroup-inset-block-start);
|
||||
}
|
||||
}
|
||||
|
||||
.mx_DisambiguatedProfile,
|
||||
.mx_ThreadSummary {
|
||||
margin-inline-start: var(--BaseCard_EventTile-spacing-inline);
|
||||
}
|
||||
|
||||
.mx_DisambiguatedProfile {
|
||||
max-width: calc(100% - var(--BaseCard_EventTile-spacing-inline)); /* instead of $left-gutter */
|
||||
}
|
||||
|
||||
.mx_ReplyTile .mx_DisambiguatedProfile {
|
||||
margin-inline-start: 0;
|
||||
max-width: unset;
|
||||
}
|
||||
|
||||
.mx_MessageTimestamp {
|
||||
inset-inline: auto 0;
|
||||
font-size: $font-12px;
|
||||
}
|
||||
|
||||
.mx_ReactionsRow {
|
||||
/* See: var(--ThreadView_group_spacing-end) for ReactionsRow on _EventTile.pcss */
|
||||
margin-inline-end: $spacing-8;
|
||||
}
|
||||
|
||||
.mx_ThreadSummary {
|
||||
margin-inline-end: 0;
|
||||
max-width: min(calc(100% - 36px), 600px);
|
||||
}
|
||||
}
|
||||
|
||||
&[data-layout="irc"] {
|
||||
.mx_EventTile_avatar,
|
||||
.mx_MessageTimestamp {
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
|
||||
&[data-layout="group"] {
|
||||
/* Read receipt group on compact modern layout */
|
||||
/* This is required because mx_TimelineCard is a child element wrapped by mx_MatrixChat_useCompactLayout, */
|
||||
/* which specifies the default position of mx_ReadReceiptGroup on compact modern layout. */
|
||||
.mx_MatrixChat_useCompactLayout & .mx_ReadReceiptGroup {
|
||||
top: var(--TimelineCard_ReadReceiptGroup-inset-block-start);
|
||||
}
|
||||
}
|
||||
|
||||
&[data-layout="bubble"] {
|
||||
&::before {
|
||||
z-index: auto; /* enable background color on hover */
|
||||
}
|
||||
|
||||
&.mx_EventTile_info .mx_MessageActionBar {
|
||||
/* 1px: border width */
|
||||
inset-inline-end: calc(var(--container-gap-width) + 1px);
|
||||
}
|
||||
|
||||
.mx_ReactionsRow {
|
||||
position: relative; /* display on hover */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_LegacyCallEvent_wrapper {
|
||||
justify-content: center;
|
||||
margin: auto 5px;
|
||||
.mx_LegacyCallEvent {
|
||||
margin: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_GenericEventListSummary {
|
||||
&[data-layout="irc"],
|
||||
&[data-layout="group"] {
|
||||
.mx_EventTile_line,
|
||||
.mx_GenericEventListSummary_unstyledList > .mx_EventTile_info .mx_EventTile_avatar ~ .mx_EventTile_line {
|
||||
padding-inline-start: var(--BaseCard_EventTile-spacing-inline);
|
||||
padding-inline-end: var(--MessageTimestamp-width); /* ensure timestamp is not hidden */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_WhoIsTypingTile {
|
||||
margin-left: -12px; /* undo padding on the message list */
|
||||
}
|
||||
|
||||
.mx_WhoIsTypingTile_avatars {
|
||||
flex-basis: 48px; /* 12 (padding on message list) + 36 (padding on event lines) */
|
||||
}
|
||||
|
||||
.mx_GenericEventListSummary_unstyledList, /* RR next to a message on the event list summary */
|
||||
.mx_RoomView_MessageList {
|
||||
/* RR next to a message on the messsge list */
|
||||
.mx_EventTile[data-layout="bubble"] {
|
||||
.mx_ReadReceiptGroup {
|
||||
/* 6px: scroll bar width (magic number) */
|
||||
/* stylelint-disable-next-line declaration-colon-space-after */
|
||||
inset-inline-end: calc(
|
||||
-1 * var(--ReadReceiptGroup_EventBubbleTile-spacing-end) + var(--container-gap-width) + 6px
|
||||
);
|
||||
}
|
||||
|
||||
&.mx_EventTile_info {
|
||||
.mx_ReadReceiptGroup {
|
||||
inset-inline-end: -4px; /* align with RR outside of info tile */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,235 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
Copyright 2019 The Matrix.org Foundation C.I.C.
|
||||
Copyright 2015, 2016 OpenMarket Ltd
|
||||
|
||||
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_UserInfo.mx_BaseCard {
|
||||
/* UserInfo has a circular image at the top so it fits between the back & close buttons */
|
||||
padding-top: 0;
|
||||
overflow-y: auto;
|
||||
font-size: var(--cpd-font-size-body-sm);
|
||||
|
||||
.mx_UserInfo_container {
|
||||
padding: var(--cpd-space-2x) 0 var(--cpd-space-4x);
|
||||
margin: 0 var(--cpd-space-4x);
|
||||
|
||||
& + .mx_UserInfo_container {
|
||||
border-top: 1px solid $separator;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_UserInfo_memberDetailsContainer {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
margin-bottom: $spacing-8;
|
||||
}
|
||||
|
||||
.mx_RoomTile_titleContainer {
|
||||
width: 154px;
|
||||
}
|
||||
|
||||
.mx_RoomTile_badge {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mx_RoomTile_title {
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
.mx_UserInfo_avatar {
|
||||
margin: var(--cpd-space-12x) var(--cpd-space-4x) 0 var(--cpd-space-4x);
|
||||
|
||||
.mx_UserInfo_avatar_transition {
|
||||
max-width: 120px;
|
||||
aspect-ratio: 1 / 1;
|
||||
margin: 0 auto;
|
||||
transition: 0.5s;
|
||||
|
||||
.mx_BaseAvatar {
|
||||
/* Override the calculated font-size so that the letter isn't tiny */
|
||||
font-size: 4rem;
|
||||
}
|
||||
|
||||
.mx_BaseAvatar,
|
||||
.mx_BaseAvatar img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
text-transform: uppercase;
|
||||
color: $tertiary-content;
|
||||
font: var(--cpd-font-body-md-semibold);
|
||||
font-weight: var(--cpd-font-weight-semibold);
|
||||
margin: $spacing-4 0;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.mx_UserInfo_header {
|
||||
margin-bottom: var(--cpd-space-8x);
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.mx_UserInfo_profile {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--cpd-space-1x);
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-size: $font-20px;
|
||||
line-height: $font-25px;
|
||||
}
|
||||
|
||||
.mx_UserInfo_profile_name {
|
||||
min-height: 30px;
|
||||
|
||||
/* limit to 2 lines, show an ellipsis if it overflows */
|
||||
/* this looks webkit specific but is supported by Firefox 68+ */
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.mx_UserInfo_profile_mxid {
|
||||
color: var(--cpd-color-text-secondary);
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.mx_UserInfo_profileStatus {
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.mx_UserInfo_timezone {
|
||||
height: 20px;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/** Overrides for the copy to clipboard button **/
|
||||
.mx_CopyableText {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.mx_CopyableText_copyButton {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: unset;
|
||||
padding-left: var(--cpd-space-2x);
|
||||
}
|
||||
|
||||
.mx_CopyableText_copyButton::before {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-color: var(--cpd-color-icon-secondary-alpha);
|
||||
}
|
||||
}
|
||||
|
||||
.mx_UserInfo_timezone {
|
||||
margin: var(--cpd-space-1x) 0;
|
||||
}
|
||||
|
||||
.mx_PresenceLabel {
|
||||
font: var(--cpd-font-body-sm-regular);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.mx_UserInfo_verification {
|
||||
margin-top: var(--cpd-space-4x);
|
||||
height: 36px;
|
||||
|
||||
.mx_UserInfo_verified_badge {
|
||||
min-width: 68px;
|
||||
height: 20px;
|
||||
|
||||
.mx_UserInfo_verified_icon {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.mx_UserInfo_verified_label {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_UserInfo_verification_unavailable {
|
||||
color: var(--cpd-color-text-secondary);
|
||||
}
|
||||
}
|
||||
|
||||
.mx_UserInfo_memberDetails {
|
||||
.mx_UserInfo_profileField {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
margin: 6px 0;
|
||||
|
||||
.mx_UserInfo_roleDescription {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
/* try to make it the same height as the dropdown */
|
||||
margin: 11px 0 12px 0;
|
||||
}
|
||||
|
||||
.mx_Field {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mx_UserInfo_field {
|
||||
line-height: $font-16px;
|
||||
}
|
||||
|
||||
.mx_UserInfo_statusMessage {
|
||||
$statusNumberOfLines: 3;
|
||||
|
||||
font: var(--cpd-font-body-sm-regular);
|
||||
font-size: $font-11px;
|
||||
line-height: 1rem;
|
||||
opacity: 0.5;
|
||||
overflow: hidden;
|
||||
word-break: break-word;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
max-height: calc(1rem * $statusNumberOfLines);
|
||||
-webkit-line-clamp: $statusNumberOfLines;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.mx_AutoHideScrollbar {
|
||||
flex: 1 1 0;
|
||||
}
|
||||
|
||||
&.mx_UserInfo_smallAvatar {
|
||||
.mx_UserInfo_avatar {
|
||||
.mx_UserInfo_avatar_transition {
|
||||
max-width: 72px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.mx_BaseAvatar {
|
||||
/* Override the calculated font-size so that the letter isn't tiny */
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
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_VerificationPanel_verified_section,
|
||||
.mx_VerificationPanel_reciprocate_section {
|
||||
/* center the big shield icon */
|
||||
.mx_E2EIcon {
|
||||
/* Override general user info margin */
|
||||
margin: 20px auto !important;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_UserInfo.mx_BaseCard {
|
||||
.mx_UserInfo_container:not(.mx_UserInfo_separator) {
|
||||
> div > p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.mx_VerificationPanel_verifyByEmojiButton,
|
||||
.mx_UserInfo_wideButton {
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
.mx_EncryptionInfo_spinner,
|
||||
.mx_VerificationShowSas {
|
||||
margin-inline-start: auto;
|
||||
margin-inline-end: auto;
|
||||
}
|
||||
|
||||
.mx_Spinner,
|
||||
.mx_VerificationShowSas {
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_VerificationPanel_qrCode {
|
||||
padding: 4px 4px 0 4px;
|
||||
background: white;
|
||||
border-radius: 4px;
|
||||
width: max-content;
|
||||
max-width: 100%;
|
||||
/* Override general user info margin */
|
||||
margin: 0 auto !important;
|
||||
|
||||
canvas {
|
||||
/* override height and width which are set on the element directly */
|
||||
height: auto !important;
|
||||
width: 100% !important;
|
||||
max-width: 240px;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_VerificationPanel_reciprocate_section {
|
||||
.mx_AccessibleButton {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
display: block;
|
||||
margin: 10px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Special case styling for EncryptionPanel in a Modal dialog */
|
||||
.mx_Dialog,
|
||||
.mx_CompleteSecurity_body {
|
||||
.mx_VerificationPanel_QRPhase_startOptions {
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
align-items: stretch;
|
||||
justify-content: center;
|
||||
|
||||
> .mx_VerificationPanel_QRPhase_betweenText {
|
||||
width: 50px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.mx_VerificationPanel_QRPhase_startOption {
|
||||
background-color: $header-panel-bg-color;
|
||||
border-radius: 10px;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
padding: 20px;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
max-width: 310px;
|
||||
justify-content: space-between;
|
||||
|
||||
canvas,
|
||||
.mx_VerificationPanel_QRPhase_noQR {
|
||||
width: 220px !important;
|
||||
height: 220px !important;
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
> p {
|
||||
margin-top: 0;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.mx_VerificationPanel_QRPhase_helpText {
|
||||
font: var(--cpd-font-body-md-regular);
|
||||
margin: 30px 0;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* EncryptionPanel when verification is done */
|
||||
.mx_VerificationPanel_verified_section {
|
||||
/* right align the "Got it" button */
|
||||
.mx_AccessibleButton {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.mx_VerificationPanel_reciprocate_section {
|
||||
.mx_AccessibleButton {
|
||||
margin-left: 10px;
|
||||
padding: 7px 40px;
|
||||
}
|
||||
|
||||
.mx_VerificationPanel_reciprocateButtons {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
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_WidgetCard {
|
||||
.mx_AppTileFullWidth {
|
||||
max-width: unset;
|
||||
width: auto !important;
|
||||
height: 100%;
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user