spb/note-spboucher-ai
Public
1import type { Metadata, Viewport } from "next";2import "./globals.css";3import { Providers } from "@/components/providers";4import { Toaster } from "@/components/ui/toast";56export const metadata: Metadata = {7 title: { default: "Note SPBoucher AI", template: "%s · Note SPBoucher AI" },8 description: "Private AI-native knowledge operating system.",9 manifest: "/manifest.webmanifest",10 appleWebApp: { capable: true, statusBarStyle: "black-translucent", title: "Note" },11 icons: { icon: "/icons/icon-192.png", apple: "/icons/icon-192.png" },12};13export const viewport: Viewport = { themeColor: [{ media: "(prefers-color-scheme: light)", color: "#fcfcfb" }, { media: "(prefers-color-scheme: dark)", color: "#141518" }], viewportFit: "cover", width: "device-width", initialScale: 1, maximumScale: 1, interactiveWidget: "resizes-content" };1415const themeScript = `(function(){try{var t=localStorage.getItem('note-theme');var d=t==='dark'||(t!=='light'&&matchMedia('(prefers-color-scheme: dark)').matches);if(d)document.documentElement.classList.add('dark');}catch(e){}})();`;1617export default function RootLayout({ children }: { children: React.ReactNode }) {18 return (19 <html lang="en" suppressHydrationWarning>20 <head><script dangerouslySetInnerHTML={{ __html: themeScript }} /></head>21 <body className="font-sans"><Providers>{children}</Providers><Toaster /></body>22 </html>23 );24}25