import type { CSSProperties, ReactNode } from "react";
import { SiteHeader } from "@/components/site/SiteHeader";
import { SiteFooter } from "@/components/site/SiteFooter";
import { NeuralBackground } from "@/components/site/NeuralBackground";
import { PageTransition } from "@/components/site/PageTransition";
import { prisma } from "@/lib/prisma";
import { isSetupComplete } from "@/lib/setup";
import { redirect } from "next/navigation";

export const dynamic = "force-dynamic";

export default async function PublicLayout({ children }: { children: ReactNode }) {
  if (!(await isSetupComplete())) {
    redirect("/setup");
  }

  const setting = await prisma.siteSetting.findUnique({ where: { key: "site" } });
  const neuralColors: [string, string, string] = [
    setting?.neuralColorA ?? "#00ffff",
    setting?.neuralColorB ?? "#0088ff",
    setting?.neuralColorC ?? "#ffd700"
  ];

  return (
    <div className="public-site">
      <div
        aria-hidden="true"
        className="neural-bg-static"
        style={
          {
            "--nf-a": neuralColors[0],
            "--nf-b": neuralColors[1],
            "--nf-c": neuralColors[2]
          } as CSSProperties
        }
      />
      <NeuralBackground colors={neuralColors} />
      <PageTransition />
      <SiteHeader />
      {children}
      <SiteFooter />
    </div>
  );
}
