Add app shell with left nav; split dashboard into top-level pages

Introduce a Layout shell with a collapsible left sidebar (state persisted
to localStorage) that becomes a hamburger drawer under md. Break the single
Dashboard into routed pages — Overview (summary tiles + node bar), Services,
Scheduled, Programs, Gateway, Mesh — nested under the shared Layout via an
Outlet. Centralize useEventStream in Layout (drop the per-page duplicates),
repoint detail-page back links at their section pages, and remove the now-dead
SectionHeader component / SECTION_HEADERS map (each page owns its header).
This commit is contained in:
2026-06-30 22:52:28 -07:00
parent 49e9e5adcc
commit bc915d23fb
17 changed files with 470 additions and 161 deletions

View File

@@ -31,12 +31,6 @@ export const STACK_LABELS: Record<string, string> = {
remote: "Remote",
}
export const SECTION_HEADERS: Record<string, { title: string; subtitle: string }> = {
service: { title: "Services", subtitle: "Long-running processes" },
scheduled: { title: "Scheduled Jobs", subtitle: "Systemd timers" },
program: { title: "Programs", subtitle: "Software catalog" },
}
export function runnerLabel(runner: string): string {
return RUNNER_LABELS[runner] ?? runner
}