* Add a global control for toggling earpiece mode This will be used by Element X to show an earpiece toggle button in the header. * Add an earpiece overlay * Fix header The header needs to be passed forward as a string to some components and as a bool (hideHeader) to others. Also use a enum instead of string options. * fix top clipping with header * hide app bar in pip * revert android overlay app_bar * Modernize AppBarContext * Style header icon color as desired and switch earpice/speaker icon * fix initial selection when using controlled media * Add "Back to video" button * fix tests * remove dead code * add snapshot test * fix back to video button * Request capability to learn the room name We now need the room name in order to implement the mobile (widget-based) designs with the app bar. * Test the CallViewModel output switcher directly --------- Co-authored-by: Timo <toger5@hotmail.de>
86 lines
2.0 KiB
CSS
86 lines
2.0 KiB
CSS
/*
|
|
Copyright 2022-2024 New Vector Ltd.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE in the repository root for full details.
|
|
*/
|
|
|
|
.tile {
|
|
--media-view-border-radius: var(--cpd-space-4x);
|
|
--hover-space-margin: var(--cpd-space-1x);
|
|
transition: outline-color ease 0.15s;
|
|
outline: var(--cpd-border-width-2) solid rgb(0 0 0 / 0);
|
|
}
|
|
|
|
/* Use a pseudo-element to create the expressive speaking border, since CSS
|
|
borders don't support gradients */
|
|
.tile::before {
|
|
content: "";
|
|
position: absolute;
|
|
z-index: -1; /* Put it below the outline */
|
|
opacity: 0; /* Hidden unless speaking */
|
|
transition: opacity ease 0.15s;
|
|
inset: calc(-1 * var(--cpd-border-width-4));
|
|
border-radius: var(--cpd-space-5x);
|
|
background-blend-mode: overlay, normal;
|
|
}
|
|
|
|
.tile.speaking {
|
|
/* !important because speaking border should take priority over hover */
|
|
outline: var(--cpd-border-width-1) solid var(--cpd-color-bg-canvas-default) !important;
|
|
}
|
|
|
|
.tile.speaking::before {
|
|
background:
|
|
linear-gradient(
|
|
119deg,
|
|
rgba(13, 92, 189, 0.7) 0%,
|
|
rgba(13, 189, 168, 0.7) 100%
|
|
),
|
|
linear-gradient(
|
|
180deg,
|
|
rgba(13, 92, 189, 0.9) 0%,
|
|
rgba(13, 189, 168, 0.9) 100%
|
|
);
|
|
opacity: 1;
|
|
}
|
|
|
|
.tile.handRaised {
|
|
/* !important because hand raised border should take priority over hover */
|
|
outline: var(--cpd-border-width-2) solid var(--cpd-color-bg-canvas-default) !important;
|
|
}
|
|
|
|
.tile.handRaised::before {
|
|
background:
|
|
linear-gradient(
|
|
119deg,
|
|
var(--cpd-color-yellow-1200) 0%,
|
|
var(--cpd-color-yellow-900) 100%
|
|
),
|
|
linear-gradient(
|
|
180deg,
|
|
var(--cpd-color-yellow-1200) 0%,
|
|
var(--cpd-color-yellow-900) 100%
|
|
);
|
|
opacity: 1;
|
|
}
|
|
|
|
@media (hover: hover) {
|
|
.tile:hover {
|
|
outline: var(--cpd-border-width-2) solid
|
|
var(--cpd-color-border-interactive-hovered);
|
|
}
|
|
}
|
|
|
|
.muteIcon[data-muted="true"] {
|
|
color: var(--cpd-color-icon-secondary);
|
|
}
|
|
|
|
.muteIcon[data-muted="false"] {
|
|
color: var(--cpd-color-icon-primary);
|
|
}
|
|
|
|
.volumeSlider {
|
|
width: 100%;
|
|
}
|