ERP-node/frontend/app/layout.tsx

57 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-08-27 10:52:01 +09:00
import type { Metadata, Viewport } from "next";
2025-08-21 09:41:46 +09:00
import { Inter, JetBrains_Mono } from "next/font/google";
import "./globals.css";
import { QueryProvider } from "@/providers/QueryProvider";
2025-09-09 14:29:04 +09:00
import { RegistryProvider } from "./registry-provider";
2025-09-12 14:24:25 +09:00
import { Toaster } from "sonner";
import ScreenModal from "@/components/common/ScreenModal";
2025-08-21 09:41:46 +09:00
const inter = Inter({
subsets: ["latin"],
variable: "--font-inter",
display: "swap",
});
const jetbrainsMono = JetBrains_Mono({
subsets: ["latin"],
variable: "--font-jetbrains-mono",
display: "swap",
});
export const metadata: Metadata = {
title: "WACE 솔루션 - WACE",
2025-08-21 09:41:46 +09:00
description: "제품 수명 주기 관리(PLM) 솔루션",
keywords: ["WACE", "PLM", "Product Lifecycle Management", "WACE", "제품관리"],
2025-08-21 09:41:46 +09:00
authors: [{ name: "WACE" }],
2025-10-13 10:32:46 +09:00
icons: {
icon: "/favicon.ico",
},
2025-08-27 10:52:01 +09:00
};
export const viewport: Viewport = {
width: "device-width",
initialScale: 1,
2025-08-21 09:41:46 +09:00
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="ko" className="h-full">
<body className={`${inter.variable} ${jetbrainsMono.variable} h-full bg-white font-sans antialiased`}>
<div id="root" className="h-full">
<QueryProvider>
2025-09-09 14:29:04 +09:00
<RegistryProvider>{children}</RegistryProvider>
2025-09-29 18:44:16 +09:00
<Toaster position="top-right" richColors />
<ScreenModal />
</QueryProvider>
{/* Portal 컨테이너 */}
<div id="portal-root" data-radix-portal="true" />
2025-08-21 09:41:46 +09:00
</div>
</body>
</html>
);
}