import { auth } from './api.js';
import { icons } from './icons.js';
import { route, navigate, startRouter } from './router.js';
import { renderDashboard } from './pages/dashboard.js';
import { renderLogin } from './pages/login.js';
import { renderServiceDetail } from './pages/service-detail.js';
import { renderLogs } from './pages/logs.js';
import { renderMonitoring } from './pages/monitoring.js';
import { renderSettings } from './pages/settings.js';
let currentUser = null;
function renderSidebar(user) {
return `
`;
}
function setupSidebarEvents() {
document.querySelectorAll('.sidebar-link[data-path]').forEach(el => {
el.onclick = () => navigate(el.dataset.path);
});
const logoutBtn = document.getElementById('logout-btn');
if (logoutBtn) logoutBtn.onclick = async () => { await auth.logout(); location.reload(); };
}
async function init() {
const app = document.getElementById('app');
// Check auth
try {
const status = await auth.status();
if (status.setupRequired) {
renderLogin(app, true, onLogin);
return;
}
const data = await auth.me();
currentUser = data.user;
} catch {
renderLogin(app, false, onLogin);
return;
}
// Render app layout
app.innerHTML = `
${renderSidebar(currentUser)}
`;
setupSidebarEvents();
// Setup routes
const content = document.getElementById('page-content');
route('/', (c) => renderDashboard(c));
route('/services/:id', (c, p) => renderServiceDetail(c, p.id));
route('/logs', (c) => renderLogs(c));
route('/monitoring', (c) => renderMonitoring(c));
route('/settings', (c) => renderSettings(c));
startRouter(content);
}
function onLogin(user) {
currentUser = user;
init();
}
document.addEventListener('DOMContentLoaded', init);