(tab: TabId, project: string | null)
| 24 | |
| 25 | /* Build the canonical URL for a route, preserving the path and hash. */ |
| 26 | function routeUrl(tab: TabId, project: string | null): string { |
| 27 | const params = new URLSearchParams(); |
| 28 | params.set("tab", tab); |
| 29 | if (project) params.set("project", project); |
| 30 | return `${window.location.pathname}?${params.toString()}${window.location.hash}`; |
| 31 | } |
| 32 | |
| 33 | export function App() { |
| 34 | const t = useUiMessages(); |