import './styles.css'
import { html } from 'dhtml'
import { onUnmount } from 'dhtml/client'
import { Database, type ID } from './db'
import { Bus } from './util/bus'
import { Router } from './util/router'
type BusEvent = 'boards' | `board:${ID}:columns` | `column:${ID}` | `column:${ID}:cards` | `card:${ID}`
export interface PageContext {
app: App
}
export class App {
router = new Router({
routes: {
'/': () => import('./pages/index'),
'/boards/:id': () => import('./pages/board'),
},
context: { app: this } satisfies PageContext,
})
bus = new Bus('app')
db = new Database()
constructor() {
onUnmount(this, async () => {
this.bus.close()
await this.db.close()
})
}
render() {
return html`${this.router}`
}
}