Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

1 thought on “Hello world!”

Leave a Comment

Your email address will not be published. Required fields are marked *

// Mobile Menu Toggle const mobileMenuToggle = document.querySelector('.mobile-menu-toggle'); const navMenu = document.querySelector('.nav-menu'); const navLinks = document.querySelectorAll('.nav-menu a'); mobileMenuToggle?.addEventListener('click', () => { navMenu.classList.toggle('active'); mobileMenuToggle.classList.toggle('active'); // Animate hamburger icon const spans = mobileMenuToggle.querySelectorAll('span'); if (navMenu.classList.contains('active')) { spans[0].style.transform = 'rotate(45deg) translateY(8px)'; spans[1].style.opacity = '0'; spans[2].style.transform = 'rotate(-45deg) translateY(-8px)'; } else { spans[0].style.transform = 'none'; spans[1].style.opacity = '1'; spans[2].style.transform = 'none'; } }); // Close mobile menu when clicking on a link navLinks.forEach(link => { link.addEventListener('click', () => { if (window.innerWidth <= 968) { navMenu.classList.remove('active'); const spans = mobileMenuToggle.querySelectorAll('span'); spans[0].style.transform = 'none'; spans[1].style.opacity = '1'; spans[2].style.transform = 'none'; } }); }); // Search Overlay const searchButton = document.querySelector('.btn-search'); const searchOverlay = document.querySelector('.search-overlay'); const searchClose = document.querySelector('.search-close'); const searchInput = document.querySelector('.search-form input'); searchButton?.addEventListener('click', () => { searchOverlay.classList.add('active'); setTimeout(() => { searchInput?.focus(); }, 100); }); searchClose?.addEventListener('click', () => { searchOverlay.classList.remove('active'); }); // Close search overlay on Escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && searchOverlay.classList.contains('active')) { searchOverlay.classList.remove('active'); } }); // Close search overlay when clicking outside searchOverlay?.addEventListener('click', (e) => { if (e.target === searchOverlay) { searchOverlay.classList.remove('active'); } }); // Smooth scroll for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { const href = this.getAttribute('href'); if (href === '#' || href === '#search' || href === '#login') { return; } e.preventDefault(); const target = document.querySelector(href); if (target) { const offsetTop = target.offsetTop - 80; // Account for sticky navbar window.scrollTo({ top: offsetTop, behavior: 'smooth' }); } }); }); // Newsletter Form Submission const newsletterForm = document.querySelector('.newsletter-form'); newsletterForm?.addEventListener('submit', (e) => { e.preventDefault(); const email = newsletterForm.querySelector('input[type="email"]').value; // Here you would typically send this to your backend // For now, we'll just show an alert alert(`Thank you for subscribing! We'll send updates to ${email}`); newsletterForm.reset(); }); // Search Form Submission const searchForm = document.querySelector('.search-form'); searchForm?.addEventListener('submit', (e) => { e.preventDefault(); const query = searchForm.querySelector('input[type="search"]').value; // Here you would typically perform a search // For now, we'll just show an alert if (query.trim()) { alert(`Searching for: ${query}`); // You can redirect to a search results page or perform AJAX search here } }); // Navbar scroll effect let lastScroll = 0; const navbar = document.querySelector('.navbar'); window.addEventListener('scroll', () => { const currentScroll = window.pageYOffset; if (currentScroll > 100) { navbar.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.1)'; } else { navbar.style.boxShadow = 'none'; } lastScroll = currentScroll; }); // Intersection Observer for fade-in animations const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -50px 0px' }; const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.style.opacity = '1'; entry.target.style.transform = 'translateY(0)'; } }); }, observerOptions); // Observe service cards and gallery items document.querySelectorAll('.service-card, .gallery-item').forEach(el => { el.style.opacity = '0'; el.style.transform = 'translateY(20px)'; el.style.transition = 'opacity 0.6s ease, transform 0.6s ease'; observer.observe(el); }); // Close dropdowns when clicking outside document.addEventListener('click', (e) => { if (!e.target.closest('.dropdown')) { document.querySelectorAll('.dropdown-menu').forEach(menu => { // Dropdowns are handled by CSS :hover, but we can add JS logic here if needed }); } }); // Handle window resize window.addEventListener('resize', () => { if (window.innerWidth > 968) { navMenu.classList.remove('active'); const spans = mobileMenuToggle?.querySelectorAll('span'); if (spans) { spans[0].style.transform = 'none'; spans[1].style.opacity = '1'; spans[2].style.transform = 'none'; } } }); // Add to Cart Functionality const addToCartButtons = document.querySelectorAll('.btn-add-to-cart'); addToCartButtons.forEach(button => { button.addEventListener('click', function() { const productCard = this.closest('.product-card'); const productName = productCard.querySelector('h3').textContent; const productPrice = productCard.querySelector('.product-price').textContent; // Visual feedback const originalText = this.textContent; this.textContent = 'Added!'; this.style.background = '#4caf50'; // Here you would typically add the product to a cart system // For now, we'll just show a notification setTimeout(() => { this.textContent = originalText; this.style.background = ''; }, 2000); // You can integrate with a shopping cart system here // Example: addToCart(productName, productPrice); console.log(`Added ${productName} (${productPrice}) to cart`); }); }); console.log('Website loaded successfully!');
Scroll to Top