class Router { constructor() { this.routes = { '/login': this.renderLogin, '/register': this.renderRegister, '/dashboard': this.renderDashboard, '/projects': this.renderProjects, '/projects/:id': this.renderProjectDetail, '/buckets/:id': this.renderBucketDetail, '/api-keys': this.renderApiKeys, '/settings': this.renderSettings }; window.addEventListener('hashchange', () => this.handleRoute()); this.handleRoute(); } handleRoute() { const path = window.location.hash.substring(1) || '/dashboard'; const route = Object.keys(this.routes).find(r => { if (r.includes(':')) { const basePath = r.split('/:')[0]; return path.startsWith(basePath); } return r === path; }); if (route) { this.routes[route](); } else { this.renderNotFound(); } } renderLogin() { document.getElementById('auth-container').innerHTML = ` `; } renderRegister() { document.getElementById('auth-container').innerHTML = ` `; } renderDashboard() { document.getElementById('page-content').innerHTML = `

Dashboard

`; } renderProjects() { document.getElementById('page-content').innerHTML = `

Projects

New Project
${store.state.projects.length > 0 ? ` ${store.state.projects.map(project => ` ${project.name} ${project.buckets.length} buckets ${new Date(project.createdAt).toLocaleDateString()} `).join('')} ` : ` `} `; } renderProjectDetail() { const projectId = window.location.hash.split('/')[2]; store.setCurrentProject(projectId); document.getElementById('page-content').innerHTML = `

${store.state.currentProject?.name || 'Project'}

New Bucket
${store.state.currentProject?.buckets.length > 0 ? ` ${store.state.currentProject.buckets.map(bucket => ` ${bucket.name} ${bucket.files.length} files ${bucket.size} ${new Date(bucket.createdAt).toLocaleDateString()} `).join('')} ` : ` `} `; } renderBucketDetail() { const bucketId = window.location.hash.split('/')[2]; store.setCurrentBucket(bucketId); document.getElementById('page-content').innerHTML = `

${store.state.currentBucket?.name || 'Bucket'}

Upload File
${store.state.currentBucket?.files.length > 0 ? ` ${store.state.currentBucket.files.map(file => ` ${file.name} ${file.size} ${file.type} ${new Date(file.uploadedAt).toLocaleDateString()}
`).join('')}
` : ` `} `; } renderApiKeys() { document.getElementById('page-content').innerHTML = `

API Keys

New API Key
${store.state.apiKeys.length > 0 ? ` ${store.state.apiKeys.map(key => ` ${key.name} ${key.key.substring(0, 8)}... ${new Date(key.createdAt).toLocaleDateString()} `).join('')} ` : ` `} `; } renderSettings() { document.getElementById('page-content').innerHTML = `

Settings

Account

Save Changes
`; } renderNotFound() { document.getElementById('page-content').innerHTML = ` `; } } const router = new Router(); export default router;