Files
shopify-ai-backup/chat/public/contact.html
southseact-3d 74871ae05c Update contact page header to match home.html design
- Added Tailwind CSS and matching navigation from home.html
- Implemented glass-morphism navigation with mobile menu
- Added navbar scroll effects and responsive design
- Verified backend contact form functionality exists and works correctly
2026-02-09 17:54:49 +00:00

618 lines
21 KiB
HTML

<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Us - Plugin Compass</title>
<link rel="icon" type="image/png" href="/assets/Plugin.png">
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script>
(function applyTailwindConfig(cfg, attempts = 0) {
try {
if (typeof window.tailwind !== 'undefined') {
window.tailwind.config = cfg;
return;
}
} catch (e) {
// ignore
}
if (attempts >= 20) {
console.warn('Tailwind not available after multiple attempts; config not applied.');
return;
}
setTimeout(() => applyTailwindConfig(cfg, attempts + 1), 100);
})({
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
colors: {
brand: {
50: '#eef2ff',
100: '#e0e7ff',
200: '#c7d2fe',
300: '#a5b4fc',
400: '#818cf8',
500: '#6366f1',
600: '#4f46e5',
700: '#4338ca',
800: '#3730a3',
900: '#312e81',
950: '#1e1b4b',
}
},
animation: {
'blob': 'blob 7s infinite',
},
keyframes: {
blob: {
'0%': { transform: 'translate(0px, 0px) scale(1)' },
'33%': { transform: 'translate(30px, -50px) scale(1.1)' },
'66%': { transform: 'translate(-20px, 20px) scale(0.9)' },
'100%': { transform: 'translate(0px, 0px) scale(1)' },
}
}
}
}
});
</script>
<style>
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #fdf6ed;
}
::-webkit-scrollbar-thumb {
background: #d1d5db;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #9ca3af;
}
.glass-nav {
background: rgba(251, 246, 239, 0.9);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(0, 66, 37, 0.1);
}
body {
background-color: #fdf6ed;
color: #202223;
font-family: 'Inter', sans-serif;
margin: 0;
display: flex;
flex-direction: column;
min-height: 100vh;
}
.container {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
padding: 2rem;
}
.contact-card {
background: white;
padding: 3rem;
border-radius: 12px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
max-width: 500px;
width: 100%;
text-align: center;
}
h1 {
font-family: 'Space Grotesk', sans-serif;
font-size: 2rem;
margin-bottom: 1.5rem;
color: #004c3f;
}
p {
line-height: 1.6;
color: #6d7175;
margin-bottom: 2rem;
}
.email-link {
display: inline-block;
background: linear-gradient(135deg, #008060 0%, #004c3f 100%);
color: white;
text-decoration: none;
padding: 1rem 2rem;
border-radius: 8px;
font-weight: 600;
transition: opacity 0.2s;
}
.email-link:hover {
opacity: 0.9;
}
.footer {
background: white;
padding: 2rem;
text-align: center;
border-top: 1px solid #e1e3e5;
color: #6d7175;
font-size: 0.875rem;
}
.footer a {
color: #008060;
text-decoration: none;
margin: 0 0.5rem;
}
.footer-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 2rem;
max-width: 1200px;
margin: 0 auto;
text-align: left;
}
.footer-brand {
grid-column: span 2;
max-width: 280px;
}
.footer-brand .logo-text {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 1rem;
font-weight: 700;
font-size: 1.25rem;
color: #1a1a1a;
}
.footer-brand .logo-text img {
height: 32px;
width: auto;
}
.footer-brand p {
color: #6b7280;
font-size: 0.875rem;
line-height: 1.6;
margin-bottom: 0;
}
.footer h4 {
font-weight: 600;
color: #1a1a1a;
margin-bottom: 1rem;
font-size: 0.875rem;
}
.footer ul {
list-style: none;
padding: 0;
margin: 0;
}
.footer li {
margin-bottom: 0.75rem;
}
.footer li a {
color: #6b7280;
font-size: 0.875rem;
transition: color 0.2s;
}
.footer li a:hover {
color: #008060;
}
.footer-newsletter {
max-width: 280px;
}
.footer-newsletter p {
color: #6b7280;
font-size: 0.875rem;
margin-bottom: 1rem;
}
.footer-newsletter form {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.footer-newsletter input[type="email"] {
padding: 0.75rem 1rem;
border: 1px solid #e5e7eb;
border-radius: 8px;
font-size: 0.875rem;
width: 100%;
}
.footer-newsletter button {
background: #008060;
color: white;
border: none;
padding: 0.75rem 1rem;
border-radius: 8px;
font-weight: 600;
font-size: 0.875rem;
cursor: pointer;
transition: background 0.2s;
}
.footer-newsletter button:hover {
background: #006B3D;
}
.footer-bottom {
border-top: 1px solid #e5e7eb;
margin-top: 2rem;
padding-top: 1.5rem;
text-align: center;
}
.footer-bottom p {
color: #9ca3af;
font-size: 0.75rem;
margin: 0;
}
.contact-form {
text-align: left;
margin-top: 1.5rem;
}
.contact-form .form-group {
margin-bottom: 1rem;
}
.contact-form label {
display: block;
font-weight: 500;
margin-bottom: 0.5rem;
color: #374151;
font-size: 0.875rem;
}
.contact-form input,
.contact-form textarea {
width: 100%;
padding: 0.75rem 1rem;
border: 1px solid #e5e7eb;
border-radius: 8px;
font-size: 0.875rem;
font-family: inherit;
transition: border-color 0.2s, box-shadow 0.2s;
}
.contact-form input:focus,
.contact-form textarea:focus {
outline: none;
border-color: #008060;
box-shadow: 0 0 0 3px rgba(0, 128, 96, 0.1);
}
.contact-form textarea {
min-height: 120px;
resize: vertical;
}
.contact-form button {
background: linear-gradient(135deg, #008060 0%, #004c3f 100%);
color: white;
border: none;
padding: 1rem 2rem;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
transition: opacity 0.2s;
width: 100%;
}
.contact-form button:hover {
opacity: 0.9;
}
.contact-form button:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.form-message {
padding: 0.75rem 1rem;
border-radius: 8px;
margin-top: 1rem;
font-size: 0.875rem;
display: none;
}
.form-message.success {
background: #d1fae5;
color: #065f46;
display: block;
}
.form-message.error {
background: #fee2e2;
color: #991b1b;
display: block;
}
</style>
<!-- PostHog Analytics -->
<script src="/posthog.js"></script>
</head>
<body class="bg-amber-50 text-gray-900 font-sans antialiased overflow-x-hidden">
<!-- Navigation -->
<nav class="fixed w-full z-50 glass-nav transition-all duration-300" id="navbar">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between items-center h-20">
<!-- Logo -->
<a href="/" class="flex-shrink-0 flex items-center gap-2 cursor-pointer">
<img src="/assets/Plugin.png" alt="Plugin Compass" class="w-8 h-8">
<span class="font-bold text-xl tracking-tight text-gray-800">Plugin<span
class="text-green-700">Compass</span></span>
</a>
<!-- Desktop Menu -->
<div class="hidden md:flex items-center space-x-8">
<a href="/features"
class="text-gray-700 hover:text-gray-900 transition-colors text-sm font-medium">Features</a>
<a href="/pricing"
class="text-gray-700 hover:text-gray-900 transition-colors text-sm font-medium">Pricing</a>
<a href="/docs"
class="text-gray-700 hover:text-gray-900 transition-colors text-sm font-medium">Docs</a>
<a href="/faq"
class="text-gray-700 hover:text-gray-900 transition-colors text-sm font-medium">FAQ</a>
</div>
<!-- CTA Buttons -->
<div class="hidden md:flex items-center gap-4">
<a href="/login"
class="text-gray-700 hover:text-gray-900 font-medium text-sm transition-colors">Sign In</a>
<a href="/signup"
class="bg-green-700 hover:bg-green-600 text-white px-5 py-2.5 rounded-full font-medium text-sm transition-all shadow-lg shadow-green-700/20 hover:shadow-green-700/40 transform hover:-translate-y-0.5">
Get Started
</a>
</div>
<!-- Mobile Menu Button -->
<div class="md:hidden flex items-center">
<button id="mobile-menu-btn" class="text-gray-700 hover:text-gray-900 focus:outline-none">
<i class="fa-solid fa-bars text-xl"></i>
</button>
</div>
</div>
</div>
<!-- Mobile Menu Panel -->
<div id="mobile-menu" class="hidden md:hidden bg-amber-50 border-b border-amber-200">
<div class="px-4 pt-2 pb-6 space-y-1">
<a href="/features"
class="block px-3 py-3 text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-amber-100 rounded-md">Features</a>
<a href="/pricing"
class="block px-3 py-3 text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-amber-100 rounded-md">Pricing</a>
<a href="/docs"
class="block px-3 py-3 text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-amber-100 rounded-md">Docs</a>
<a href="/faq"
class="block px-3 py-3 text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-amber-100 rounded-md">FAQ</a>
<div class="pt-4 flex flex-col gap-3">
<a href="/login" class="w-full text-center py-2 text-gray-700 font-medium">Sign In</a>
<a href="/signup" class="w-full bg-green-700 text-white text-center py-3 rounded-lg font-medium">Get
Started</a>
</div>
</div>
</div>
</nav>
<main class="container" style="padding-top: 6rem;">
<div class="contact-card">
<h1>Get in Touch</h1>
<p>Have questions or need support? We're here to help you build the perfect WordPress Plugin.</p>
<p>Please fill out the form below and we'll get back to you as soon as possible.</p>
<form id="contact-form" class="contact-form">
<div class="form-group">
<label for="contact-name">Your Name</label>
<input type="text" id="contact-name" name="name" placeholder="John Doe" required>
</div>
<div class="form-group">
<label for="contact-email">Email Address</label>
<input type="email" id="contact-email" name="email" placeholder="john@example.com" required>
</div>
<div class="form-group">
<label for="contact-subject">Subject</label>
<input type="text" id="contact-subject" name="subject" placeholder="How can we help?" required>
</div>
<div class="form-group">
<label for="contact-message">Message</label>
<textarea id="contact-message" name="message" placeholder="Tell us more about your project..." required></textarea>
</div>
<button type="submit" id="contact-submit">Send Message</button>
<div id="contact-message-display" class="form-message"></div>
</form>
</div>
</main>
<footer class="footer">
<div class="footer-grid">
<div class="footer-brand">
<div class="logo-text">
<img src="/assets/Plugin.png" alt="Plugin Compass">
<span>Plugin Compass</span>
</div>
<p>The smart way for WordPress site owners to replace expensive plugin subscriptions with custom solutions. Save thousands monthly.</p>
</div>
<div>
<h4>Product</h4>
<ul>
<li><a href="/features">Features</a></li>
<li><a href="/pricing">Pricing</a></li>
<li><a href="#">Templates</a></li>
</ul>
</div>
<div>
<h4>Resources</h4>
<ul>
<li><a href="/docs">Documentation</a></li>
<li><a href="/faq">FAQ</a></li>
</ul>
</div>
<div>
<h4>Legal</h4>
<ul>
<li><a href="/privacy.html">Privacy Policy</a></li>
<li><a href="/terms">Terms of Service</a></li>
<li><a href="/contact">Contact Us</a></li>
</ul>
</div>
<div class="footer-newsletter">
<h4>Stay Updated</h4>
<p>Get the latest updates and WordPress tips.</p>
<form id="footer-signup-form">
<input type="email" name="email" placeholder="Your email" required>
<button type="submit">Subscribe</button>
</form>
<div id="signup-message" class="form-message"></div>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Plugin Compass. All rights reserved.</p>
</div>
</footer>
<script>
const contactForm = document.getElementById('contact-form');
const contactSubmit = document.getElementById('contact-submit');
const contactMessage = document.getElementById('contact-message-display');
if (contactForm) {
contactForm.addEventListener('submit', async (e) => {
e.preventDefault();
contactSubmit.disabled = true;
contactSubmit.textContent = 'Sending...';
const formData = {
name: document.getElementById('contact-name').value,
email: document.getElementById('contact-email').value,
subject: document.getElementById('contact-subject').value,
message: document.getElementById('contact-message').value
};
try {
const response = await fetch('/api/contact', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(formData)
});
const result = await response.json();
if (response.ok) {
contactMessage.textContent = 'Thank you for your message! We\'ll get back to you soon.';
contactMessage.className = 'form-message success';
contactForm.reset();
} else {
throw new Error(result.error || 'Failed to send message');
}
} catch (error) {
contactMessage.textContent = error.message || 'Failed to send message. Please try again.';
contactMessage.className = 'form-message error';
} finally {
contactSubmit.disabled = false;
contactSubmit.textContent = 'Send Message';
}
});
}
const signupForm = document.getElementById('footer-signup-form');
const signupMessage = document.getElementById('signup-message');
if (signupForm) {
signupForm.addEventListener('submit', async (e) => {
e.preventDefault();
const email = signupForm.querySelector('input[name="email"]').value;
const button = signupForm.querySelector('button');
button.disabled = true;
button.textContent = 'Subscribing...';
try {
const response = await fetch('https://emailmarketing.modelrailway3d.co.uk/api/webhooks/incoming/wh_0Z49zi_DGj4-lKJMOPO8-g', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: email,
source: 'plugin_compass_footer',
timestamp: new Date().toISOString()
})
});
if (response.ok) {
signupMessage.textContent = 'Successfully subscribed!';
signupMessage.className = 'form-message success';
signupForm.reset();
} else {
throw new Error('Failed to subscribe');
}
} catch (error) {
signupMessage.textContent = 'Failed to subscribe. Please try again.';
signupMessage.className = 'form-message error';
} finally {
button.disabled = false;
button.textContent = 'Subscribe';
}
});
}
// Mobile menu toggle
const mobileMenuBtn = document.getElementById('mobile-menu-btn');
const mobileMenu = document.getElementById('mobile-menu');
if (mobileMenuBtn && mobileMenu) {
mobileMenuBtn.addEventListener('click', () => {
mobileMenu.classList.toggle('hidden');
});
}
// Navbar scroll effect
window.addEventListener('scroll', () => {
const navbar = document.getElementById('navbar');
if (!navbar) return;
if (window.scrollY > 20) {
navbar.classList.add('shadow-md', 'h-16');
navbar.classList.remove('h-20');
} else {
navbar.classList.remove('shadow-md', 'h-16');
navbar.classList.add('h-20');
}
});
</script>
</body>
</html>