[mirotalk] - improve login page: fix duplicate Brand.js, refine Join Room layout
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
/* Login Card */
|
||||
.login-card {
|
||||
max-width: 460px;
|
||||
margin: 0 auto;
|
||||
padding: 48px 36px 40px;
|
||||
background:
|
||||
radial-gradient(900px circle at 20% 15%, rgba(70, 120, 249, 0.12) 0%, rgba(70, 120, 249, 0) 55%),
|
||||
radial-gradient(700px circle at 80% 85%, rgba(70, 120, 249, 0.08) 0%, rgba(70, 120, 249, 0) 52%),
|
||||
linear-gradient(135deg, rgba(0, 0, 0, 0.95) 60%, rgba(70, 120, 249, 0.15) 100%);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
border-radius: 16px;
|
||||
box-shadow:
|
||||
0 12px 40px rgba(0, 0, 0, 0.5),
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Icon */
|
||||
.login-icon {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
margin: 0 auto 24px;
|
||||
border-radius: 50%;
|
||||
background: linear-gradient(135deg, rgba(70, 120, 249, 0.2), rgba(70, 120, 249, 0.05));
|
||||
border: 1px solid rgba(70, 120, 249, 0.25);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.login-icon i {
|
||||
font-size: 24px;
|
||||
color: #4678f9;
|
||||
}
|
||||
|
||||
/* Title */
|
||||
.login-title {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #f9faff;
|
||||
margin: 0 0 8px;
|
||||
}
|
||||
|
||||
/* Description */
|
||||
.login-description {
|
||||
color: #9ca9b3;
|
||||
font-size: 15px;
|
||||
line-height: 1.6;
|
||||
margin: 0 0 28px;
|
||||
}
|
||||
|
||||
/* Form inputs inside card */
|
||||
.login-card .form-input {
|
||||
background-color: rgba(255, 255, 255, 0.06);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
color: #f9faff;
|
||||
border-radius: 8px !important;
|
||||
padding: 12px 16px;
|
||||
height: 48px;
|
||||
font-size: 15px;
|
||||
transition:
|
||||
border-color 0.2s ease,
|
||||
background-color 0.2s ease;
|
||||
}
|
||||
.login-card .form-input:hover {
|
||||
border-color: rgba(70, 120, 249, 0.4);
|
||||
background-color: rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
.login-card .form-input:focus {
|
||||
border-color: #4678f9;
|
||||
background-color: rgba(255, 255, 255, 0.08);
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 3px rgba(70, 120, 249, 0.15);
|
||||
}
|
||||
.login-card .form-input::placeholder {
|
||||
color: #6b7a85;
|
||||
}
|
||||
|
||||
/* Input group with icon */
|
||||
.login-input-group {
|
||||
position: relative;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.login-input-group i {
|
||||
position: absolute;
|
||||
left: 14px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: #6b7a85;
|
||||
font-size: 14px;
|
||||
pointer-events: none;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
.login-input-group .form-input {
|
||||
padding-left: 42px;
|
||||
}
|
||||
.login-input-group:focus-within i {
|
||||
color: #4678f9;
|
||||
}
|
||||
|
||||
/* Login button */
|
||||
.login-card .login-btn {
|
||||
width: 100%;
|
||||
padding: 12px 24px;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
color: #f9faff;
|
||||
background: linear-gradient(135deg, #4678f9 0%, #376df9 100%);
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
transition:
|
||||
transform 0.12s ease,
|
||||
box-shadow 0.2s ease,
|
||||
filter 0.2s ease;
|
||||
box-shadow: 0 4px 15px rgba(70, 120, 249, 0.3);
|
||||
margin-top: 8px;
|
||||
}
|
||||
.login-card .login-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 6px 20px rgba(70, 120, 249, 0.4);
|
||||
filter: brightness(1.05);
|
||||
}
|
||||
.login-card .login-btn:active {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
/* Divider */
|
||||
.login-divider {
|
||||
border: none;
|
||||
border-top: 1px solid rgba(255, 255, 255, 0.06);
|
||||
margin: 24px 0 20px;
|
||||
}
|
||||
|
||||
/* Join room section inside card */
|
||||
.login-card .join-room-title {
|
||||
font-size: 22px;
|
||||
font-weight: 600;
|
||||
color: #f9faff;
|
||||
margin: 0 0 24px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
/* Icon success variant */
|
||||
.login-icon-success {
|
||||
background: linear-gradient(135deg, rgba(46, 206, 137, 0.2), rgba(46, 206, 137, 0.05)) !important;
|
||||
border-color: rgba(46, 206, 137, 0.25) !important;
|
||||
}
|
||||
.login-icon-success i {
|
||||
color: #2ece89 !important;
|
||||
}
|
||||
|
||||
/* Room input row: input + random button side by side */
|
||||
.room-input-row {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
align-items: stretch;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.room-input-row .login-input-group {
|
||||
flex: 1;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.login-card .random-room-btn {
|
||||
padding: 0 14px;
|
||||
font-size: 16px;
|
||||
color: #f9faff;
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
flex-shrink: 0;
|
||||
transition:
|
||||
border-color 0.2s ease,
|
||||
background-color 0.2s ease;
|
||||
}
|
||||
.login-card .random-room-btn:hover {
|
||||
border-color: rgba(70, 120, 249, 0.4);
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.login-card .join-room-btn {
|
||||
width: 100%;
|
||||
padding: 12px 24px;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
color: #f9faff;
|
||||
background: linear-gradient(135deg, #4678f9 0%, #376df9 100%);
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
transition:
|
||||
transform 0.12s ease,
|
||||
box-shadow 0.2s ease,
|
||||
filter 0.2s ease;
|
||||
box-shadow: 0 4px 15px rgba(70, 120, 249, 0.3);
|
||||
}
|
||||
.login-card .join-room-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 6px 20px rgba(70, 120, 249, 0.4);
|
||||
filter: brightness(1.05);
|
||||
}
|
||||
|
||||
/* Layout */
|
||||
@media (min-width: 641px) {
|
||||
.hero .split-wrap .split-item {
|
||||
min-height: 492px;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -94,7 +94,7 @@ let brand = {
|
||||
},
|
||||
about: {
|
||||
imageUrl: '../images/mirotalk-logo.gif',
|
||||
title: 'WebRTC P2P v1.7.47',
|
||||
title: 'WebRTC P2P v1.7.48',
|
||||
html: `
|
||||
<button
|
||||
id="support-button"
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@
|
||||
* @license For commercial use or closed source, contact us at license.mirotalk@gmail.com or purchase directly from CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.7.47
|
||||
* @version 1.7.48
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -13738,7 +13738,7 @@ function showAbout() {
|
||||
Swal.fire({
|
||||
background: swBg,
|
||||
position: 'center',
|
||||
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.7.47',
|
||||
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.7.48',
|
||||
imageUrl: brand.about?.imageUrl && brand.about.imageUrl.trim() !== '' ? brand.about.imageUrl : images.about,
|
||||
customClass: { image: 'img-about' },
|
||||
html: `
|
||||
|
||||
+58
-57
@@ -36,12 +36,12 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,600" />
|
||||
<link rel="stylesheet" href="../css/landing.css" />
|
||||
<link rel="stylesheet" href="../css/login.css" />
|
||||
<link rel="stylesheet" href="../css/translate.css" />
|
||||
|
||||
<!-- Js scripts -->
|
||||
|
||||
<script async src="../js/stats.js"></script>
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Translate.js"></script>
|
||||
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
@@ -76,71 +76,72 @@
|
||||
<div class="split-wrap invert-mobile">
|
||||
<div class="split-item">
|
||||
<div class="hero-content split-item-content center-content-mobile">
|
||||
<div id="loginForm">
|
||||
<br />
|
||||
<div class="mb-12">
|
||||
<input
|
||||
id="username"
|
||||
class="form-input"
|
||||
type="name"
|
||||
placeholder="Username"
|
||||
maxlength="254"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<br />
|
||||
<div class="mb-12">
|
||||
<input
|
||||
id="password"
|
||||
class="form-input"
|
||||
type="password"
|
||||
maxlength="32"
|
||||
placeholder="Password"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div class="mt-24 mb-32">
|
||||
<button
|
||||
id="loginButton"
|
||||
class="button button-primary button-block pulse"
|
||||
>
|
||||
Login
|
||||
<div class="login-card reveal-from-bottom" data-reveal-delay="150">
|
||||
<div id="loginForm">
|
||||
<div class="login-icon">
|
||||
<i class="fa-solid fa-lock"></i>
|
||||
</div>
|
||||
<h2 class="login-title">Welcome back</h2>
|
||||
<p class="login-description">Enter your credentials to continue.</p>
|
||||
<div class="login-input-group">
|
||||
<i class="fa-solid fa-user"></i>
|
||||
<input
|
||||
id="username"
|
||||
class="form-input"
|
||||
type="name"
|
||||
placeholder="Username"
|
||||
maxlength="254"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div class="login-input-group">
|
||||
<i class="fa-solid fa-key"></i>
|
||||
<input
|
||||
id="password"
|
||||
class="form-input"
|
||||
type="password"
|
||||
maxlength="32"
|
||||
placeholder="Password"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<button id="loginButton" class="login-btn pulse">
|
||||
<i class="fa-solid fa-right-to-bracket"></i> Login
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Join Room Section hidden -->
|
||||
<div id="joinRoomForm" class="mb-12">
|
||||
<div class="hero-copy reveal-from-bottom">
|
||||
<h1 class="hero-title mt-0">
|
||||
Pick name. <br />
|
||||
Share URL. <br />
|
||||
<!-- Join Room Section hidden -->
|
||||
<div id="joinRoomForm" style="display: none">
|
||||
<div class="login-icon">
|
||||
<i class="fa-solid fa-video"></i>
|
||||
</div>
|
||||
<h2 class="join-room-title">
|
||||
Pick name.<br />
|
||||
Share URL.<br />
|
||||
Start conference.
|
||||
</h1>
|
||||
</div>
|
||||
<br />
|
||||
<div class="mb-12">
|
||||
<input
|
||||
id="roomName"
|
||||
class="form-input"
|
||||
type="text"
|
||||
placeholder="Enter room name"
|
||||
maxlength="32"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div class="mt-24 mb-32">
|
||||
<div class="button-group">
|
||||
</h2>
|
||||
<div class="room-input-row">
|
||||
<div class="login-input-group">
|
||||
<i class="fa-solid fa-door-open"></i>
|
||||
<input
|
||||
id="roomName"
|
||||
class="form-input"
|
||||
type="text"
|
||||
placeholder="Enter room name"
|
||||
maxlength="32"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
id="randomRoomButton"
|
||||
class="button button-primary"
|
||||
title="Random room"
|
||||
class="random-room-btn"
|
||||
title="Generate random room name"
|
||||
>
|
||||
<i class="fa-solid fa-arrows-rotate" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button id="joinSelectRoomButton" class="button button-primary">
|
||||
JOIN ROOM
|
||||
</button>
|
||||
</div>
|
||||
<button id="joinSelectRoomButton" class="join-room-btn">
|
||||
<i class="fa-solid fa-right-to-bracket"></i> JOIN ROOM
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user