Files
portfolio/components/contact_page.templ
2025-02-13 08:35:26 +01:00

110 lines
5.6 KiB
Plaintext

package components
templ ContactPage() {
@rootLayout() {
<main class="w-full min-h-full py-16 px-4 sm:px-6 lg:px-8">
<div class="max-w-3xl mx-auto">
<div class="text-center mb-12">
<h1 class="text-4xl font-bold text-slate-100 mb-4">Get in Touch</h1>
<p class="text-slate-400">Have a question or want to work together? Let's connect!</p>
</div>
<div class="bg-slate-800/50 rounded-2xl p-8 backdrop-blur-sm shadow-xl">
<form id="contactForm" class="space-y-6" onsubmit="handleSubmit(event)">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label for="name" class="block text-sm font-medium text-slate-300 mb-2">Name</label>
<input
type="text"
id="name"
name="name"
required
class="w-full px-4 py-3 bg-slate-700/50 border border-slate-600 rounded-lg focus:ring-2 focus:ring-emerald-500 focus:border-transparent text-slate-100 placeholder-slate-400 transition-all"
placeholder="Your name"
/>
</div>
<div>
<label for="email" class="block text-sm font-medium text-slate-300 mb-2">Email</label>
<input
type="email"
id="email"
name="email"
required
class="w-full px-4 py-3 bg-slate-700/50 border border-slate-600 rounded-lg focus:ring-2 focus:ring-emerald-500 focus:border-transparent text-slate-100 placeholder-slate-400 transition-all"
placeholder="your@email.com"
/>
</div>
</div>
<div>
<label for="subject" class="block text-sm font-medium text-slate-300 mb-2">Subject</label>
<input
type="text"
id="subject"
name="subject"
required
class="w-full px-4 py-3 bg-slate-700/50 border border-slate-600 rounded-lg focus:ring-2 focus:ring-emerald-500 focus:border-transparent text-slate-100 placeholder-slate-400 transition-all"
placeholder="What's this about?"
/>
</div>
<div>
<label for="message" class="block text-sm font-medium text-slate-300 mb-2">Message</label>
<textarea
id="message"
name="message"
rows="6"
required
class="w-full px-4 py-3 bg-slate-700/50 border border-slate-600 rounded-lg focus:ring-2 focus:ring-emerald-500 focus:border-transparent text-slate-100 placeholder-slate-400 transition-all resize-none"
placeholder="Your message here..."
></textarea>
</div>
<div class="flex items-center justify-between">
<button
type="submit"
class="inline-flex items-center px-6 py-3 border border-transparent rounded-lg text-base font-medium text-white bg-emerald-600 hover:bg-emerald-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-emerald-500 transition-all"
>
Send Message
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 ml-2" viewBox="0 0 20 20" fill="currentColor">
<path d="M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z"></path>
</svg>
</button>
<div class="flex items-center space-x-4">
<a href="https://linkedin.com/in/yourprofile" target="_blank" rel="noopener noreferrer" class="text-slate-400 hover:text-slate-300 transition-colors">
<svg class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24">
<path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"></path>
</svg>
</a>
<a href="https://github.com/yourusername" target="_blank" rel="noopener noreferrer" class="text-slate-400 hover:text-slate-300 transition-colors">
<svg class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path>
</svg>
</a>
</div>
</div>
</form>
</div>
</div>
</main>
<script>
function handleSubmit(event) {
event.preventDefault();
const form = event.target;
const formData = new FormData(form);
// Construct mailto URL
const email = 'your@email.com'; // Replace with your email
const subject = formData.get('subject');
const name = formData.get('name');
const message = `Name: ${name}\nEmail: ${formData.get('email')}\n\nMessage:\n${formData.get('message')}`;
const mailtoUrl = `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(message)}`;
// Open email client
window.location.href = mailtoUrl;
// Optional: Reset form
form.reset();
}
</script>
}
}