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;
}
}