document.addEventListener('DOMContentLoaded', function (){
var searchInput=document.getElementById('zorem-plugin-search');
var filterButtons=document.querySelectorAll('.zorem-filter-btn');
var pluginCards=document.querySelectorAll('.zorem-plugin-card');
var noResults=document.getElementById('zorem-no-results');
var pluginsGrid=document.getElementById('zorem-plugins-grid');
var clearButton=document.getElementById('zorem-clear-filters');
if(! searchInput||! pluginsGrid){
return;
}
var ACTIVE_CLASSES='zorem-filter-btn px-5 py-2 rounded-full text-sm font-bold transition-all bg-blue-600 text-white shadow-lg shadow-blue-200';
var INACTIVE_CLASSES='zorem-filter-btn px-5 py-2 rounded-full text-sm font-bold transition-all bg-slate-100 text-slate-600 hover:bg-slate-200';
var activeCategory='All';
function filterPlugins(){
var query=searchInput.value.toLowerCase().trim();
var visibleCount=0;
pluginCards.forEach(function(card){
var name=(card.dataset.name||'').toLowerCase();
var description=(card.dataset.description||'').toLowerCase();
var category=card.dataset.category||'';
var matchesSearch=name.indexOf(query)!==-1||description.indexOf(query)!==-1;
var matchesCategory=activeCategory==='All'||category===activeCategory;
if(matchesSearch&&matchesCategory){
card.style.display='';
visibleCount++;
}else{
card.style.display='none';
}});
if(noResults){
noResults.classList.toggle('hidden', visibleCount > 0);
}
if(pluginsGrid){
pluginsGrid.classList.toggle('hidden', visibleCount===0);
}}
function updateButtonStyles(){
filterButtons.forEach(function(btn){
if(btn.dataset.category===activeCategory){
btn.className=ACTIVE_CLASSES;
}else{
btn.className=INACTIVE_CLASSES;
}});
}
searchInput.addEventListener('input', filterPlugins);
filterButtons.forEach(function(btn){
btn.addEventListener('click', function (){
activeCategory=this.dataset.category;
updateButtonStyles();
filterPlugins();
});
});
if(clearButton){
clearButton.addEventListener('click', function (){
searchInput.value='';
activeCategory='All';
updateButtonStyles();
filterPlugins();
});
}});