Download index.html from SammonsG/tech-support-queue-manager-lpvnm: direct link, hf CLI and curl.
- Browser
- Download file 8.55 kB
-
https://huggingface.co/spaces/SammonsG/tech-support-queue-manager-lpvnm/resolve/main/index.html
- Command line
-
hf download hf://spaces/SammonsG/tech-support-queue-manager-lpvnm/index.html
-
curl -L -o index.html https://huggingface.co/spaces/SammonsG/tech-support-queue-manager-lpvnm/resolve/main/index.html
8.55 kB
| <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> |