const router = createRouter([
'/query',
'/users/:id',
])
const Header = () =>
html`
<header>
<a href="#/">Home</a>
<a href="#/user/1">User One</a>
<a href="#/query?foo=bar&hello=world">Some page with query parameters</a>
</header>
`
const Home = () => html`<h1>Home</h1>`
const User = (id: string) => html`<h1>User ${id}`
const Query = (query: { [key: string]: string }) =>
html`
<h1>Some page with query parameters</h1>
<table>
<tr><th>KEY</th><th>VALUE</th></tr>
${
Object.keys(query).map(key => html`<tr><td>${key}</td><td>${object[key]}</td></tr>`)
}
</table>
`
const Page = ({ params, query, route }: RouteInfo) => {
switch(route) {
case '/query': return Query(query)
case '/users/:id': return User(params.id)
default: return Home()
}
}
const App = (routeInfo: RouteInfo) =>
html`
${Header()}
${Page(routeInfo)}
`
router.subscribe(routeInfo => {
render(App(routeInfo), document.body)
})