// ── Register all custom elements ────────────────────────────────────────────── import './components/shared/ui-badge.mjs'; import './components/shared/ui-button.mjs'; import './components/shared/ui-spinner.mjs'; import './components/shared/ui-toast.mjs'; import './components/shared/ui-empty.mjs'; import './components/shared/ui-dialog.mjs'; import './components/layout/app-root.mjs'; import './components/layout/app-sidebar.mjs'; import './components/layout/app-topbar.mjs'; import './components/layout/app-mobile-nav.mjs'; import './components/work-orders/wo-list.mjs'; import './components/work-orders/wo-kanban.mjs'; import './components/work-orders/wo-form.mjs'; import './components/work-orders/wo-detail.mjs'; import './components/work-orders/wo-checklist.mjs'; import './components/work-orders/wo-resource-panel.mjs'; import './components/work-orders/wo-photo-panel.mjs'; import './components/work-orders/wo-map.mjs'; import './components/work-orders/wo-accounting.mjs'; import './components/work-orders/wo-timeline.mjs'; import './components/registry/people-list.mjs'; import './components/registry/vehicle-list.mjs'; import './components/registry/equipment-list.mjs'; import './components/registry/material-list.mjs'; import './components/registry/profile-list.mjs'; import { getUser, setToken, clearToken } from './lib/auth.mjs'; import { api } from './lib/api.mjs'; import { router } from './lib/router.mjs'; import { showToast } from './components/shared/ui-toast.mjs'; const root = document.getElementById('root'); window.addEventListener('auth:expired', () => { clearToken(); showLoginPage(); }); window.addEventListener('auth:logout', () => { clearToken(); showLoginPage(); }); const user = getUser(); if (user) { startApp(); } else { showLoginPage(); } // ── Login page ──────────────────────────────────────────────────────────────── function showLoginPage() { root.innerHTML = `
Reports — Phase 3
')) .on('/users', () => appRoot.setPage('User management — Phase 3
')) .on('/settings', () => appRoot.setPage('Settings — Phase 4
')) .start(); // Global navigation events from WO components window.addEventListener('wo:navigate', e => router.navigate(e.detail.path)); window.addEventListener('wo:toast', e => showToast(e.detail.message, e.detail.type)); }