SammonsG's picture
Please build me a simple and extremely user-friendly website for checking-in using the system time.
f33dec1 verified
Raw History Blame Contribute Delete
8.55 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tech Support Check-In</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/lucide@latest"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
body { font-family: 'Inter', sans-serif; }
.tech-card { transition: all 0.2s ease; }
.tech-card:hover { transform: translateY(-2px); }
.tech-card:active { transform: translateY(0); }
</style>
</head>
<body class="bg-gradient-to-br from-blue-50 to-indigo-100 min-h-screen flex items-center justify-center p-4">
<div class="max-w-md w-full bg-white rounded-2xl shadow-xl overflow-hidden">
<!-- Header -->
<div class="bg-indigo-600 p-6 text-white text-center">
<i data-lucide="headset" class="w-12 h-12 mx-auto mb-2"></i>
<h1 class="text-2xl font-bold">Tech Support</h1>
<p class="text-indigo-100 text-sm mt-1">Check-in for assistance</p>
</div>
<!-- Check-in Form -->
<div class="p-6 space-y-6">
<!-- Name Input -->
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Your Name (Optional)</label>
<input type="text" id="userName" placeholder="Enter your name"
class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-500 focus:border-transparent outline-none transition">
</div>
<!-- Technician Selection -->
<div>
<label class="block text-sm font-medium text-gray-700 mb-3">Select Support Agent</label>
<div class="grid grid-cols-2 gap-3">
<button onclick="checkIn('Gary')" class="tech-card bg-blue-50 hover:bg-blue-100 border-2 border-blue-200 rounded-xl p-4 text-center group">
<div class="w-12 h-12 bg-blue-500 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-600 transition">
<span class="text-white font-bold text-lg">G</span>
</div>
<span class="font-semibold text-blue-900">Gary</span>
</button>
<button onclick="checkIn('Will')" class="tech-card bg-green-50 hover:bg-green-100 border-2 border-green-200 rounded-xl p-4 text-center group">
<div class="w-12 h-12 bg-green-500 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-green-600 transition">
<span class="text-white font-bold text-lg">W</span>
</div>
<span class="font-semibold text-green-900">Will</span>
</button>
<button onclick="checkIn('Tim')" class="tech-card bg-purple-50 hover:bg-purple-100 border-2 border-purple-200 rounded-xl p-4 text-center group">
<div class="w-12 h-12 bg-purple-500 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-purple-600 transition">
<span class="text-white font-bold text-lg">T</span>
</div>
<span class="font-semibold text-purple-900">Tim</span>
</button>
<button onclick="checkIn('Anyone')" class="tech-card bg-orange-50 hover:bg-orange-100 border-2 border-orange-200 rounded-xl p-4 text-center group">
<div class="w-12 h-12 bg-orange-500 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-orange-600 transition">
<i data-lucide="users" class="w-6 h-6 text-white"></i>
</div>
<span class="font-semibold text-orange-900">Anyone</span>
</button>
</div>
</div>
<!-- Current Time Display -->
<div class="text-center p-4 bg-gray-50 rounded-lg border border-gray-200">
<p class="text-xs text-gray-500 uppercase tracking-wide mb-1">Current System Time</p>
<p id="clock" class="text-2xl font-mono font-bold text-gray-800">--:--:--</p>
<p id="date" class="text-sm text-gray-600 mt-1">Loading...</p>
</div>
</div>
<!-- Footer -->
<div class="bg-gray-50 px-6 py-4 text-center border-t">
<a href="admin.html" class="text-sm text-indigo-600 hover:text-indigo-800 font-medium flex items-center justify-center gap-1">
<i data-lucide="lock" class="w-4 h-4"></i>
Admin Access
</a>
</div>
</div>
<!-- Success Modal -->
<div id="successModal" class="hidden fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50">
<div class="bg-white rounded-2xl p-8 max-w-sm w-full text-center transform scale-100 transition-transform">
<div class="w-16 h-16 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-4">
<i data-lucide="check" class="w-8 h-8 text-green-600"></i>
</div>
<h2 class="text-2xl font-bold text-gray-800 mb-2">You're Checked In!</h2>
<p class="text-gray-600 mb-4">Your request has been added to the queue.</p>
<div class="bg-gray-100 rounded-lg p-3 mb-6 text-sm">
<p class="font-semibold text-gray-700">Queue Position: <span id="queuePosition" class="text-indigo-600 text-lg">--</span></p>
<p class="text-gray-500 mt-1" id="waitTime">Estimated wait: Calculating...</p>
</div>
<button onclick="closeModal()" class="w-full bg-indigo-600 text-white py-3 rounded-lg font-semibold hover:bg-indigo-700 transition">
Done
</button>
</div>
</div>
<script>
// Initialize Lucide icons
lucide.createIcons();
// Update clock every second
function updateClock() {
const now = new Date();
document.getElementById('clock').textContent = now.toLocaleTimeString('en-US', {
hour12: false,
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});
document.getElementById('date').textContent = now.toLocaleDateString('en-US', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
});
}
setInterval(updateClock, 1000);
updateClock();
// Check-in function
function checkIn(technician) {
const name = document.getElementById('userName').value.trim() || 'Anonymous';
const now = new Date();
const ticket = {
id: Date.now(),
name: name,
technician: technician,
timestamp: now.toISOString(),
status: 'waiting',
checkInTime: now.toLocaleTimeString('en-US', { hour12: true, hour: '2-digit', minute: '2-digit', second: '2-digit' })
};
// Save to localStorage
let queue = JSON.parse(localStorage.getItem('techSupportQueue') || '[]');
queue.push(ticket);
localStorage.setItem('techSupportQueue', JSON.stringify(queue));
// Show position in queue
const waitingCount = queue.filter(t => t.status === 'waiting').length;
document.getElementById('queuePosition').textContent = waitingCount;
document.getElementById('waitTime').textContent = `Checked in at ${ticket.checkInTime}`;
// Show success modal
document.getElementById('successModal').classList.remove('hidden');
// Clear name input
document.getElementById('userName').value = '';
}
function closeModal() {
document.getElementById('successModal').classList.add('hidden');
}
// Close modal on outside click
document.getElementById('successModal').addEventListener('click', function(e) {
if (e.target === this) closeModal();
});
</script>
<script src="https://deepsite.hf.co/deepsite-badge.js"></script>
</body>
</html>