import type { Metadata, Viewport } from "next"; import { cookies } from "next/headers"; import { Geist, Geist_Mono } from "next/font/google"; import { ThemeProvider } from "@/components/theme-provider"; import { Toaster } from "@/components/ui/sonner"; import { cn } from "@/lib/utils"; import { QueryProvider } from "@core/provider"; import { AuthInitializer } from "@/features/auth"; import { WSProvider } from "@/features/realtime"; import { ModalRegistry } from "@/features/modals"; import "./globals.css"; const geist = Geist({ subsets: ["latin"], variable: "--font-sans" }); const geistMono = Geist_Mono({ subsets: ["latin"], variable: "--font-mono" }); export const viewport: Viewport = { width: "device-width", initialScale: 1, themeColor: [ { media: "(prefers-color-scheme: light)", color: "#ffffff" }, { media: "(prefers-color-scheme: dark)", color: "#05070b" }, ], }; export const metadata: Metadata = { metadataBase: new URL("https://www.multica.ai"), title: { default: "Multica — AI-Native Task Management", template: "%s | Multica", }, description: "Open-source platform that turns coding agents into real teammates. Assign tasks, track progress, compound skills.", icons: { icon: [{ url: "/favicon.svg", type: "image/svg+xml" }], shortcut: ["/favicon.svg"], }, openGraph: { type: "website", siteName: "Multica", locale: "en_US", }, twitter: { card: "summary_large_image", }, alternates: { canonical: "/", }, robots: { index: true, follow: true, }, }; export default async function RootLayout({ children, }: { children: React.ReactNode; }) { const cookieStore = await cookies(); const locale = cookieStore.get("multica-locale")?.value; const lang = locale === "zh" ? "zh" : "en"; return ( {children} ); }