document.addEventListener('DOMContentLoaded', () => { const categoriesContainer = document.getElementById('category-tabs'); const productsContainer = document.getElementById('product-list'); const loader = document.getElementById('loader'); let allProducts = []; let allGroups = []; const fetchMockData = async () => { try { const [groupsRes, productsRes] = await Promise.all([ fetch('data/grupos.json'), fetch('data/produtos.json') ]); allGroups = await groupsRes.json(); allProducts = await productsRes.json(); return { groups: allGroups, products: allProducts }; } catch (error) { console.error('Error fetching mock data:', error); productsContainer.innerHTML = '
Failed to load menu data.
'; return { groups: [], products: [] }; } }; const renderCategories = (groups) => { if (!categoriesContainer) return; categoriesContainer.innerHTML = ''; const nav = document.createElement('ul'); nav.className = 'nav nav-tabs category-tabs'; const allTab = document.createElement('li'); allTab.className = 'nav-item'; allTab.innerHTML = `All`; nav.appendChild(allTab); groups.forEach(group => { const tab = document.createElement('li'); tab.className = 'nav-item'; tab.innerHTML = `${group.GRUPNOME}`; nav.appendChild(tab); }); categoriesContainer.appendChild(nav); nav.addEventListener('click', (e) => { e.preventDefault(); if (e.target.tagName === 'A') { nav.querySelector('.active').classList.remove('active'); e.target.classList.add('active'); const groupId = e.target.getAttribute('data-group-id'); renderProducts(allProducts, groupId); } }); }; const renderProducts = (products, groupId = 'all') => { if (!productsContainer) return; productsContainer.innerHTML = ''; const filteredProducts = groupId === 'all' ? products : products.filter(p => p.PRODGRUPO == groupId); if (filteredProducts.length === 0) { productsContainer.innerHTML = 'No products found in this category.
'; return; } filteredProducts.forEach(product => { const col = document.createElement('div'); col.className = 'col-md-4 col-lg-3 mb-4'; const card = `
${product.OBS || ''}