import Link from "next/link"; import { LogoutButton } from "@/components/auth-forms"; import { Icon } from "@/components/icons"; import { ThemeToggle } from "@/components/theme-toggle"; import { actorLabel, getActor, isAuthEnabled } from "@/lib/auth/actor"; import { can } from "@/lib/auth/policy"; import { getBranding } from "@/lib/branding"; import { APP_VERSION } from "@/lib/changelog"; // Der Kopfbereich hängt von der Anmeldung ab und darf nicht vorgerendert // werden. export const dynamic = "force-dynamic"; const NAV_LINK = "rounded-lg px-3 py-2 text-slate-600 transition-colors hover:bg-slate-100 hover:text-slate-900"; /** * Rahmen der eigentlichen Anwendung: Kopfzeile mit Navigation, Inhalt, * Fußzeile. Die öffentlichen Landingpages liegen bewusst außerhalb dieser * Gruppe und bekommen davon nichts ab. */ export default async function AppLayout({ children }: LayoutProps<"/">) { const actor = await getActor(); const signedIn = actor.kind !== "anonymous"; const showAdmin = can(actor, "instance:manage"); const branding = await getBranding(); return (