...
This commit is contained in:
		
							
								
								
									
										283
									
								
								poc/login2222.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										283
									
								
								poc/login2222.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,283 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|     <title>Login - ThreeFold</title> | ||||
|     <link rel="stylesheet" href="components/nav.html"> | ||||
| </head> | ||||
| <body> | ||||
|     <div class="login-container"> | ||||
|         <div class="login-box"> | ||||
|             <div class="login-header"> | ||||
|                 <svg class="logo" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> | ||||
|                     <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/> | ||||
|                 </svg> | ||||
|                 <h1>Welcome Back</h1> | ||||
|                 <p>Sign in to your ThreeFold account</p> | ||||
|             </div> | ||||
|             <form id="loginForm" onsubmit="return validateForm(event)"> | ||||
|                 <div class="form-group"> | ||||
|                     <label for="email">Email</label> | ||||
|                     <input  | ||||
|                         type="email"  | ||||
|                         id="email"  | ||||
|                         name="email"  | ||||
|                         required  | ||||
|                         pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" | ||||
|                         placeholder="Enter your email" | ||||
|                         autocomplete="email" | ||||
|                     > | ||||
|                     <span class="error-message" id="emailError"></span> | ||||
|                 </div> | ||||
|                 <div class="form-group"> | ||||
|                     <label for="password">Password</label> | ||||
|                     <input  | ||||
|                         type="password"  | ||||
|                         id="password"  | ||||
|                         name="password"  | ||||
|                         required | ||||
|                         minlength="8" | ||||
|                         placeholder="Enter your password" | ||||
|                         autocomplete="current-password" | ||||
|                     > | ||||
|                     <span class="error-message" id="passwordError"></span> | ||||
|                 </div> | ||||
|                 <div class="form-footer"> | ||||
|                     <label class="remember-me"> | ||||
|                         <input type="checkbox" name="remember"> Remember me | ||||
|                     </label> | ||||
|                     <a href="#" class="forgot-password">Forgot Password?</a> | ||||
|                 </div> | ||||
|                 <button type="submit" class="login-button">Sign In</button> | ||||
|             </form> | ||||
|             <div class="signup-link"> | ||||
|                 Don't have an account? <a href="#">Sign up</a> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
|  | ||||
|     <style> | ||||
|         :root { | ||||
|             --primary-color: #1a73e8; | ||||
|             --error-color: #dc3545; | ||||
|             --text-color: #333; | ||||
|             --border-color: #ddd; | ||||
|             --background-color: #f5f5f5; | ||||
|             --box-shadow: 0 2px 10px #0000001A; | ||||
|         } | ||||
|  | ||||
|         body { | ||||
|             margin: 0; | ||||
|             padding: 0; | ||||
|             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; | ||||
|             background: var(--background-color); | ||||
|             color: var(--text-color); | ||||
|             min-height: 100vh; | ||||
|             display: flex; | ||||
|             align-items: center; | ||||
|             justify-content: center; | ||||
|         } | ||||
|  | ||||
|         .login-container { | ||||
|             width: 100%; | ||||
|             max-width: 400px; | ||||
|             padding: 10px; | ||||
|         } | ||||
|  | ||||
|         .login-box { | ||||
|             background: white; | ||||
|             border-radius: 8px; | ||||
|             box-shadow: var(--box-shadow); | ||||
|             padding: 2rem; | ||||
|         } | ||||
|  | ||||
|         .login-header { | ||||
|             text-align: center; | ||||
|             margin-bottom: 1.5rem; | ||||
|         } | ||||
|  | ||||
|         .logo { | ||||
|             width: 48px; | ||||
|             height: 48px; | ||||
|             margin-bottom: 1rem; | ||||
|             color: var(--primary-color); | ||||
|         } | ||||
|  | ||||
|         .login-header h1 { | ||||
|             margin: 0; | ||||
|             font-size: 1.75rem; | ||||
|             color: var(--text-color); | ||||
|         } | ||||
|  | ||||
|         .login-header p { | ||||
|             margin: 0.5rem 0 0; | ||||
|             color: #666; | ||||
|             font-size: 0.95rem; | ||||
|         } | ||||
|  | ||||
|         .form-group { | ||||
|             margin-bottom: 0.5rem;  /* Reduced from 1rem */ | ||||
|         } | ||||
|  | ||||
|         label { | ||||
|             display: block; | ||||
|             margin-bottom: 0.5rem; | ||||
|             color: var(--text-color); | ||||
|             font-size: 0.9rem; | ||||
|             font-weight: 500; | ||||
|         } | ||||
|  | ||||
|         input[type="email"], | ||||
|         input[type="password"] { | ||||
|             width: 100%; | ||||
|             padding: 0.75rem; | ||||
|             border: 1px solid var(--border-color); | ||||
|             border-radius: 4px; | ||||
|             font-size: 1rem; | ||||
|             transition: border-color 0.3s, box-shadow 0.3s; | ||||
|             box-sizing: border-box; | ||||
|         } | ||||
|  | ||||
|         input[type="email"]:focus, | ||||
|         input[type="password"]:focus { | ||||
|             outline: none; | ||||
|             border-color: var(--primary-color); | ||||
|             box-shadow: 0 0 0 2px #1A73E833; | ||||
|         } | ||||
|  | ||||
|         .error-message { | ||||
|             display: block; | ||||
|             color: var(--error-color); | ||||
|             font-size: 0.85rem; | ||||
|             margin-top: 0.25rem; | ||||
|             min-height: 1.25em; | ||||
|         } | ||||
|  | ||||
|         .form-footer { | ||||
|             display: flex; | ||||
|             justify-content: space-between; | ||||
|             align-items: center; | ||||
|             margin-bottom: 0.5rem;  /* Reduced from 1rem */ | ||||
|         } | ||||
|  | ||||
|         .remember-me { | ||||
|             display: flex; | ||||
|             align-items: center; | ||||
|             gap: 0.5rem; | ||||
|             font-size: 0.9rem; | ||||
|             color: #666; | ||||
|         } | ||||
|  | ||||
|         .forgot-password { | ||||
|             font-size: 0.9rem; | ||||
|             color: var(--primary-color); | ||||
|             text-decoration: none; | ||||
|         } | ||||
|  | ||||
|         .forgot-password:hover { | ||||
|             text-decoration: underline; | ||||
|         } | ||||
|  | ||||
|         .login-button { | ||||
|             width: 100%; | ||||
|             padding: 0.75rem; | ||||
|             background: var(--primary-color); | ||||
|             color: white; | ||||
|             border: none; | ||||
|             border-radius: 4px; | ||||
|             font-size: 1rem; | ||||
|             font-weight: 500; | ||||
|             cursor: pointer; | ||||
|             transition: background-color 0.3s, transform 0.3s; | ||||
|         } | ||||
|  | ||||
|         .login-button:hover { | ||||
|             background: #1557b0; | ||||
|             transform: translateY(-1px); | ||||
|         } | ||||
|  | ||||
|         .login-button:active { | ||||
|             transform: translateY(0); | ||||
|         } | ||||
|  | ||||
|         .signup-link { | ||||
|             text-align: center; | ||||
|             margin-top: 1rem; | ||||
|             font-size: 0.9rem; | ||||
|             color: #666; | ||||
|         } | ||||
|  | ||||
|         .signup-link a { | ||||
|             color: var(--primary-color); | ||||
|             text-decoration: none; | ||||
|             font-weight: 500; | ||||
|         } | ||||
|  | ||||
|         .signup-link a:hover { | ||||
|             text-decoration: underline; | ||||
|         } | ||||
|  | ||||
|         @media (max-width: 480px) { | ||||
|             .login-container { | ||||
|                 padding: 10px; | ||||
|             } | ||||
|  | ||||
|             .login-box { | ||||
|                 padding: 1.5rem; | ||||
|             } | ||||
|         } | ||||
|     </style> | ||||
|  | ||||
|     <script> | ||||
|         function validateForm(event) { | ||||
|             event.preventDefault(); | ||||
|              | ||||
|             const email = document.getElementById('email'); | ||||
|             const emailError = document.getElementById('emailError'); | ||||
|             const password = document.getElementById('password'); | ||||
|             const passwordError = document.getElementById('passwordError'); | ||||
|              | ||||
|             // Reset error messages | ||||
|             emailError.textContent = ''; | ||||
|             passwordError.textContent = ''; | ||||
|              | ||||
|             let isValid = true; | ||||
|              | ||||
|             // Email validation | ||||
|             const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; | ||||
|             if (!emailRegex.test(email.value)) { | ||||
|                 emailError.textContent = 'Please enter a valid email address'; | ||||
|                 isValid = false; | ||||
|             } | ||||
|              | ||||
|             // Password validation | ||||
|             if (password.value.length < 8) { | ||||
|                 passwordError.textContent = 'Password must be at least 8 characters long'; | ||||
|                 isValid = false; | ||||
|             } | ||||
|              | ||||
|             if (isValid) { | ||||
|                 // Here you would typically send the form data to your server | ||||
|                 console.log('Form is valid, ready to submit'); | ||||
|                 // For demo purposes, we'll just log the email | ||||
|                 console.log('Email:', email.value); | ||||
|             } | ||||
|              | ||||
|             return isValid; | ||||
|         } | ||||
|  | ||||
|         // Real-time email validation | ||||
|         document.getElementById('email').addEventListener('input', function(e) { | ||||
|             const emailError = document.getElementById('emailError'); | ||||
|             const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; | ||||
|              | ||||
|             if (this.value && !emailRegex.test(this.value)) { | ||||
|                 emailError.textContent = 'Please enter a valid email address'; | ||||
|             } else { | ||||
|                 emailError.textContent = ''; | ||||
|             } | ||||
|         }); | ||||
|     </script> | ||||
| </body> | ||||
| </html> | ||||
		Reference in New Issue
	
	Block a user