// Generate category filters dynamically based on available categories function generateFilters() const categoriesSet = new Set(); downloadsData.forEach(item => categoriesSet.add(item.category)); const categories = Array.from(categoriesSet).sort();
.download-card:hover transform: translateY(-6px); box-shadow: 0 24px 40px rgba(0, 0, 0, 0.1); www.lavileztechservice.com download
.btn-download:hover background: #0f405a; transform: scale(0.98); // Generate category filters dynamically based on available
categories.forEach(cat => const btn = document.createElement('button'); btn.className = 'filter-btn'; btn.setAttribute('data-category', cat); // icon mapping for nice UI let icon = 'fa-tag'; if (cat === 'drivers') icon = 'fa-microchip'; else if (cat === 'software') icon = 'fa-window-maximize'; else if (cat === 'tools') icon = 'fa-tools'; else if (cat === 'documentation') icon = 'fa-file-alt'; btn.innerHTML = `<i class="fas $icon"></i> $cat.charAt(0).toUpperCase() + cat.slice(1)`; filterContainer.appendChild(btn); ); const categories = Array.from(categoriesSet).sort()
if (filtered.length === 0) grid.innerHTML = `<div class="no-results"><i class="fas fa-folder-open"></i> No downloads in this category.<br>Please check other sections.</div>`; return;