Merge in upstream site

This commit is contained in:
Ana Custura 2026-02-09 14:34:15 +00:00
parent 6fcdd2b7d7
commit aa488840e5
83 changed files with 596 additions and 9561 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,26 @@
document.addEventListener("DOMContentLoaded",function(){const a=document.querySelectorAll(".tab-btn"),i=document.getElementById("tab-content"),e=document.getElementById("tab-title"),s={all:{title:"All Apps",apps:[{title:"WhatsApp",author:"WhatsApp Inc.",icon:"icons/dhung.jpg",rating:4.3,downloads:"5B+",category:"Communication"},{title:"Instagram",author:"Meta",icon:"icons/book.png",rating:4.2,downloads:"1B+",category:"Social"},{title:"Clash of Clans",author:"Supercell",icon:"icons/dhung.jpg",rating:4.5,downloads:"500M+",category:"Games"},{title:"Netflix",author:"Netflix Inc.",icon:"icons/book.png",rating:4.1,downloads:"1B+",category:"Entertainment"}]},games:{title:"Games",apps:[{title:"Clash of Clans",author:"Supercell",icon:"icons/dhung.jpg",rating:4.5,downloads:"500M+",category:"Strategy"},{title:"PUBG Mobile",author:"Tencent Games",icon:"icons/book.png",rating:4.3,downloads:"1B+",category:"Action"},{title:"Candy Crush Saga",author:"King",icon:"icons/dhung.jpg",rating:4.4,downloads:"1B+",category:"Puzzle"},{title:"Among Us",author:"InnerSloth",icon:"icons/book.png",rating:4.2,downloads:"500M+",category:"Social"}]},apps:{title:"Apps",apps:[{title:"WhatsApp",author:"WhatsApp Inc.",icon:"icons/dhung.jpg",rating:4.3,downloads:"5B+",category:"Communication"},{title:"Instagram",author:"Meta",icon:"icons/book.png",rating:4.2,downloads:"1B+",category:"Social"},{title:"Spotify",author:"Spotify AB",icon:"icons/dhung.jpg",rating:4.5,downloads:"1B+",category:"Music"},{title:"Zoom",author:"Zoom Video Communications",icon:"icons/book.png",rating:4.1,downloads:"500M+",category:"Productivity"}]},movies:{title:"Movies & TV",apps:[{title:"Netflix",author:"Netflix Inc.",icon:"icons/book.png",rating:4.1,downloads:"1B+",category:"Streaming"},{title:"Disney+",author:"Disney",icon:"icons/dhung.jpg",rating:4.3,downloads:"500M+",category:"Streaming"},{title:"Amazon Prime Video",author:"Amazon",icon:"icons/book.png",rating:4,downloads:"500M+",category:"Streaming"},{title:"YouTube",author:"Google",icon:"icons/dhung.jpg",rating:4.4,downloads:"5B+",category:"Video"}]},books:{title:"Books",apps:[{title:"Kindle",author:"Amazon",icon:"icons/book.png",rating:4.2,downloads:"100M+",category:"Reading"},{title:"Audible",author:"Amazon",icon:"icons/dhung.jpg",rating:4.4,downloads:"100M+",category:"Audiobooks"},{title:"Google Play Books",author:"Google",icon:"icons/book.png",rating:4.1,downloads:"1B+",category:"Reading"},{title:"Wattpad",author:"Wattpad Corp",icon:"icons/dhung.jpg",rating:4.3,downloads:"100M+",category:"Writing"}]},kids:{title:"Kids",apps:[{title:"YouTube Kids",author:"Google",icon:"icons/book.png",rating:4,downloads:"100M+",category:"Video"},{title:"ABCmouse",author:"Age of Learning",icon:"icons/dhung.jpg",rating:4.2,downloads:"10M+",category:"Education"},{title:"PBS Kids Games",author:"PBS",icon:"icons/book.png",rating:4.3,downloads:"10M+",category:"Games"},{title:"Khan Academy Kids",author:"Khan Academy",icon:"icons/dhung.jpg",rating:4.5,downloads:"10M+",category:"Education"}]}};function l(o){return o.map(t=>`
<div class="bg-white rounded-xl shadow-sm hover:shadow-md transition-shadow duration-300 p-4">
<div class="flex items-center">
<div class="w-20 h-20 bg-gray-200 rounded-lg flex items-center justify-center mr-4">
<img src="${t.icon}" alt="${t.title}" class="w-20 h-20 rounded-lg object-cover" />
</div>
<div class="flex-1">
<h3 class="font-semibold text-gray-900">${t.title}</h3>
<p class="text-sm text-gray-600">${t.author}</p>
<p class="text-xs text-blue-600">${t.category}</p>
<div class="flex items-center mt-1">
<div class="flex text-yellow-400">
${Array.from({length:5}).map((n,r)=>`<svg class="w-3 h-3 ${r<Math.floor(t.rating)?"text-yellow-400":"text-gray-300"}" fill="currentColor" viewBox="0 0 20 20">
<path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
</svg>`).join("")}
</div>
<span class="ml-1 text-xs text-gray-600">${t.rating}</span>
</div>
</div>
<div class="text-right">
<span class="text-xs text-gray-500">${t.downloads}</span>
<button class="block mt-1 text-blue-600 hover:text-blue-700 text-sm font-medium">Install</button>
</div>
</div>
</div>
`).join("")}function c(o){a.forEach(n=>{n.dataset.tab===o?n.className="tab-btn px-4 py-2 bg-blue-600 text-white rounded-full font-medium hover:bg-blue-700 transition-colors":n.className="tab-btn px-4 py-2 bg-gray-100 text-gray-700 rounded-full font-medium hover:bg-gray-200 transition-colors"});const t=s[o];e.textContent=t.title,i.innerHTML=l(t.apps)}a.forEach(o=>{o.addEventListener("click",function(){c(this.dataset.tab)})})});