// VerifyMC Medical Admin - Notifications Page JavaScript document.addEventListener('DOMContentLoaded', function() { // Initialize Lucide icons lucide.createIcons(); // Mobile menu toggle const mobileMenuBtn = document.getElementById('mobile-menu-btn'); const sidebar = document.getElementById('sidebar'); const sidebarOverlay = document.getElementById('sidebar-overlay'); function toggleMobileMenu() { const isOpen = !sidebar.classList.contains('-translate-x-full'); if (isOpen) { sidebar.classList.add('-translate-x-full'); sidebarOverlay.classList.add('hidden'); document.body.style.overflow = ''; } else { sidebar.classList.remove('-translate-x-full'); sidebarOverlay.classList.remove('hidden'); document.body.style.overflow = 'hidden'; } } mobileMenuBtn?.addEventListener('click', toggleMobileMenu); sidebarOverlay?.addEventListener('click', toggleMobileMenu); // User dropdown toggle const userDropdownBtn = document.getElementById('user-dropdown-btn'); const userDropdown = document.getElementById('user-dropdown'); let dropdownOpen = false; userDropdownBtn?.addEventListener('click', function(e) { e.stopPropagation(); dropdownOpen = !dropdownOpen; if (dropdownOpen) { userDropdown.classList.remove('hidden'); } else { userDropdown.classList.add('hidden'); } }); // Close dropdown when clicking outside document.addEventListener('click', function() { if (dropdownOpen) { dropdownOpen = false; userDropdown?.classList.add('hidden'); } }); // Tab switching functionality const tabBtns = document.querySelectorAll('.tab-btn'); const tabContents = document.querySelectorAll('.tab-content'); tabBtns.forEach(btn => { btn.addEventListener('click', function() { const tabName = this.getAttribute('data-tab'); // Update button styles tabBtns.forEach(b => { b.classList.remove('bg-primary', 'text-white', 'shadow-sm'); b.classList.add('text-gray-600', 'hover:bg-gray-50'); }); this.classList.remove('text-gray-600', 'hover:bg-gray-50'); this.classList.add('bg-primary', 'text-white', 'shadow-sm'); // Show corresponding content tabContents.forEach(content => { content.classList.add('hidden'); }); const activeContent = document.getElementById(`tab-${tabName}`); if (activeContent) { activeContent.classList.remove('hidden'); } }); }); // Toggle switches functionality const toggleSwitches = document.querySelectorAll('.toggle-switch'); toggleSwitches.forEach(toggle => { toggle.addEventListener('click', function() { const isEnabled = this.classList.contains('bg-primary'); const span = this.querySelector('span'); if (isEnabled) { // Disable this.classList.remove('bg-primary'); this.classList.add('bg-gray-200'); span.classList.remove('translate-x-6'); span.classList.add('translate-x-1'); } else { // Enable this.classList.remove('bg-gray-200'); this.classList.add('bg-primary'); span.classList.remove('translate-x-1'); span.classList.add('translate-x-6'); } }); }); // Save Changes button interaction const saveBtn = document.querySelector('button:has([data-lucide="save"])'); const cancelBtn = document.querySelector('button:contains("Cancel")') || Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Cancel')); saveBtn?.addEventListener('click', function() { // Show loading state const originalContent = this.innerHTML; this.disabled = true; this.innerHTML = ' Saving...'; lucide.createIcons(); // Simulate API call setTimeout(() => { this.innerHTML = ' Saved!'; lucide.createIcons(); setTimeout(() => { this.innerHTML = originalContent; this.disabled = false; lucide.createIcons(); }, 1500); }, 1000); }); // Cancel button interaction if (cancelBtn) { cancelBtn.addEventListener('click', function() { // Reset all toggles to default state (all enabled) toggleSwitches.forEach(toggle => { toggle.classList.add('bg-primary'); toggle.classList.remove('bg-gray-200'); const span = toggle.querySelector('span'); span.classList.add('translate-x-6'); span.classList.remove('translate-x-1'); }); }); } // Search functionality (basic implementation) const searchInput = document.querySelector('input[type="text"]'); searchInput?.addEventListener('keypress', function(e) { if (e.key === 'Enter') { console.log('Searching for:', this.value); // Implement search logic here } }); // Handle window resize to reset mobile menu state window.addEventListener('resize', function() { if (window.innerWidth >= 1024) { sidebar.classList.remove('-translate-x-full'); sidebarOverlay.classList.add('hidden'); document.body.style.overflow = ''; } else { sidebar.classList.add('-translate-x-full'); } }); // Keyboard navigation for tabs document.addEventListener('keydown', function(e) { if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') { const activeTab = document.querySelector('.tab-btn.bg-primary'); const tabs = Array.from(tabBtns); const currentIndex = tabs.indexOf(activeTab); let newIndex; if (e.key === 'ArrowLeft') { newIndex = currentIndex > 0 ? currentIndex - 1 : tabs.length - 1; } else { newIndex = currentIndex < tabs.length - 1 ? currentIndex + 1 : 0; } tabs[newIndex].click(); tabs[newIndex].focus(); } }); // Notification badge animation const notificationBell = document.querySelector('[data-lucide="bell"]')?.parentElement; if (notificationBell) { notificationBell.addEventListener('click', function() { const badge = this.querySelector('span'); if (badge) { badge.style.animation = 'pulse 0.5s ease-in-out'; setTimeout(() => { badge.style.animation = ''; }, 500); } }); } }); // Add pulse animation keyframes dynamically const style = document.createElement('style'); style.textContent = ` @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.2); } } `; document.head.appendChild(style);