Ubuntu Web Installer<div class="installer-card">
<div class="h-9 bg-gradient-to-b from-[#4d4d4d] to-[#333] rounded-t-lg flex items-center justify-between px-4 border-b border-black">
<span class="text-xs font-bold text-gray-200">Install</span>
<div class="flex gap-2">
<div class="w-3 h-3 rounded-full bg-[#e95420] border border-black/20"></div>
</div>
</div>
<div class="flex flex-1 overflow-hidden">
<div class="w-40 bg-[#2c001e] p-4 text-xs text-gray-300 space-y-3 border-r border-black/20">
<div id="side-welcome" class="text-white font-bold border-l-2 border-orange-500 pl-2">Welcome</div>
<div class="opacity-50 pl-2">Keyboard layout</div>
<div class="opacity-50 pl-2">Updates</div>
<div class="opacity-50 pl-2">Installation type</div>
<div id="side-installing" class="opacity-50 pl-2">Installing...</div>
</div>
<div class="flex-1 p-10 flex flex-col justify-between relative">
<div id="view-welcome" class="space-y-6">
<h1 class="text-3xl font-light text-white">Welcome</h1>
<p class="text-sm text-gray-300 leading-relaxed">
You are about to install Ubuntu. This installer was built with plain HTML and Tailwind CSS to mimic the Ubiquity experience.
</p>
<div class="bg-black/20 p-4 rounded border border-white/5 text-sm text-gray-400">
Select your language: <br>
<span class="text-orange-400 font-bold">● English</span><br>
<span>○ Français</span><br>
<span>○ Deutsch</span>
</div>
</div>
<div id="view-slideshow" class="hidden space-y-6 animate-fade-in">
<h2 id="slide-title" class="text-2xl font-light text-white">Find even more software</h2>
<p id="slide-text" class="text-sm text-gray-300">Ubuntu comes with the Ubuntu Software Center, giving you instant access to thousands of open-source apps.</p>
<div class="w-full h-32 bg-white/5 rounded-lg flex items-center justify-center border border-white/10">
<span class="text-orange-500 font-bold text-lg">Ubuntu Software Center</span>
</div>
<div class="space-y-2">
<div class="flex justify-between text-[10px] text-gray-400 uppercase tracking-widest">
<span id="progress-status">Copying files...</span>
<span id="progress-percent">0%</span>
</div>
<div class="w-full h-2 bg-black/40 rounded-full overflow-hidden">
<div id="progress-bar" class="progress-fill h-full w-0"></div>
</div>
</div>
</div>
<div class="flex justify-end gap-3 pt-6 border-t border-white/5">
<button onclick="window.close()" class="px-5 py-1 text-xs bg-gray-700 hover:bg-gray-600 text-white rounded shadow">Quit</button>
<button id="btn-next" onclick="startInstallation()" class="px-5 py-1 text-xs bg-[#e95420] hover:bg-[#c6441a] text-white rounded shadow font-bold">Continue</button>
</div>
</div>
</div>
</div>
<script>
function startInstallation() {
// UI Switches
document.getElementById('view-welcome').classList.add('hidden');
document.getElementById('view-slideshow').classList.remove('hidden');
document.getElementById('btn-next').disabled = true;
document.getElementById('btn-next').classList.add('opacity-50');
document.getElementById('side-welcome').classList.remove('text-white', 'font-bold', 'border-orange-500');
document.getElementById('side-welcome').classList.add('opacity-50');
document.getElementById('side-installing').classList.add('text-white', 'font-bold', 'border-l-2', 'border-orange-500', 'opacity-100');
// Progress Logic
let progress = 0;
const bar = document.getElementById('progress-bar');
const percentText = document.getElementById('progress-percent');
const statusText = document.getElementById('progress-status');
const interval = setInterval(() => {
progress += Math.random() * 5;
if (progress >= 100) {
progress = 100;
statusText.innerText = "Installation Complete!";
clearInterval(interval);
}
bar.style.width = progress + "%";
percentText.innerText = Math.floor(progress) + "%";
// Change slides based on progress
if (progress > 30 && progress < 60) {
document.getElementById('slide-title').innerText = "Take your music with you";
document.getElementById('slide-text').innerText = "Ubuntu includes Rhythmbox for playing and organizing your music library.";
} else if (progress > 60) {
document.getElementById('slide-title').innerText = "Built-in Photos app";
document.getElementById('slide-text').innerText = "Shotwell is a digital photo organizer designed for the GNOME desktop.";
}
}, 800);
}
</script>