import { DashboardSidebar } from "@/components/layout/dashboard-sidebar";
import { PaidSupportProvider } from "@/components/dashboard/paid-support-context";
import { SiteDataProvider } from "@/components/layout/site-data-context";
import { SiteHeader } from "@/components/layout/site-header";
import {
  getFooterNavigation,
  getMainNavigation,
  getSiteSettings,
} from "@/lib/cms/server";
import { getSession } from "@/lib/auth/session";
import { hasPaidSupportAccess } from "@/lib/payments/support-eligibility";

export default async function DashboardLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  const [session, settings, mainNav, footerNav] = await Promise.all([
    getSession(),
    getSiteSettings(),
    getMainNavigation(),
    getFooterNavigation(),
  ]);
  const paidSupport =
    session?.email != null ? await hasPaidSupportAccess(session.email) : false;

  return (
    <SiteDataProvider data={{ settings, mainNav, footerNav }}>
    <PaidSupportProvider eligible={paidSupport}>
      <div className="bg-background flex min-h-screen flex-col">
        <SiteHeader />
        <div className="flex min-h-0 flex-1 flex-col lg:flex-row">
          <DashboardSidebar
            userName={session?.name ?? "Member"}
            userEmail={session?.email ?? ""}
          />
          <div className="flex min-w-0 flex-1 flex-col">
            <main className="flex-1 overflow-x-hidden px-4 py-8 sm:px-6 sm:py-10 lg:px-10 lg:py-12">
              {children}
            </main>
          </div>
        </div>
      </div>
    </PaidSupportProvider>
    </SiteDataProvider>
  );
}
