import "../css/app.css"; // EuchreCamp Application JavaScript // Initialize the application document.addEventListener('DOMContentLoaded', () => { initBottomNav(); initOfflineSupport(); initThemePreference(); }); // Bottom Navigation Active State function initBottomNav() { const currentPath = window.location.pathname; const navItems = document.querySelectorAll('.bottom-nav-item'); navItems.forEach(item => { if (item.getAttribute('href') === currentPath) { item.classList.add('active'); } }); } // Offline Support with Local Storage function initOfflineSupport() { // Cache recent data for offline access if ('caches' in window) { // Listen for online/offline events window.addEventListener('online', handleOnline); window.addEventListener('offline', handleOffline); // Check initial state if (!navigator.onLine) { handleOffline(); } } } function handleOnline() { console.log('App is online'); // Clear any offline indicators document.body.classList.remove('offline'); // Sync any pending changes syncPendingChanges(); } function handleOffline() { console.log('App is offline'); // Add offline indicator to body document.body.classList.add('offline'); // Show offline notification showOfflineNotification(); } function showOfflineNotification() { // Create or update offline notification let notification = document.getElementById('offline-notification'); if (!notification) { notification = document.createElement('div'); notification.id = 'offline-notification'; notification.className = 'offline-notification'; notification.innerHTML = ` Offline Mode - Some features may be limited `; document.body.appendChild(notification); } } function syncPendingChanges() { // Implement sync logic here // This would sync any locally stored changes to the server console.log('Syncing pending changes...'); } // Theme Preference function initThemePreference() { // Check for saved theme preference const savedTheme = localStorage.getItem('euchrecamp-theme'); if (savedTheme) { document.documentElement.setAttribute('data-theme', savedTheme); } } // Utility Functions function saveToLocalStorage(key, data) { try { localStorage.setItem(`euchrecamp-${key}`, JSON.stringify(data)); return true; } catch (e) { console.error('Error saving to localStorage:', e); return false; } } function getFromLocalStorage(key) { try { const data = localStorage.getItem(`euchrecamp-${key}`); return data ? JSON.parse(data) : null; } catch (e) { console.error('Error reading from localStorage:', e); return null; } } function clearLocalStorage(key) { try { localStorage.removeItem(`euchrecamp-${key}`); return true; } catch (e) { console.error('Error clearing localStorage:', e); return false; } }