/** Rotas por hash (#/conversa): o servidor só precisa entregar index.html em "/". */ export type Rota = 'ao-vivo' | 'conversa' | 'reacoes' | 'movimento' | 'ajustes'; export const ROTAS: { id: Rota; titulo: string; atalho: string }[] = [ { id: 'ao-vivo', titulo: 'Ao vivo', atalho: 'g v' }, { id: 'conversa', titulo: 'Conversa', atalho: 'g c' }, { id: 'reacoes', titulo: 'Reações', atalho: 'g r' }, { id: 'movimento', titulo: 'Movimento', atalho: 'g m' }, { id: 'ajustes', titulo: 'Ajustes', atalho: 'g a' }, ]; function lerHash(): Rota { const id = location.hash.replace(/^#\/?/, '').split('?')[0] as Rota; return ROTAS.some((r) => r.id === id) ? id : 'ao-vivo'; } class Navegacao { atual = $state(lerHash()); ir(rota: Rota) { location.hash = '/' + rota; } } export const nav = new Navegacao(); addEventListener('hashchange', () => (nav.atual = lerHash()));