Files
zulip/web/styles/lightbox.css
Karl Stolley 2458f57547 lightbox: Use icons for control elements.
Fixes #33068.

Co-Authored-By: sammamama <samridhsame@gmail.com>
2025-05-30 14:50:45 -07:00

244 lines
5.6 KiB
CSS

#lightbox_overlay {
background-color: hsl(227deg 40% 16%);
display: flex;
flex-direction: column;
height: 100dvh;
.image-preview {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
position: relative;
width: 100%;
margin: 0;
overflow: hidden;
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
& img {
cursor: move;
max-height: 100%;
max-width: 100%;
object-fit: contain;
}
.zoom-element {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
}
.video-player {
flex: 1;
display: flex;
width: 100%;
align-items: center;
justify-content: center;
margin: 0;
overflow: hidden;
& video {
max-width: 100%;
max-height: 100%;
}
}
.exit {
flex-shrink: 0;
color: hsl(0deg 0% 100% / 80%);
font-size: 14px;
line-height: 31px;
opacity: 0;
pointer-events: none;
cursor: pointer;
transition: opacity 0.2s ease;
}
&.show .exit {
pointer-events: auto;
opacity: 1;
}
.media-info-wrapper {
display: flex;
justify-content: end;
align-items: start;
gap: 20px;
padding: 20px;
background-color: transparent;
}
.media-actions {
display: flex;
flex-shrink: 0;
gap: 10px;
.button {
font-size: 0.9rem;
min-width: inherit;
padding: 4px 10px;
border: 1px solid hsl(0deg 0% 100% / 60%);
background-color: transparent;
color: hsl(0deg 0% 100%);
border-radius: 4px;
text-decoration: none;
display: inline-block;
&:hover {
background-color: hsl(0deg 0% 100%);
border-color: hsl(0deg 0% 100%);
color: hsl(227deg 40% 16%);
}
}
.disabled {
opacity: 0.7;
cursor: default;
&:hover {
background-color: transparent;
color: hsl(0deg 0% 100%);
border: 1px solid hsl(0deg 0% 100% / 60%);
}
}
}
.media-description {
container: media-description / inline-size;
flex: 1;
/* setting min-width to an absolute value will make
sure the text gets truncated in case of overflow */
min-width: 0;
font-size: 1.1rem;
color: hsl(0deg 0% 100%);
.title {
vertical-align: top;
font-weight: 400;
line-height: normal;
/* Required for text-overflow */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.user {
font-weight: 300;
line-height: normal;
text-overflow: ellipsis;
overflow: hidden;
white-space: pre;
&::before {
margin-right: 5px;
content: "\2014";
}
}
}
.player-container {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
& iframe {
aspect-ratio: 16/9;
/* for screen_width<=lg_min aspect-ratio will be
maintained given portrait mode is used */
/* in landscape max-height will prevent overflow,
however user will benefit more from using
youtube fullscreen at that point */
width: 100%;
/* maintains the aspect ratio for screen_width>=lg_min. */
max-width: $lg_min;
/* height(media_info_container) + height(center) < 200px */
max-height: calc(100dvh - 200px);
}
}
.center {
display: flex;
justify-content: center;
align-items: center;
gap: 2px;
padding: 12px 20px;
.arrow {
color: hsl(0deg 0% 100%);
/* The thumbnails do not scale, so we express these
dimensions as pixels, too. */
font-size: 35px;
line-height: 25.6px;
cursor: pointer;
opacity: 0.5;
transition: opacity 0.3s ease;
&:hover {
opacity: 1;
}
}
.image-list {
position: relative;
display: inline-block;
font-size: 0;
max-width: 40vw;
overflow: hidden;
white-space: nowrap;
.image {
display: inline-block;
vertical-align: top;
width: 50px;
height: 50px;
margin: 0 2px;
background-color: hsl(0deg 0% 94% / 20%);
opacity: 0.5;
background-size: cover;
background-position: center;
cursor: pointer;
&.selected {
opacity: 1;
}
}
.lightbox_video video {
width: 50px;
height: 50px;
}
}
}
}
/* hide media-description if it has width less than 100px */
@container media-description (max-width: 100px) {
.media-description {
.title {
display: none;
}
.user {
display: none;
}
}
}