ARTEX — AI 自主渗透测试系统(Go 后端 + Next.js 前端,单二进制内嵌)。 Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import type { ReactNode } from "react";
|
|
|
|
import type { Metadata } from "next";
|
|
|
|
import { Toaster } from "@/components/ui/sonner";
|
|
import { TooltipProvider } from "@/components/ui/tooltip";
|
|
import { APP_CONFIG } from "@/config/app-config";
|
|
import { fontVars } from "@/lib/fonts/registry";
|
|
import { PREFERENCE_DEFAULTS } from "@/lib/preferences/preferences-config";
|
|
import { ThemeBootScript } from "@/scripts/theme-boot";
|
|
import { PreferencesStoreProvider } from "@/stores/preferences/preferences-provider";
|
|
|
|
import "./globals.css";
|
|
|
|
export const metadata: Metadata = {
|
|
title: APP_CONFIG.meta.title,
|
|
description: APP_CONFIG.meta.description,
|
|
};
|
|
|
|
export default function RootLayout({ children }: Readonly<{ children: ReactNode }>) {
|
|
const { theme_mode, theme_preset, content_layout, navbar_style, sidebar_variant, sidebar_collapsible, font } =
|
|
PREFERENCE_DEFAULTS;
|
|
return (
|
|
<html
|
|
lang="en"
|
|
data-theme-mode={theme_mode}
|
|
data-theme-preset={theme_preset}
|
|
data-content-layout={content_layout}
|
|
data-navbar-style={navbar_style}
|
|
data-sidebar-variant={sidebar_variant}
|
|
data-sidebar-collapsible={sidebar_collapsible}
|
|
data-font={font}
|
|
suppressHydrationWarning
|
|
>
|
|
<head>
|
|
{/* Applies theme and layout preferences on load to avoid flicker and unnecessary server rerenders. */}
|
|
<ThemeBootScript />
|
|
</head>
|
|
<body className={`${fontVars} min-h-screen antialiased`}>
|
|
<TooltipProvider>
|
|
<PreferencesStoreProvider
|
|
themeMode={theme_mode}
|
|
themePreset={theme_preset}
|
|
contentLayout={content_layout}
|
|
navbarStyle={navbar_style}
|
|
font={font}
|
|
>
|
|
{children}
|
|
<Toaster />
|
|
</PreferencesStoreProvider>
|
|
</TooltipProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|