document.addEventListener('DOMContentLoaded', function() { // Initialize tooltips const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl); }); // Dark mode toggle functionality const darkModeToggle = document.getElementById('darkModeToggle'); if (darkModeToggle) { darkModeToggle.addEventListener('click', function() { document.documentElement.classList.toggle('dark'); localStorage.setItem('darkMode', document.documentElement.classList.contains('dark')); }); } // Check for saved dark mode preference if (localStorage.getItem('darkMode') === 'true') { document.documentElement.classList.add('dark'); } // Mobile menu toggle const mobileMenuButton = document.getElementById('mobileMenuButton'); const mobileMenu = document.getElementById('mobileMenu'); if (mobileMenuButton && mobileMenu) { mobileMenuButton.addEventListener('click', function() { mobileMenu.classList.toggle('hidden'); }); } }); // Sample function to simulate API call async function connectRepository() { try { // Simulate API call await new Promise(resolve => setTimeout(resolve, 1000)); return { success: true, message: 'Repository connected successfully' }; } catch (error) { return { success: false, message: 'Failed to connect repository' }; } } // Event listeners for interactive elements document.querySelectorAll('[data-action="connect-repo"]').forEach(button => { button.addEventListener('click', async function() { const spinner = document.createElement('span'); spinner.className = 'animate-spin mr-2'; spinner.innerHTML = ''; this.prepend(spinner); feather.replace(); this.disabled = true; const result = await connectRepository(); spinner.remove(); this.disabled = false; if (result.success) { alert('Repository connected successfully!'); } else { alert('Error: ' + result.message); } }); });