⏳ AI Countdown Maker

Create beautiful countdown timer pages in seconds

⚙️ Settings

🎨 Countdown Style

🔢
Flip Clock
Classic flip card animation
💡
Digital
Clean digital numbers
📊
Progress Bar
Visual progress indicators

🖼️ Background

👁️ Live Preview

Configure your countdown above
Preview updates in real-time

`; } function downloadHTML() { const cfg = getConfig(); if (!cfg.targetDate) { showToast('⚠️ Please set a target date'); return; } const html = generateStandaloneHTML(); const blob = new Blob([html], { type: 'text/html' }); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = `countdown-${cfg.title.replace(/[^a-zA-Z0-9]/g, '-').toLowerCase()}.html`; a.click(); URL.revokeObjectURL(a.href); showToast('✅ HTML file downloaded!'); } function copyShareLink() { const cfg = getConfig(); if (!cfg.targetDate) { showToast('⚠️ Please set a target date'); return; } const params = new URLSearchParams({ t: cfg.title, d: cfg.targetDate, s: cfg.style, bg: cfg.bgColor, tc: cfg.textColor, ac: cfg.accentColor }); if (cfg.bgImage) params.set('bi', cfg.bgImage); const url = location.origin + location.pathname + '?' + params.toString(); navigator.clipboard.writeText(url).then(() => showToast('✅ Share link copied!')); } function openPreview() { const cfg = getConfig(); if (!cfg.targetDate) { showToast('⚠️ Please set a target date'); return; } const html = generateStandaloneHTML(); const w = window.open('', '_blank'); w.document.write(html); w.document.close(); } // Load from URL params (function loadFromURL() { const p = new URLSearchParams(location.search); if (p.has('t')) document.getElementById('title').value = p.get('t'); if (p.has('d')) document.getElementById('targetDate').value = p.get('d'); if (p.has('s')) selectStyle(p.get('s')); if (p.has('bg')) document.getElementById('bgColor').value = p.get('bg'); if (p.has('tc')) document.getElementById('textColor').value = p.get('tc'); if (p.has('ac')) document.getElementById('accentColor').value = p.get('ac'); if (p.has('bi')) document.getElementById('bgImage').value = p.get('bi'); updatePreview(); })(); function showToast(msg) { const t = document.getElementById('toast'); t.textContent = msg; t.classList.add('show'); setTimeout(() => t.classList.remove('show'), 2500); }