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:
21
app/src/pages/Programs.tsx
Normal file
21
app/src/pages/Programs.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
import { usePrograms } from "@/services/api/hooks"
|
||||
import { ProgramTable } from "@/components/ProgramTable"
|
||||
import { PageHeader } from "@/components/PageHeader"
|
||||
|
||||
export function Programs() {
|
||||
const { data: programs, isLoading } = usePrograms()
|
||||
|
||||
return (
|
||||
<div className="max-w-6xl mx-auto px-6 py-8">
|
||||
<PageHeader title="Programs" subtitle="Software catalog" />
|
||||
|
||||
{isLoading ? (
|
||||
<p className="text-[var(--muted)]">Loading...</p>
|
||||
) : programs && programs.length > 0 ? (
|
||||
<ProgramTable programs={programs} />
|
||||
) : (
|
||||
<p className="text-[var(--muted)]">No programs yet.</p>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user