Spaces:
Running
Running
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Interactive Greeting</title> | |
<script src="https://cdn.tailwindcss.com"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
<style> | |
@keyframes float { | |
0%, 100% { transform: translateY(0); } | |
50% { transform: translateY(-20px); } | |
} | |
.floating { | |
animation: float 3s ease-in-out infinite; | |
} | |
.gradient-text { | |
background: linear-gradient(45deg, #3b82f6, #8b5cf6, #ec4899); | |
-webkit-background-clip: text; | |
background-clip: text; | |
color: transparent; | |
} | |
.pulse { | |
animation: pulse 2s infinite; | |
} | |
@keyframes pulse { | |
0% { transform: scale(1); } | |
50% { transform: scale(1.05); } | |
100% { transform: scale(1); } | |
} | |
</style> | |
</head> | |
<body class="bg-gradient-to-br from-blue-50 to-purple-50 min-h-screen flex flex-col items-center justify-center p-4"> | |
<div class="max-w-2xl w-full bg-white rounded-2xl shadow-xl overflow-hidden transition-all duration-500 transform hover:scale-[1.02]"> | |
<div class="bg-gradient-to-r from-blue-500 to-purple-600 p-6 text-white"> | |
<div class="flex items-center space-x-4"> | |
<div class="floating"> | |
<div class="w-16 h-16 rounded-full bg-white/20 flex items-center justify-center"> | |
<i class="fas fa-smile-beam text-3xl text-white"></i> | |
</div> | |
</div> | |
<div> | |
<h1 class="text-3xl font-bold">Hello There!</h1> | |
<p class="opacity-90">How are you today?</p> | |
</div> | |
</div> | |
</div> | |
<div class="p-8"> | |
<div class="mb-8"> | |
<p class="text-gray-700 mb-6 text-lg"> | |
I'm doing <span class="gradient-text font-bold">wonderfully</span> today! | |
The sun is shining (at least in my digital world βοΈ) and I'm excited to create something amazing with you. | |
</p> | |
<div class="bg-blue-50 rounded-lg p-4 mb-6 border-l-4 border-blue-500"> | |
<p class="text-blue-800"> | |
<i class="fas fa-lightbulb text-blue-500 mr-2"></i> | |
Did you know? This greeting is powered by pure HTML, CSS, and JavaScript! | |
</p> | |
</div> | |
</div> | |
<div class="mb-8"> | |
<h2 class="text-xl font-semibold text-gray-800 mb-4">How about you?</h2> | |
<div class="grid grid-cols-2 md:grid-cols-4 gap-3"> | |
<button onclick="selectMood('happy')" class="mood-btn bg-green-100 hover:bg-green-200 border-green-300"> | |
<i class="fas fa-laugh-beam text-green-500"></i> Happy | |
</button> | |
<button onclick="selectMood('good')" class="mood-btn bg-blue-100 hover:bg-blue-200 border-blue-300"> | |
<i class="fas fa-smile text-blue-500"></i> Good | |
</button> | |
<button onclick="selectMood('okay')" class="mood-btn bg-yellow-100 hover:bg-yellow-200 border-yellow-300"> | |
<i class="fas fa-meh text-yellow-500"></i> Okay | |
</button> | |
<button onclick="selectMood('sad')" class="mood-btn bg-purple-100 hover:bg-purple-200 border-purple-300"> | |
<i class="fas fa-sad-tear text-purple-500"></i> Sad | |
</button> | |
</div> | |
</div> | |
<div id="response-area" class="hidden pulse bg-gradient-to-r from-blue-50 to-purple-50 rounded-lg p-4 border border-gray-200"> | |
<div class="flex items-start"> | |
<div class="mr-3 text-blue-500"> | |
<i class="fas fa-comment-dots text-2xl"></i> | |
</div> | |
<div> | |
<p id="response-text" class="text-gray-700"></p> | |
</div> | |
</div> | |
</div> | |
<div class="mt-8 pt-6 border-t border-gray-200 flex justify-between items-center"> | |
<div class="text-sm text-gray-500"> | |
<i class="fas fa-clock mr-1"></i> <span id="current-time"></span> | |
</div> | |
<button onclick="showConfetti()" class="px-4 py-2 bg-gradient-to-r from-pink-500 to-orange-500 text-white rounded-full hover:shadow-lg transition-all flex items-center"> | |
<i class="fas fa-sparkles mr-2"></i> Celebrate! | |
</button> | |
</div> | |
</div> | |
</div> | |
<div id="confetti-container" class="fixed inset-0 pointer-events-none overflow-hidden hidden"></div> | |
<script> | |
// Update current time | |
function updateTime() { | |
const now = new Date(); | |
document.getElementById('current-time').textContent = now.toLocaleTimeString(); | |
} | |
setInterval(updateTime, 1000); | |
updateTime(); | |
// Mood selection | |
function selectMood(mood) { | |
const responseArea = document.getElementById('response-area'); | |
const responseText = document.getElementById('response-text'); | |
const responses = { | |
happy: "That's fantastic! π Your happiness is contagious. Let's make today even better!", | |
good: "Great to hear you're doing well! π Ready to create something amazing together?", | |
okay: "That's okay! Every day has its ups and downs. Let's make this one better together.", | |
sad: "I'm sorry to hear that. π Remember, even cloudy days make the sunshine brighter when it returns." | |
}; | |
responseText.textContent = responses[mood]; | |
responseArea.classList.remove('hidden'); | |
// Add floating animation to response | |
responseArea.classList.add('animate__animated', 'animate__fadeInUp'); | |
} | |
// Confetti effect | |
function showConfetti() { | |
const container = document.getElementById('confetti-container'); | |
container.classList.remove('hidden'); | |
// Create confetti elements | |
for (let i = 0; i < 100; i++) { | |
const confetti = document.createElement('div'); | |
confetti.className = 'absolute w-2 h-2 rounded-full'; | |
// Random colors | |
const colors = ['bg-red-500', 'bg-yellow-500', 'bg-green-500', 'bg-blue-500', 'bg-purple-500', 'bg-pink-500']; | |
const randomColor = colors[Math.floor(Math.random() * colors.length)]; | |
confetti.classList.add(randomColor); | |
// Random position | |
confetti.style.left = Math.random() * 100 + 'vw'; | |
confetti.style.top = '-10px'; | |
// Random animation | |
const animationDuration = Math.random() * 3 + 2; | |
confetti.style.animation = `fall ${animationDuration}s linear forwards`; | |
container.appendChild(confetti); | |
// Remove confetti after animation | |
setTimeout(() => { | |
confetti.remove(); | |
}, animationDuration * 1000); | |
} | |
// Hide container after animation | |
setTimeout(() => { | |
container.classList.add('hidden'); | |
container.innerHTML = ''; | |
}, 3000); | |
// Add CSS for falling animation | |
const style = document.createElement('style'); | |
style.innerHTML = ` | |
@keyframes fall { | |
to { | |
transform: translateY(100vh) rotate(360deg); | |
opacity: 0; | |
} | |
} | |
`; | |
document.head.appendChild(style); | |
} | |
</script> | |
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 𧬠<a href="https://enzostvs-deepsite.hf.space?remix=3rd3y3/wsdomsaura-0" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
</html> |