File size: 2,013 Bytes
25373fa |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
// Global configuration
const config = {
apiBaseUrl: "https://mr-v-api.example.com",
enableTracking: true,
defaultTheme: "dark"
};
// Initialize tooltips
document.addEventListener('DOMContentLoaded', function() {
// Initialize any tooltips or popovers
if (typeof tippy !== 'undefined') {
tippy('[data-tippy-content]', {
arrow: true,
animation: 'scale',
theme: 'red',
});
}
// Track page view
if (config.enableTracking) {
trackPageView();
}
});
// Track page view for analytics
function trackPageView() {
console.log("Tracking page view...");
// In a real implementation, this would send data to analytics service
}
// Handle theme switching
function toggleTheme() {
const html = document.documentElement;
if (html.classList.contains('dark')) {
html.classList.remove('dark');
localStorage.setItem('theme', 'light');
} else {
html.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
}
// Check for saved theme preference
function checkTheme() {
const savedTheme = localStorage.getItem('theme') || config.defaultTheme;
if (savedTheme === 'dark') {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
}
// Initialize theme on page load
checkTheme();
// Utility function for API calls
async function makeApiRequest(endpoint, data = {}) {
try {
const response = await fetch(`${config.apiBaseUrl}${endpoint}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
});
return await response.json();
} catch (error) {
console.error('API request failed:', error);
return { success: false, error: error.message };
}
}
// Export functions for use in other components
export { makeApiRequest, toggleTheme }; |