import type { Metadata, Viewport } from "next"; import { ServiceWorkerRegistrar } from "@/components/ServiceWorkerRegistrar"; import "./globals.css"; export const metadata: Metadata = { title: { default: "Freezmo — turn your notes into a study feed", template: "%s · Freezmo", }, description: "Freezmo turns photos and documents of your notes into a swipeable feed of short interactive study activities, powered by your own Ollama models.", applicationName: "Freezmo", manifest: "/manifest.webmanifest", appleWebApp: { capable: true, title: "Freezmo", statusBarStyle: "default", }, icons: { icon: [ { url: "/icons/favicon-32.png", sizes: "32x32", type: "image/png" }, { url: "/icons/icon-192.png", sizes: "192x192", type: "image/png" }, { url: "/icons/icon-512.png", sizes: "512x512", type: "image/png" }, ], apple: [ { url: "/icons/apple-touch-icon.png", sizes: "180x180" }, { url: "/icons/apple-touch-icon-167.png", sizes: "167x167" }, { url: "/icons/apple-touch-icon-152.png", sizes: "152x152" }, ], }, other: { // iOS standalone niceties "apple-mobile-web-app-capable": "yes", "mobile-web-app-capable": "yes", "format-detection": "telephone=no", }, }; export const viewport: Viewport = { width: "device-width", initialScale: 1, maximumScale: 5, viewportFit: "cover", themeColor: [ { media: "(prefers-color-scheme: light)", color: "#f8fafc" }, { media: "(prefers-color-scheme: dark)", color: "#0a0f13" }, ], }; /** Applies the saved theme before paint to avoid a flash. */ const themeScript = `(function(){try{var s=localStorage.getItem('freezmo.theme');var d=s?s==='dark':window.matchMedia('(prefers-color-scheme: dark)').matches;if(d)document.documentElement.classList.add('dark');}catch(e){}})();`; export default function RootLayout({ children }: { children: React.ReactNode }) { return (
{children}