| | <!DOCTYPE html> |
| | <html lang="en" class="dark"> |
| | <head> |
| | <meta charset="UTF-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>Register - YourHand.co</title> |
| | <script src="https://cdn.tailwindcss.com"></script> |
| | <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
| | <script> |
| | tailwind.config = { |
| | darkMode: 'class', |
| | theme: { |
| | extend: { |
| | colors: { |
| | primary: { |
| | 500: '#d946ef', |
| | 600: '#c026d3', |
| | } |
| | } |
| | } |
| | } |
| | } |
| | </script> |
| | <style> |
| | .gradient-text { |
| | background: linear-gradient(90deg, #d946ef 0%, #a855f7 100%); |
| | -webkit-background-clip: text; |
| | background-clip: text; |
| | color: transparent; |
| | } |
| | @keyframes spin { |
| | to { transform: rotate(360deg); } |
| | } |
| | .animate-spin { |
| | animation: spin 1s linear infinite; |
| | } |
| | </style> |
| | </head> |
| | <body class="bg-gray-900 text-gray-100 min-h-screen flex items-center justify-center"> |
| | <div class="max-w-md w-full mx-auto py-12 px-4"> |
| | <div class="flex items-center justify-center mb-8"> |
| | <i data-feather="hand" class="text-primary-500 w-8 h-8"></i> |
| | <span class="text-2xl font-bold gradient-text ml-2">YourHand.co</span> |
| | </div> |
| |
|
| | <div class="bg-gray-800 rounded-xl p-8 shadow-lg"> |
| | <h1 class="text-2xl font-bold text-center mb-6">Create Your Account</h1> |
| | |
| | <form id="registerForm" class="space-y-4"> |
| | <div class="grid grid-cols-2 gap-4"> |
| | <div> |
| | <label for="firstName" class="block text-sm font-medium mb-1">First Name</label> |
| | <input type="text" id="firstName" required |
| | class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-primary-500 text-white"> |
| | </div> |
| | <div> |
| | <label for="lastName" class="block text-sm font-medium mb-1">Last Name</label> |
| | <input type="text" id="lastName" required |
| | class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-primary-500 text-white"> |
| | </div> |
| | </div> |
| |
|
| | <div> |
| | <label for="email" class="block text-sm font-medium mb-1">Email</label> |
| | <input type="email" id="email" required |
| | class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-primary-500 text-white"> |
| | </div> |
| |
|
| | <div> |
| | <label for="password" class="block text-sm font-medium mb-1">Password</label> |
| | <input type="password" id="password" required minlength="8" |
| | class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-primary-500 text-white"> |
| | </div> |
| |
|
| | <div> |
| | <label for="confirmPassword" class="block text-sm font-medium mb-1">Confirm Password</label> |
| | <input type="password" id="confirmPassword" required minlength="8" |
| | class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-primary-500 text-white"> |
| | </div> |
| |
|
| | <div class="pt-2"> |
| | <label class="flex items-center"> |
| | <input type="checkbox" required class="rounded bg-gray-700 border-gray-600 text-primary-500 focus:ring-primary-500 w-4 h-4"> |
| | <span class="ml-2 text-sm">I agree to the <a href="#" class="text-primary-500 hover:underline">Terms & Conditions</a></span> |
| | </label> |
| | </div> |
| |
|
| | <div class="pt-2"> |
| | <button type="submit" id="submitBtn" class="w-full bg-primary-500 hover:bg-primary-600 text-white font-bold py-3 px-4 rounded-lg transition disabled:opacity-50 disabled:cursor-not-allowed"> |
| | Create Account |
| | </button> |
| | </div> |
| |
|
| | <div class="text-center text-sm pt-2"> |
| | <p>Already have an account? <a href="login.html" class="text-primary-500 hover:underline">Log in</a></p> |
| | </div> |
| | </form> |
| | </div> |
| | </div> |
| |
|
| | <script> |
| | // Initialize feather icons |
| | feather.replace(); |
| | |
| | document.getElementById('registerForm').addEventListener('submit', async function(e) { |
| | e.preventDefault(); |
| | |
| | const firstName = document.getElementById('firstName').value.trim(); |
| | const lastName = document.getElementById('lastName').value.trim(); |
| | const email = document.getElementById('email').value.trim(); |
| | const password = document.getElementById('password').value; |
| | const confirmPassword = document.getElementById('confirmPassword').value; |
| | |
| | // Validation |
| | if (password !== confirmPassword) { |
| | alert('Passwords do not match!'); |
| | document.getElementById('confirmPassword').focus(); |
| | return; |
| | } |
| | |
| | if (password.length < 8) { |
| | alert('Password must be at least 8 characters long!'); |
| | return; |
| | } |
| | |
| | const submitBtn = document.getElementById('submitBtn'); |
| | submitBtn.disabled = true; |
| | submitBtn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="animate-spin inline mr-2"><line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line></svg> Creating account...'; |
| | |
| | try { |
| | // Simulate API call |
| | await new Promise(resolve => setTimeout(resolve, 1500)); |
| | |
| | // Store user data in localStorage |
| | const user = { |
| | firstName, |
| | lastName, |
| | email, |
| | role: 'buyer', |
| | createdAt: new Date().toISOString() |
| | }; |
| | localStorage.setItem('currentUser', JSON.stringify(user)); |
| | |
| | // Show success message |
| | alert('Account created successfully!'); |
| | |
| | // Redirect to profile settings (profile-setup.html doesn't exist, use profile-settings.html) |
| | window.location.href = 'profile-settings.html'; |
| | } catch (error) { |
| | alert('Registration failed: ' + error.message); |
| | submitBtn.disabled = false; |
| | submitBtn.innerHTML = 'Create Account'; |
| | } |
| | }); |
| | </script> |
| | </body> |
| | </html> |