// Theme management function initTheme() { const savedTheme = localStorage.getItem('theme') || 'light'; document.documentElement.setAttribute('data-theme', savedTheme); updateThemeToggle(savedTheme); } function toggleTheme() { const currentTheme = document.documentElement.getAttribute('data-theme'); const newTheme = currentTheme === 'light' ? 'dark' : 'light'; document.documentElement.setAttribute('data-theme', newTheme); localStorage.setItem('theme', newTheme); updateThemeToggle(newTheme); } function updateThemeToggle(theme) { const toggle = document.querySelector('.theme-toggle'); if (toggle) { toggle.innerHTML = theme === 'light' ? '' : ''; } // Navigation and routing function initNavigation() { // Show page based on hash function showPage() { const hash = window.location.hash.substring(1) || 'dashboard'; const pages = document.querySelectorAll('.page'); pages.forEach(page => { page.classList.remove('active'); if (page.id === hash + '-page') { page.classList.add('active'); } }); // Update active nav item const navItems = document.querySelectorAll('.nav-item'); navItems.forEach(item => { item.classList.remove('active'); if (item.getAttribute('href') === `#${hash}`) { item.classList.add('active'); } }); // Update header title updateHeaderTitle(hash); } // Update header title based on current page function updateHeaderTitle(page) { const headerTitle = document.querySelector('.header-left h1'); if (headerTitle) { const titles = { 'dashboard': 'Dashboard Overview', 'users': 'User Management', 'settings': 'System Settings', 'reports': 'Analytics Reports' }; headerTitle.textContent = titles[page] || 'Dashboard'; } } // Set initial page showPage(); // Listen for hash changes window.addEventListener('hashchange', showPage); // Handle nav item clicks document.addEventListener('click', (e) => { if (e.target.closest('.nav-item')) { const navItem = e.target.closest('.nav-item'); const href = navItem.getAttribute('href'); if (href && href.startsWith('#')) { window.location.hash = href; } } }); } // Sample data for users function getUsers() { return [ { id: 1, name: 'John Doe', email: 'john@example.com', role: 'Admin', status: 'Active', joinDate: '2024-01-15' }, { id: 2, name: 'Jane Smith', email: 'jane@example.com', role: 'User', status: 'Active', joinDate: '2024-02-20' }, { id: 3, name: 'Mike Johnson', email: 'mike@example.com', role: 'User', status: 'Inactive', joinDate: '2024-01-10' }, { id: 4, name: 'Sarah Wilson', email: 'sarah@example.com', role: 'Moderator', status: 'Active', joinDate: '2024-03-05' }, { id: 5, name: 'Tom Brown', email: 'tom@example.com', role: 'User', status: 'Active', joinDate: '2024-02-28' } ]; } // Populate users table function populateUsersTable() { const users = getUsers(); const tableBody = document.querySelector('#users-table tbody'); if (tableBody) { tableBody.innerHTML = users.map(user => `