Files
pulsenode/components/layout/Dashboard.tsx
T

29 lines
963 B
TypeScript
Raw Permalink Normal View History

"use client";
2026-08-17 13:49:55 +02:00
import type { Config } from "@/lib/config/schema";
import { useConfigSubscription } from "@/lib/ws/client";
2026-08-17 13:49:55 +02:00
import { GroupSection } from "./GroupSection";
import { ThemeToggle } from "./ThemeToggle";
import { PulseMark } from "./PulseMark";
2026-08-17 13:49:55 +02:00
export function Dashboard({ config: initialConfig }: { config: Config }) {
const config = useConfigSubscription(initialConfig);
2026-08-17 13:49:55 +02:00
return (
<main className="mx-auto flex max-w-6xl flex-col gap-8 px-6 py-10">
<header className="flex items-center justify-between gap-4">
<div className="flex items-center gap-3">
<PulseMark />
<h1 className="font-display text-lg font-semibold tracking-tight text-fg">
{config.settings.title}
</h1>
</div>
<ThemeToggle />
2026-08-17 13:49:55 +02:00
</header>
{config.groups.map((group, groupIndex) => (
<GroupSection key={group.name} group={group} groupIndex={groupIndex} />
2026-08-17 13:49:55 +02:00
))}
</main>
);
}