{"path":"src/app/admin/layout.tsx","size":2258,"locked":false,"binary":false,"truncated":false,"content":"import { redirect } from \"next/navigation\";\nimport { createClient } from \"@/lib/supabase/server\";\nimport { AdminHeader } from \"@/components/admin/AdminHeader\";\nimport { supabaseAdmin } from \"@/lib/supabase/admin\";\n\nexport default async function AdminLayout({\n  children,\n}: {\n  children: React.ReactNode;\n}) {\n  const supabase = await createClient();\n\n  if (!supabase) {\n    return (\n      <div className=\"flex h-screen items-center justify-center bg-[#fafafa]\">\n        <div className=\"text-center p-8 bg-white border rounded-sm shadow-sm max-w-md\">\n          <h2 className=\"text-xl font-serif font-semibold\">Admin panel unavailable</h2>\n          <p className=\"text-sm text-neutral-500 mt-2\">\n            Follow the <strong>SETUP.md</strong> file in your repository to connect Supabase.\n          </p>\n          <p className=\"text-sm text-neutral-500 mt-1\">\n            After connecting, redeploy and sign up – the first user becomes the admin.\n          </p>\n        </div>\n      </div>\n    );\n  }\n\n  const {\n    data: { user },\n  } = await supabase.auth.getUser();\n\n  if (!user) redirect(\"/login\");\n\n  if (supabaseAdmin) {\n    const { data: adminRecord } = await supabaseAdmin\n      .from(\"admin_users\")\n      .select(\"user_id\")\n      .eq(\"user_id\", user.id)\n      .maybeSingle();\n\n    if (!adminRecord) {\n      return (\n        <div className=\"flex h-screen items-center justify-center bg-[#fafafa]\">\n          <div className=\"text-center p-8 bg-white border rounded-sm shadow-sm max-w-md\">\n            <h2 className=\"text-xl font-serif font-semibold\">Access Denied</h2>\n            <p className=\"text-sm text-neutral-500 mt-2\">\n              You do not have permission to access the admin panel.\n            </p>\n            <a\n              href=\"/\"\n              className=\"inline-block mt-4 bg-black text-white text-sm uppercase tracking-wider px-6 py-2.5 rounded-sm hover:bg-neutral-800 transition\"\n            >\n              Go to Homepage\n            </a>\n          </div>\n        </div>\n      );\n    }\n  }\n\n  return (\n    <div className=\"min-h-screen bg-[#fafafa] font-sans antialiased text-[#111]\">\n      <AdminHeader userEmail={user.email} />\n      <main className=\"mx-auto max-w-7xl px-4 md:px-6 py-10\">{children}</main>\n    </div>\n  );\n}\n"}