Spaces:
Running
Running
File size: 2,639 Bytes
1a2ef0b 01072a5 1a2ef0b 01072a5 b06e060 01072a5 b06e060 01072a5 b06e060 1a2ef0b 01072a5 1a2ef0b |
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 75 76 77 |
// Initialize tooltips
document.addEventListener('DOMContentLoaded', function() {
checkSecurityHeaders();
// This would be replaced with actual tooltip initialization
console.log('Tooltips initialized');
// Simulate loading data
setTimeout(() => {
const loadingElements = document.querySelectorAll('.loading');
loadingElements.forEach(el => {
el.classList.remove('loading');
});
}, 1500);
});
// Security check
function checkSecurityHeaders() {
const securityHeaders = {
'Content-Security-Policy': document.querySelector('meta[http-equiv="Content-Security-Policy"]') !== null,
'X-Frame-Options': document.querySelector('meta[http-equiv="X-Frame-Options"]') !== null,
'X-Content-Type-Options': document.querySelector('meta[http-equiv="X-Content-Type-Options"]') !== null,
'Strict-Transport-Security': document.querySelector('meta[http-equiv="Strict-Transport-Security"]') !== null
};
if (!Object.values(securityHeaders).every(Boolean)) {
console.warn('Some security headers are missing');
}
}
// Toggle mobile menu
function toggleMobileMenu() {
const sidebar = document.querySelector('custom-sidebar');
const body = document.body;
if (sidebar) {
sidebar.isMobileOpen = !sidebar.isMobileOpen;
sidebar.render();
if (sidebar.isMobileOpen) {
body.classList.add('menu-open');
body.style.overflow = 'hidden';
} else {
body.classList.remove('menu-open');
body.style.overflow = '';
}
}
}
// Viewport meta tag for mobile
function setupViewport() {
const viewportMeta = document.createElement('meta');
viewportMeta.name = 'viewport';
viewportMeta.content = 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no';
document.head.appendChild(viewportMeta);
}
// Initialize mobile setup
document.addEventListener('DOMContentLoaded', function() {
setupViewport();
checkSecurityHeaders();
// Simulate loading data
setTimeout(() => {
const loadingElements = document.querySelectorAll('.loading');
loadingElements.forEach(el => {
el.classList.remove('loading');
});
}, 1500);
});
// Dark mode toggle
function toggleDarkMode() {
document.documentElement.classList.toggle('dark');
localStorage.setItem('darkMode', document.documentElement.classList.contains('dark'));
}
// Check for saved dark mode preference
if (localStorage.getItem('darkMode') === 'false') {
document.documentElement.classList.remove('dark');
} |