// Load header and footer includes document.addEventListener('DOMContentLoaded', function() { // Load header const headerPlaceholder = document.getElementById('header-placeholder'); if (headerPlaceholder) { fetch('includes/header.html') .then(response => response.text()) .then(html => { headerPlaceholder.innerHTML = html; }) .catch(error => console.error('Error loading header:', error)); } // Load footer const footerPlaceholder = document.getElementById('footer-placeholder'); if (footerPlaceholder) { fetch('includes/footer.html') .then(response => response.text()) .then(html => { footerPlaceholder.innerHTML = html; }) .catch(error => console.error('Error loading footer:', error)); } // Newsletter subscription via Beehiiv API proxy const SUBSCRIBE_API = 'https://9uqse4bt6c.execute-api.us-west-2.amazonaws.com/prod/api/public/subscribe'; function showSubscribeModal(type, message) { // Remove any existing modal var existing = document.querySelector('.subscribe-modal-overlay'); if (existing) existing.remove(); var iconSvg = type === 'success' ? '' : type === 'error' ? '' : '
'; var overlay = document.createElement('div'); overlay.className = 'subscribe-modal-overlay'; overlay.innerHTML = '
' + '' + '
' + iconSvg + '
' + '

' + message + '

' + '
'; document.body.appendChild(overlay); // Close on backdrop click or close button overlay.addEventListener('click', function(e) { if (e.target === overlay || e.target.closest('.subscribe-modal-close')) { overlay.remove(); } }); } function initNewsletterForm(form) { form.addEventListener('submit', function(e) { e.preventDefault(); var emailInput = form.querySelector('#email') || form.querySelector('input[type="email"]'); var email = emailInput ? emailInput.value.trim() : ''; if (!email) return; showSubscribeModal('loading', 'Subscribing...'); fetch(SUBSCRIBE_API, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: email }) }) .then(function(response) { return response.json().then(function(data) { return { ok: response.ok, data: data }; }); }) .then(function(result) { if (result.ok) { showSubscribeModal('success', 'Welcome! Please check your email to confirm your subscription.'); form.reset(); } else { showSubscribeModal('error', result.data.error || 'Subscription failed. Please try again.'); } }) .catch(function() { showSubscribeModal('error', 'Something went wrong. Please try again later.'); }); }); } // Attach to all newsletter forms on the page document.querySelectorAll('.newsletter-form').forEach(initNewsletterForm); });