contact / index.html
vivekin's picture
Add 2 files
ef84803 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Us | Get in Touch</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in {
animation: fadeIn 0.6s ease-out forwards;
}
.input-highlight {
transition: all 0.3s ease;
box-shadow: 0 0 0 1px rgba(147, 51, 234, 0);
}
.input-highlight:focus {
box-shadow: 0 0 0 2px rgba(147, 51, 234, 1);
}
.success-message {
opacity: 0;
transform: translateY(20px);
transition: all 0.4s ease;
}
.success-message.show {
opacity: 1;
transform: translateY(0);
}
.shake {
animation: shake 0.5s;
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
20%, 40%, 60%, 80% { transform: translateX(5px); }
}
</style>
</head>
<body class="bg-gradient-to-br from-purple-50 to-purple-100 min-h-screen flex items-center justify-center p-4">
<div class="max-w-4xl w-full mx-auto grid md:grid-cols-2 gap-8 bg-white rounded-2xl shadow-xl overflow-hidden animate-fade-in">
<!-- Left Column - Illustration and Info -->
<div class="bg-gradient-to-br from-purple-600 to-purple-700 text-white p-8 md:p-12 flex flex-col justify-center">
<div class="mb-8">
<h2 class="text-3xl font-bold mb-2">Get in touch</h2>
<p class="opacity-90">We'd love to hear from you! Fill out the form and our team will get back to you within 24 hours.</p>
</div>
<div class="space-y-6">
<div class="flex items-start">
<div class="bg-purple-500 p-3 rounded-full mr-4">
<i class="fas fa-envelope text-white text-lg"></i>
</div>
<div>
<h4 class="font-semibold">Email us</h4>
<p class="text-purple-200">test@gmail.com</p>
</div>
</div>
<div class="flex items-start">
<div class="bg-purple-500 p-3 rounded-full mr-4">
<i class="fas fa-phone-alt text-white text-lg"></i>
</div>
<div>
<h4 class="font-semibold">Call us</h4>
<p class="text-purple-200">+1 (555) 123-4567</p>
</div>
</div>
<div class="flex items-start">
<div class="bg-purple-500 p-3 rounded-full mr-4">
<i class="fas fa-map-marker-alt text-white text-lg"></i>
</div>
<div>
<h4 class="font-semibold">Visit us</h4>
<p class="text-purple-200">123 Business Ave, Suite 500<br>San Francisco, CA 94107</p>
</div>
</div>
</div>
<div class="mt-8 pt-6 border-t border-purple-400">
<h4 class="font-semibold mb-3">Follow us</h4>
<div class="flex space-x-4">
<a href="#" class="bg-purple-500 hover:bg-purple-400 transition p-2 rounded-full">
<i class="fab fa-facebook-f"></i>
</a>
<a href="#" class="bg-purple-500 hover:bg-purple-400 transition p-2 rounded-full">
<i class="fab fa-twitter"></i>
</a>
<a href="#" class="bg-purple-500 hover:bg-purple-400 transition p-2 rounded-full">
<i class="fab fa-linkedin-in"></i>
</a>
<a href="#" class="bg-purple-500 hover:bg-purple-400 transition p-2 rounded-full">
<i class="fab fa-instagram"></i>
</a>
</div>
</div>
</div>
<!-- Right Column - Contact Form -->
<div class="p-8 md:p-12">
<div class="success-message bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded mb-6 hidden">
<div class="flex items-center">
<i class="fas fa-check-circle mr-2"></i>
<span>Thank you! Your message has been sent successfully.</span>
</div>
</div>
<h2 class="text-3xl font-bold text-gray-800 mb-2">Contact Us</h2>
<p class="text-gray-600 mb-8">Fill out the form below and we'll get back to you soon.</p>
<form id="contactForm" class="space-y-6">
<div>
<label for="name" class="block text-sm font-medium text-gray-700 mb-1">Full Name</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-user text-gray-400"></i>
</div>
<input type="text" id="name" name="name" required
class="input-highlight pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition"
placeholder="John Doe">
</div>
<p class="text-red-500 text-xs mt-1 hidden" id="nameError">Please enter your name</p>
</div>
<div>
<label for="email" class="block text-sm font-medium text-gray-700 mb-1">Email Address</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-envelope text-gray-400"></i>
</div>
<input type="email" id="email" name="email" required
class="input-highlight pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition"
placeholder="john@example.com">
</div>
<p class="text-red-500 text-xs mt-1 hidden" id="emailError">Please enter a valid email address</p>
</div>
<div>
<label for="phone" class="block text-sm font-medium text-gray-700 mb-1">Phone Number (Optional)</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-phone text-gray-400"></i>
</div>
<input type="tel" id="phone" name="phone"
class="input-highlight pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition"
placeholder="(123) 456-7890">
</div>
</div>
<div>
<label for="subject" class="block text-sm font-medium text-gray-700 mb-1">Subject</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-tag text-gray-400"></i>
</div>
<select id="subject" name="subject" required
class="input-highlight pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition appearance-none">
<option value="" disabled selected>Select a subject</option>
<option value="General Inquiry">General Inquiry</option>
<option value="Support">Support</option>
<option value="Sales">Sales</option>
<option value="Feedback">Feedback</option>
<option value="Other">Other</option>
</select>
<div class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none">
<i class="fas fa-chevron-down text-gray-400"></i>
</div>
</div>
<p class="text-red-500 text-xs mt-1 hidden" id="subjectError">Please select a subject</p>
</div>
<div>
<label for="message" class="block text-sm font-medium text-gray-700 mb-1">Message</label>
<div class="relative">
<div class="absolute top-3 left-3">
<i class="fas fa-comment text-gray-400"></i>
</div>
<textarea id="message" name="message" rows="4" required
class="input-highlight pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition"
placeholder="Your message here..."></textarea>
</div>
<p class="text-red-500 text-xs mt-1 hidden" id="messageError">Please enter your message</p>
</div>
<div class="flex items-center">
<input type="checkbox" id="consent" name="consent" required
class="h-4 w-4 text-purple-600 focus:ring-purple-500 border-gray-300 rounded">
<label for="consent" class="ml-2 block text-sm text-gray-700">
I agree to the <a href="#" class="text-purple-600 hover:underline">privacy policy</a> and <a href="#" class="text-purple-600 hover:underline">terms of service</a>
</label>
</div>
<p class="text-red-500 text-xs mt-1 hidden" id="consentError">Please agree to our terms</p>
<button type="submit" id="submitBtn"
class="w-full bg-purple-600 hover:bg-purple-700 text-white font-medium py-3 px-4 rounded-lg transition duration-300 flex items-center justify-center">
<span id="submitText">Send Message</span>
<i class="fas fa-paper-plane ml-2"></i>
</button>
</form>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const form = document.getElementById('contactForm');
const submitBtn = document.getElementById('submitBtn');
const submitText = document.getElementById('submitText');
const successMessage = document.querySelector('.success-message');
form.addEventListener('submit', function(e) {
e.preventDefault();
// Reset errors
document.querySelectorAll('[id$="Error"]').forEach(el => {
el.classList.add('hidden');
});
// Validate form
let isValid = true;
// Name validation
const name = document.getElementById('name');
if (!name.value.trim()) {
document.getElementById('nameError').classList.remove('hidden');
name.classList.add('shake');
isValid = false;
setTimeout(() => name.classList.remove('shake'), 500);
}
// Email validation
const email = document.getElementById('email');
const emailRegex = /^[^\s@]+@[^\s@]+\.([^\s@]+)$/;
if (!emailRegex.test(email.value)) {
document.getElementById('emailError').classList.remove('hidden');
email.classList.add('shake');
isValid = false;
setTimeout(() => email.classList.remove('shake'), 500);
}
// Subject validation
const subject = document.getElementById('subject');
if (!subject.value) {
document.getElementById('subjectError').classList.remove('hidden');
subject.classList.add('shake');
isValid = false;
setTimeout(() => subject.classList.remove('shake'), 500);
}
// Message validation
const message = document.getElementById('message');
if (!message.value.trim()) {
document.getElementById('messageError').classList.remove('hidden');
message.classList.add('shake');
isValid = false;
setTimeout(() => message.classList.remove('shake'), 500);
}
// Consent validation
const consent = document.getElementById('consent');
if (!consent.checked) {
document.getElementById('consentError').classList.remove('hidden');
consent.classList.add('shake');
isValid = false;
setTimeout(() => consent.classList.remove('shake'), 500);
}
if (!isValid) return;
// Simulate form submission
submitBtn.disabled = true;
submitText.textContent = 'Sending...';
submitBtn.innerHTML = '<span id="submitText">Sending...</span><i class="fas fa-spinner fa-spin ml-2"></i>';
// Simulate API call
setTimeout(() => {
// Reset form
form.reset();
submitBtn.disabled = false;
submitText.textContent = 'Send Message';
submitBtn.innerHTML = '<span id="submitText">Send Message</span><i class="fas fa-paper-plane ml-2"></i>';
// Show success message
successMessage.classList.remove('hidden');
successMessage.classList.add('show');
// Hide success message after 5 seconds
setTimeout(() => {
successMessage.classList.remove('show');
setTimeout(() => successMessage.classList.add('hidden'), 400);
}, 5000);
}, 2000);
});
// Add focus styles dynamically
const inputs = document.querySelectorAll('input, textarea, select');
inputs.forEach(input => {
input.addEventListener('focus', function() {
this.parentElement.querySelector('i').classList.remove('text-gray-400');
this.parentElement.querySelector('i').classList.add('text-purple-500');
});
input.addEventListener('blur', function() {
this.parentElement.querySelector('i').classList.remove('text-purple-500');
this.parentElement.querySelector('i').classList.add('text-gray-400');
});
});
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=vivekin/contact" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>