"use client";

import { usePathname } from "next/navigation";
import { BANNER_HEIGHT, HEADER_HEIGHT } from "@/lib/layoutMetrics";

// Übernimmt aus [locale]/layout.tsx die admin-abhängige Sichtbarkeit von
// Banner/Footer/ScrollToTop sowie das Top-Padding, das Seiteninhalte vor dem
// fixierten Header schützt — als Client-Component, weil [locale]/layout.tsx
// (Server Component) bei client-seitiger Navigation zwischen Geschwister-
// Routen NICHT neu ausgeführt wird (Next.js "Partial Rendering"). Ein dort
// einmalig berechnetes isAdminRoute blieb dadurch beim Klick z. B. auf
// "Admin" im Header auf dem alten Stand hängen, das Padding griff nie (Fund
// vom Nutzer, 21.09.2026 — siehe ausführlicher Kommentar in
// HeaderPositioning.tsx, das dasselbe Problem für die Eckklammern löst).
// usePathname() aus next/navigation liefert dagegen bei jeder Navigation,
// auch client-seitig, den aktuellen Pfad.
//
// banner/footer/scrollToTop kommen als bereits server-gerenderte Elemente
// rein (können selbst Server Components mit DB-/Übersetzungs-Zugriff sein) —
// diese Datei entscheidet nur noch, OB und WO sie erscheinen, nicht WAS sie
// rendern.
export function AdminAwareLayout({
  bannerEnabled,
  banner,
  footer,
  scrollToTop,
  children,
}: {
  bannerEnabled: boolean;
  banner: React.ReactNode;
  footer: React.ReactNode;
  scrollToTop: React.ReactNode;
  children: React.ReactNode;
}) {
  const pathname = usePathname() || "";
  const isAdminRoute = pathname.split("/")[2] === "admin";
  const showBanner = bannerEnabled && !isAdminRoute;

  return (
    <>
      {showBanner && banner}
      <div
        style={{
          paddingTop: `calc(${showBanner ? BANNER_HEIGHT : "0px"} + ${isAdminRoute ? HEADER_HEIGHT : "0px"})`,
        }}
      >
        {children}
      </div>
      {!isAdminRoute && footer}
      {!isAdminRoute && scrollToTop}
    </>
  );
}
