File size: 3,067 Bytes
b25c766 | 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 78 79 | // Shared functionality
document.addEventListener('DOMContentLoaded', () => {
// Initialize tooltips
if (feather) {
feather.replace();
}
// Handle authentication state
const authToken = localStorage.getItem('authToken');
if (authToken) {
document.querySelectorAll('.auth-required').forEach(el => {
el.classList.remove('hidden');
});
document.querySelectorAll('.guest-only').forEach(el => {
el.classList.add('hidden');
});
}
});
// Simulate console functionality for demo
function setupConsole(consoleId) {
const consoleElement = document.getElementById(consoleId);
if (consoleElement) {
consoleElement.innerHTML = `
<div class="console-output"></div>
<input type="text" class="console-input" placeholder="Enter command...">
`;
const output = consoleElement.querySelector('.console-output');
const input = consoleElement.querySelector('.console-input');
input.addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
const command = input.value.trim();
if (command) {
// Simulate command processing
output.innerHTML += `<div>> ${command}</div>`;
// Simulate response (in a real app, this would come from the server)
let response = '';
if (command.startsWith('ban ')) {
response = `Player ${command.substring(4)} has been banned.`;
} else if (command === 'help') {
response = 'Available commands: ban, op, kick, say, help';
} else {
response = 'Unknown command. Type "help" for a list of commands.';
}
output.innerHTML += `<div class="text-emerald-400">${response}</div>`;
input.value = '';
output.scrollTop = output.scrollHeight;
}
}
});
}
}
// Initialize tooltips
function initTooltips() {
const tooltipElements = document.querySelectorAll('[data-tooltip]');
tooltipElements.forEach(el => {
const tooltipText = el.getAttribute('data-tooltip');
const tooltip = document.createElement('div');
tooltip.className = 'absolute z-10 hidden bg-gray-800 text-white px-2 py-1 rounded text-sm whitespace-nowrap';
tooltip.textContent = tooltipText;
el.appendChild(tooltip);
el.addEventListener('mouseenter', () => {
tooltip.classList.remove('hidden');
const rect = el.getBoundingClientRect();
tooltip.style.top = `${rect.top - 30}px`;
tooltip.style.left = `${rect.left + rect.width / 2 - tooltip.offsetWidth / 2}px`;
});
el.addEventListener('mouseleave', () => {
tooltip.classList.add('hidden');
});
});
} |