No apps published yet
btn.addEventListener('click', function () { var code = btn.parentElement.querySelector('code'); if (!code || !navigator.clipboard) return; + // Copy raw text content without HTML tags or formatting navigator.clipboard.writeText(code.textContent).then(function () { var prev = btn.innerHTML; btn.innerHTML = 'โ Copied'; @@ -379,6 +454,74 @@No apps published yet
}); }); }); + + // CLI Command Syntax Highlighting + function esc(s) { return String(s).replace(/[&<>"']/g, function(c) { return { '&':'&','<':'<','>':'>','"':'"',"'":''' }[c]; }); } + + function highlightCmd(cmd) { + var htmlStr = esc(cmd); + var urls = []; + htmlStr = htmlStr.replace(/((?:oci\+)?https?:\/\/[^\s\\]+|sigs\/[^\s\\]+)/g, function(match) { + urls.push(match); + return '__AETHERPAK_URL_PLACEHOLDER_' + (urls.length - 1) + '__'; + }); + htmlStr = htmlStr.replace(/(^|\s)(--?[a-zA-Z0-9-]+)/g, '$1$2'); + htmlStr = htmlStr.replace(/(^|\s)(flatpak)\b/g, '$1$2'); + htmlStr = htmlStr.replace(/\b(install|remote-add|remote-modify)\b/g, '$1'); + for (var i = 0; i < urls.length; i++) { + htmlStr = htmlStr.replace('__AETHERPAK_URL_PLACEHOLDER_' + i + '__', '' + urls[i] + ''); + } + return htmlStr; + } + + document.querySelectorAll('.code code').forEach(function (el) { + el.innerHTML = highlightCmd(el.textContent); + }); + + // Search and filter logic + var searchInput = document.getElementById('app-search'); + if (searchInput) { + searchInput.addEventListener('input', function (e) { + var query = e.target.value.toLowerCase().trim(); + var cards = document.querySelectorAll('.grid > .app-card'); + var visibleCount = 0; + + cards.forEach(function (card) { + var name = card.getAttribute('data-app-name').toLowerCase(); + var id = card.getAttribute('data-app-id').toLowerCase(); + var summary = (card.getAttribute('data-app-summary') || '').toLowerCase(); + + if (name.indexOf(query) !== -1 || id.indexOf(query) !== -1 || summary.indexOf(query) !== -1) { + card.style.display = 'block'; + visibleCount++; + } else { + card.style.display = 'none'; + } + }); + + var emptySearch = document.getElementById('empty-search'); + if (visibleCount === 0) { + if (!emptySearch) { + emptySearch = document.createElement('div'); + emptySearch.id = 'empty-search'; + emptySearch.className = 'card empty'; + emptySearch.style.marginTop = '1.5rem'; + emptySearch.innerHTML = 'No matching applications
Try searching for a different keyword or app ID.
'; + document.querySelector('.grid').appendChild(emptySearch); + } + } else { + if (emptySearch) emptySearch.remove(); + } + }); + + // Focus search input when "/" is pressed + document.addEventListener('keydown', function (e) { + if (e.key === '/' && document.activeElement.tagName !== 'INPUT' && document.activeElement.tagName !== 'TEXTAREA') { + e.preventDefault(); + searchInput.focus(); + } + }); + }