Files
OpenFlare/openflare-server/web/app/layout.tsx
T
2026-06-06 10:46:40 +08:00

43 lines
1.0 KiB
TypeScript

import type {Metadata} from 'next';
import Script from 'next/script';
import type {ReactNode} from 'react';
import {AppProviders} from '@/components/providers/app-providers';
import {getThemeInitScript} from '@/lib/theme/theme';
import './globals.css';
import {Geist} from 'next/font/google';
import {cn} from '@/lib/utils';
const geist = Geist({ subsets: ['latin'], variable: '--font-sans' });
export const metadata: Metadata = {
title: {
default: 'OpenFlare 控制台',
template: '%s | OpenFlare',
},
description: 'OpenFlare 管理端',
applicationName: 'OpenFlare',
};
interface RootLayoutProps {
children: ReactNode;
}
export default function RootLayout({ children }: RootLayoutProps) {
return (
<html
lang="zh-CN"
suppressHydrationWarning
className={cn('font-sans', geist.variable)}
>
<body>
<Script id="theme-init" strategy="beforeInteractive">
{getThemeInitScript()}
</Script>
<AppProviders>{children}</AppProviders>
</body>
</html>
);
}