import { Suspense } from 'react' import { NextIntlClientProvider } from 'next-intl' import { getMessages } from 'next-intl/server' import { SuperAdminGuard } from "@nextsparkjs/core/components/app/guards/SuperAdminGuard"; import { DashboardProviders } from "@nextsparkjs/core/providers/DashboardProviders"; import { SuperadminSidebar } from "@nextsparkjs/core/components/superadmin/layouts/SuperadminSidebar"; import { Loader2 } from 'lucide-react' import { Metadata } from "next"; import { getTemplateOrDefault, getMetadataOrDefault } from '@nextsparkjs/core/lib/template-resolver' import { getPluginNavItems } from '@nextsparkjs/registries/plugin-registry' const defaultMetadata: Metadata = { title: "Super Admin | Super Admin Panel", description: "Super administrator control panel", robots: "noindex, nofollow", // Prevent search engine indexing }; export const metadata: Metadata = getMetadataOrDefault( 'app/superadmin/layout.tsx', defaultMetadata ) interface SuperadminLayoutProps { children: React.ReactNode; } /** * Inner async component that loads translations server-side. * Wrapped in Suspense so PPR doesn't fail during prerender. * * Loads ALL translations (core + theme + entity + plugin) via getMessages() * so plugin settings pages can use useTranslations() for their namespaces. */ async function SuperadminWithTranslations({ children }: SuperadminLayoutProps) { const messages = await getMessages() const pluginNavItems = getPluginNavItems('superadmin') return ( {/* Sidebar - Hidden on mobile, visible on desktop */} {/* Main content area */} {/* Mobile header for Superadmin - Only visible on mobile */} Super Admin Super Admin Area {/* Content area with scrolling */} {children} ) } /** * Superadmin Layout * * Protected layout for superadmin-only sections with dedicated sidebar navigation. * Loads ALL translations (core + theme + entity + plugin) server-side via * NextIntlClientProvider so plugin settings pages can use useTranslations(). */ function SuperadminLayout({ children }: SuperadminLayoutProps) { return ( }> {children} ) } export default getTemplateOrDefault('app/superadmin/layout.tsx', SuperadminLayout)
Super Admin Area