// Sidebar Toggle Functionality const sidebar = document.getElementById('sidebar'); const sidebarToggle = document.getElementById('sidebarToggle'); const mobileMenuBtn = document.getElementById('mobileMenuBtn'); let isSidebarCollapsed = false; function toggleSidebar() { isSidebarCollapsed = !isSidebarCollapsed; if (window.innerWidth >= 1024) { // Desktop behavior if (isSidebarCollapsed) { sidebar.classList.add('collapsed'); sidebar.style.width = '5rem'; } else { sidebar.classList.remove('collapsed'); sidebar.style.width = '16rem'; } } else { // Mobile behavior - slide in/out sidebar.classList.toggle('open'); // Create or toggle overlay let overlay = document.querySelector('.sidebar-overlay'); if (!overlay) { overlay = document.createElement('div'); overlay.className = 'sidebar-overlay'; document.body.appendChild(overlay); overlay.addEventListener('click', toggleSidebar); } overlay.classList.toggle('open'); } // Refresh Lucide icons after transition setTimeout(() => { lucide.createIcons(); }, 300); } sidebarToggle.addEventListener('click', toggleSidebar); mobileMenuBtn.addEventListener('click', toggleSidebar); // Patient Type Toggle const existingPatientBtn = document.getElementById('existingPatientBtn'); const newPatientBtn = document.getElementById('newPatientBtn'); const existingPatientForm = document.getElementById('existingPatientForm'); const newPatientForm = document.getElementById('newPatientForm'); existingPatientBtn.addEventListener('click', () => { existingPatientBtn.classList.add('bg-white', 'text-slate-800', 'shadow-sm'); existingPatientBtn.classList.remove('text-slate-600'); newPatientBtn.classList.remove('bg-white', 'text-slate-800', 'shadow-sm'); newPatientBtn.classList.add('text-slate-600'); existingPatientForm.classList.remove('hidden'); newPatientForm.classList.add('hidden'); }); newPatientBtn.addEventListener('click', () => { newPatientBtn.classList.add('bg-white', 'text-slate-800', 'shadow-sm'); newPatientBtn.classList.remove('text-slate-600'); existingPatientBtn.classList.remove('bg-white', 'text-slate-800', 'shadow-sm'); existingPatientBtn.classList.add('text-slate-600'); newPatientForm.classList.remove('hidden'); existingPatientForm.classList.add('hidden'); }); // Time Slot Generation const timeSlotsContainer = document.getElementById('timeSlotsContainer'); const appointmentDate = document.getElementById('appointmentDate'); const selectedDateDisplay = document.getElementById('selectedDateDisplay'); const confirmBtn = document.getElementById('confirmAppointmentBtn'); // Generate time slots (9 AM to 5 PM, 30 min intervals) function generateTimeSlots() { const slots = []; const startHour = 9; const endHour = 17; for (let hour = startHour; hour < endHour; hour++) { for (let min of [0, 30]) { const time = `${hour.toString().padStart(2, '0')}:${min.toString().padStart(2, '0')}`; // Randomly make some slots unavailable for realism const isAvailable = Math.random() > 0.3; slots.push({ time, isAvailable }); } } return slots; } function renderTimeSlots(date) { if (!date) { timeSlotsContainer.innerHTML = `
Please select a date to view available times