akhaliq's picture
akhaliq HF Staff
Upload folder using huggingface_hub
d4ea921 verified
// Mobile Navigation Toggle
const hamburger = document.querySelector('.hamburger');
const navLinks = document.querySelector('.nav-links');
hamburger.addEventListener('click', () => {
navLinks.classList.toggle('active');
});
// Close mobile menu when clicking a link
document.querySelectorAll('.nav-links a').forEach(link => {
link.addEventListener('click', () => {
navLinks.classList.remove('active');
});
});
// Form Submission Handling
const coffeeForm = document.getElementById('coffeeForm');
coffeeForm.addEventListener('submit', function(e) {
e.preventDefault();
// Get form values
const name = document.getElementById('name').value;
const email = document.getElementById('email').value;
const coffee = document.getElementById('coffee').value;
// Simple validation
if(name && email && coffee) {
// Create success message
const successMsg = document.createElement('div');
successMsg.className = 'form-success';
successMsg.textContent = `Thanks ${name}! Your order for ${coffee} has been placed. We'll send confirmation to ${email}.`;
// Insert before form
this.parentNode.insertBefore(successMsg, this);
successMsg.style.display = 'block';
// Reset form
this.reset();
// Remove message after 5 seconds
setTimeout(() => {
successMsg.remove();
}, 5000);
} else {
// Create error message
const errorMsg = document.createElement('div');
errorMsg.className = 'form-error';
errorMsg.textContent = 'Please fill in all required fields.';
// Insert before form
this.parentNode.insertBefore(errorMsg, this);
errorMsg.style.display = 'block';
// Remove message after 3 seconds
setTimeout(() => {
errorMsg.remove();
}, 3000);
}
});
// Scroll animation for sections
const sections = document.querySelectorAll('section');
const observerOptions = {
root: null,
rootMargin: '0px',
threshold: 0.1
};
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if(entry.isIntersecting) {
entry.target.classList.add('visible');
observer.unobserve(entry.target);
}
});
}, observerOptions);
sections.forEach(section => {
observer.observe(section);
});
// Add visible class for initial load
document.getElementById('home').classList.add('visible');
// Smooth scroll for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const targetId = this.getAttribute('href');
if(targetId === '#') return;
const targetElement = document.querySelector(targetId);
if(targetElement) {
window.scrollTo({
top: targetElement.offsetTop - 80,
behavior: 'smooth'
});
}
});
});
// Add animation classes to sections
document.addEventListener('DOMContentLoaded', function() {
const style = document.createElement('style');
style.textContent = `
section {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
section.visible {
opacity: 1;
transform: translateY(0);
}
`;
document.head.appendChild(style);
});