import type { Viewport } from '@/next' import { ToastHost } from '@langgenius/dify-ui/toast' import { TooltipProvider } from '@langgenius/dify-ui/tooltip' import { dehydrate, HydrationBoundary } from '@tanstack/react-query' import { Provider as JotaiProvider } from 'jotai/react' import { ThemeProvider } from 'next-themes' import { NuqsAdapter } from 'nuqs/adapters/next/app' import { IS_PROD } from '@/config' import { TanStackQueryProvider } from '@/context/query-client' import { getQueryClientServer } from '@/context/query-client-server' import { getDatasetMap } from '@/env' import { SystemFeaturesBootstrapBoundary } from '@/features/system-features/bootstrap-boundary' import { getLocaleOnServer } from '@/i18n-config/server' import { headers } from '@/next/headers' import { serverConsoleQuery } from '@/service/server' import { CloudAnalytics } from './components/base/analytics-consent/cloud-analytics' import { PartnerStackCookieRecorder } from './components/billing/partner-stack/cookie-recorder' import { AgentationLoader } from './components/devtools/agentation-loader' import { ReactScanLoader } from './components/devtools/react-scan/loader' import { I18nServerProvider } from './components/provider/i18n-server' import RoutePrefixHandle from './routePrefixHandle' import './styles/globals.css' import './styles/markdown.css' export const viewport: Viewport = { width: 'device-width', initialScale: 1, viewportFit: 'cover', } export default async function RootLayout({ children }: { children: React.ReactNode }) { const datasetMap = getDatasetMap() const queryClient = getQueryClientServer() const systemFeaturesQuery = serverConsoleQuery.systemFeatures.get.queryOptions() const [locale, requestHeaders] = await Promise.all([ getLocaleOnServer(), headers(), queryClient.prefetchQuery(systemFeaturesQuery), ]) const dehydratedState = dehydrate(queryClient) const nonce = IS_PROD ? (requestHeaders.get('x-nonce') ?? undefined) : undefined return (
{children}
) }