[mirotalksfu] - improve Video Menu Bar

هذا الالتزام موجود في:
Miroslav Pejic
2025-09-28 00:06:21 +02:00
الأصل 21bd82623c
التزام 63dbd1a9e1
8 ملفات معدلة مع 254 إضافات و95 حذوفات

عرض الملف

@@ -74,7 +74,7 @@
}
.videoAvatarImage {
z-index: 7;
z-index: 1;
position: absolute;
display: none;
width: var(--vmi-wh);
@@ -123,39 +123,43 @@
background: rgba(0, 0, 0, 0.1);
}
/* Video Menu Bar */
.videoMenuBar {
z-index: 2;
position: fixed;
display: inline;
position: absolute; /* inside video feed by default */
top: 0;
left: 0;
padding: 15px;
width: 100%;
font-size: small;
font-weight: bold;
text-align: center;
background: var(--body-bg);
cursor: default;
overflow: hidden;
}
.videoMenuBarClose {
position: absolute;
display: flex;
top: 30px;
right: 30px;
padding: 10px;
border-radius: 50%;
color: white;
align-items: center;
justify-content: center;
cursor: pointer;
user-select: none;
flex-direction: row-reverse; /* invert buttons order visually */
justify-content: flex-start; /* with row-reverse, this packs to the right */
flex-wrap: nowrap;
gap: clamp(2px, 1vw, 8px);
padding: clamp(4px, 1.2vw, 8px);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
border-top-left-radius: 10px;
border-top-right-radius: 10px;
background: var(--body-bg);
/* box-shadow: var(--box-shadow); */
cursor: default;
overflow-x: auto;
overflow-y: hidden;
scrollbar-width: none; /* Firefox */
white-space: nowrap;
-webkit-overflow-scrolling: touch;
}
.videoMenuBarClose:hover {
background: var(--btns-bg-color);
/* Mobile floating menubar when appended to body */
.videoMenuBar.mobile-floating {
z-index: 2;
position: fixed;
top: env(safe-area-inset-top, 0px);
left: 0;
right: 0;
width: 100vw;
border-radius: 0 0 10px 10px;
}
.videoAvatarMenuBar,
@@ -182,7 +186,7 @@
.videoMenuBar button,
.videoAvatarMenuBar button,
.videoMenuBarShare button {
font-size: 1.2rem;
font-size: clamp(0.9rem, 1.1vw, 1.05rem);
float: right;
color: #fff;
background: transparent;
@@ -198,7 +202,14 @@
transition: all 0.3s ease-in-out;
}
.expand-video .fa-bars {
/* Touch-friendly sizing for buttons within menu bar */
.videoMenuBar button {
min-width: 32px;
min-height: 32px;
flex: 0 0 auto;
}
.fa-bars {
color: #66beff !important;
}
@@ -208,29 +219,29 @@
}
.expand-video-content {
z-index: 1;
z-index: 5;
display: none;
position: fixed;
right: 10px;
width: calc(100% - 20px);
max-width: 500px;
padding: 20px;
position: absolute;
width: 100%;
height: 100%;
padding: 14px;
border-radius: 5px;
background: var(--body-bg);
box-shadow: var(--box-shadow);
overflow: auto;
}
.expand-video:hover .expand-video-content {
z-index: 1;
.expand-video-content.show {
z-index: 5;
display: grid !important;
grid-gap: 5px 5px;
grid-template-columns: 50%;
grid-template-columns: 1fr 1fr;
grid-template-areas:
'header header'
'controls controls';
align-content: start;
justify-items: start;
overflow-y: auto;
overflow: auto;
}
.peer-name-container {
@@ -244,8 +255,8 @@
.expand-video-content .peer-name-header {
grid-area: header;
width: 100%;
padding: 40px;
height: 120px;
padding: 10px;
height: 100px;
background: var(--btns-bg-color);
background-size: cover;
background-position: center;
@@ -258,7 +269,7 @@
}
.expand-video-content .peer-name {
font-size: 18px;
font-size: 12px;
font-weight: bold;
color: #fff;
background: var(--body-bg);
@@ -286,14 +297,19 @@
/* Individual Buttons */
.expand-video-content .button-group button {
text-align: center;
padding: 0 12px;
font-size: 16px;
padding: 0 10px;
font-size: 15px;
color: #fff;
background: var(--btns-bg-color);
min-width: 48px;
min-height: 48px;
min-width: 42px;
min-height: 42px;
justify-content: center;
align-items: center;
display: inline-flex; /* center icon + label */
gap: 6px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
border-radius: 10px;
border: none;
cursor: pointer;
@@ -302,6 +318,12 @@
transform 0.1s ease;
}
/* Icon alignment inside buttons */
.expand-video-content .button-group button i {
line-height: 1;
pointer-events: none; /* avoid accidental icon-only clicks interference */
}
/* Hover & Active Effects */
.expand-video-content .button-group button:hover {
background: var(--body-bg);
@@ -314,13 +336,16 @@
@media (max-width: 600px) {
.expand-video-content .button-group {
gap: 5px;
gap: 6px;
flex-wrap: wrap; /* allow wrapping on small screens */
justify-content: center;
}
.expand-video-content .button-group button {
font-size: 14px;
min-width: 44px;
min-width: 44px; /* accessible tap target */
min-height: 44px;
padding: 0 8px;
border-radius: 8px;
}
}
@@ -335,6 +360,23 @@
margin-right: auto;
}
/* Keep peer name header on the left, controls on the right */
.videoMenuBar .peer-name-header {
order: 9999; /* with row-reverse, last = leftmost */
padding: 0;
background: transparent;
height: auto;
}
.videoMenuBar .peer-name-header .peer-name-container {
margin: 0;
padding: 0;
}
.videoMenuBar .peer-name-header .peer-name {
background: transparent;
padding: 0;
font-size: 0.95rem;
}
.videoCircle {
position: absolute;
width: var(--vmi-wh);
@@ -414,20 +456,81 @@ input[type='range'] {
}
}
@media screen and (max-width: 500px) {
.username {
font-size: 10px;
@media (max-width: 800px) {
.videoMenuBar {
gap: 6px;
padding: 8px;
}
.videoMenuBar input,
.videoMenuBar button,
.videoAvatarMenuBar button,
.videoMenuBarShare button {
font-size: 1rem;
}
.expand-video-content {
min-width: 100%;
left: 0px;
}
.expand-video-content .peer-name {
font-size: 12px;
right: 6px;
left: 6px;
width: auto;
max-width: none;
}
}
@media (max-width: 480px) {
/* Switch to a responsive grid for tighter screens */
.expand-video-content .button-group {
display: grid !important;
grid-template-columns: repeat(auto-fit, minmax(56px, 1fr));
gap: 6px;
justify-items: center;
}
.expand-video-content .button-group button {
min-width: unset; /* let grid control width */
width: 100%;
min-height: 44px;
padding: 8px;
font-size: 0.95rem;
}
.videoMenuBar {
gap: 4px;
padding: 6px;
}
.videoMenuBar button,
.videoAvatarMenuBar button,
.videoMenuBarShare button {
font-size: 0.95rem;
min-width: 40px; /* compact tap target */
min-height: 40px;
}
.videoMenuBar input[type='range'] {
width: clamp(60px, 30vw, 140px);
}
}
@media (max-width: 360px) {
.expand-video-content .button-group {
grid-template-columns: repeat(3, 1fr);
gap: 5px;
}
.expand-video-content .button-group button {
min-height: 40px;
padding: 6px;
font-size: 0.9rem;
border-radius: 8px;
}
.videoMenuBar {
gap: 4px;
padding: 6px;
}
.videoMenuBar button,
.videoAvatarMenuBar button,
.videoMenuBarShare button {
font-size: 0.95rem;
min-width: 40px;
min-height: 40px;
}
.expand-video-content {
top: 6px;
right: 6px;
left: 6px;
padding: 12px;
}
}