Initial commit: Fat Kiss site — Hugo + Decap CMS
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
// Fat Kiss — contact.js
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const form = document.getElementById('contactForm');
|
||||
if (!form) return;
|
||||
|
||||
form.addEventListener('submit', async (e) => {
|
||||
e.preventDefault();
|
||||
const btn = document.getElementById('submitBtn');
|
||||
const msg = document.getElementById('formMessage');
|
||||
btn.disabled = true;
|
||||
btn.textContent = 'Sending…';
|
||||
|
||||
try {
|
||||
const fd = new FormData(form);
|
||||
const res = await fetch('/api/contact', {
|
||||
method: 'POST',
|
||||
headers: { 'Accept': 'application/json' },
|
||||
body: fd
|
||||
});
|
||||
const data = await res.json();
|
||||
|
||||
if (res.ok && data.ok) {
|
||||
msg.innerHTML = '<div class="form-message form-message--success">Thank you — your note made it through. Fat Kiss will get back to you soon.</div>';
|
||||
form.reset();
|
||||
if (typeof turnstile !== 'undefined') turnstile.reset();
|
||||
} else {
|
||||
msg.innerHTML = '<div class="form-message form-message--error">' + (data.error || 'Something did not go through. Please try again in a moment.') + '</div>';
|
||||
}
|
||||
} catch (err) {
|
||||
msg.innerHTML = '<div class="form-message form-message--error">Something did not go through. Please try again in a moment.</div>';
|
||||
}
|
||||
|
||||
btn.disabled = false;
|
||||
btn.textContent = 'Send Message';
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,52 @@
|
||||
// Fat Kiss — main.js
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Mobile nav toggle
|
||||
const toggle = document.getElementById('navToggle');
|
||||
const nav = document.getElementById('mainNav');
|
||||
if (toggle && nav) {
|
||||
toggle.addEventListener('click', () => nav.classList.toggle('open'));
|
||||
nav.querySelectorAll('a').forEach(a => {
|
||||
a.addEventListener('click', () => nav.classList.remove('open'));
|
||||
});
|
||||
}
|
||||
|
||||
// FAQ accordion
|
||||
document.querySelectorAll('.faq-item__question').forEach(btn => {
|
||||
btn.addEventListener('click', () => {
|
||||
btn.parentElement.classList.toggle('open');
|
||||
});
|
||||
});
|
||||
|
||||
// Sparkle effect on primary buttons
|
||||
document.querySelectorAll('.btn--primary').forEach(btn => {
|
||||
btn.addEventListener('mousemove', (e) => {
|
||||
const rect = btn.getBoundingClientRect();
|
||||
btn.style.setProperty('--x', ((e.clientX - rect.left) / rect.width * 100) + '%');
|
||||
btn.style.setProperty('--y', ((e.clientY - rect.top) / rect.height * 100) + '%');
|
||||
});
|
||||
});
|
||||
|
||||
// Kiss mark entrance animation for hero logo
|
||||
const heroLogo = document.querySelector('.hero__logo');
|
||||
if (heroLogo && !sessionStorage.getItem('fk-hero-seen')) {
|
||||
heroLogo.classList.add('kiss-mark');
|
||||
sessionStorage.setItem('fk-hero-seen', '1');
|
||||
}
|
||||
|
||||
// Jingle button (if present)
|
||||
const jingleBtn = document.getElementById('jingleBtn');
|
||||
if (jingleBtn) {
|
||||
const audio = document.getElementById('jingleAudio');
|
||||
jingleBtn.addEventListener('click', () => {
|
||||
if (audio) {
|
||||
if (audio.paused) {
|
||||
audio.play();
|
||||
jingleBtn.textContent = '⏸ Pause';
|
||||
} else {
|
||||
audio.pause();
|
||||
jingleBtn.textContent = '▶ Play Jingle';
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user