Files
ProxLedger/src/app/(dashboard)/layout.tsx
T
florian.wildeandClaude Opus 5 f9a5ad2daa feat(kunden): Kundenverwaltung, Hostzuweisung und Token-Verwaltung (#006)
Kunden und Standorte pflegen, nicht zugeordnete Hosts in einem Schritt zuweisen,
Enrollment- und Host-Tokens verwalten, Audit-Log. Dashboard, Kundenseiten und
globale Suche laufen jetzt auf der Datenbank. 45 Tests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 21:02:44 +02:00

40 lines
1.2 KiB
TypeScript

import { Footer } from "@/components/layout/Footer";
import { Header } from "@/components/layout/Header";
import { Sidebar } from "@/components/layout/Sidebar";
import { kennzahlen, offeneAlerts, suchIndex } from "@/server/queries/hosts";
/**
* Das Dashboard zeigt immer den aktuellen Datenbankstand; beim Bauen darf nichts
* vorgerendert werden (sonst öffnet jeder Build-Worker eigene Datenbankverbindungen).
*/
export const dynamic = "force-dynamic";
const BENUTZER = "Florian";
export default async function DashboardLayout({ children }: { children: React.ReactNode }) {
const [zahlen, alerts, suche] = await Promise.all([kennzahlen(), offeneAlerts(), suchIndex()]);
return (
<div className="app-wrapper">
<Header
alerts={alerts.map((alert) => ({
id: alert.id,
titel: alert.titel,
beschreibung: alert.beschreibung,
schwere: alert.schwere,
hostId: alert.hostId,
}))}
suchEintraege={suche}
benutzer={BENUTZER}
/>
<Sidebar
hostsAnzahl={zahlen.hostsGesamt}
offeneRechnungspunkte={zahlen.offeneRechnungspunkte}
benutzer={BENUTZER}
/>
<main className="app-main">{children}</main>
<Footer />
</div>
);
}