Files

46 lines
1.4 KiB
TypeScript

import type { Metadata, Viewport } from "next";
import "./globals.css";
import { BottomNav } from "@/components/BottomNav";
import { Providers } from "@/components/Providers";
import { ErrorBoundary } from "@/components/ErrorBoundary";
import { SearchOverlay } from "@/components/SearchOverlay";
export const metadata: Metadata = {
title: "Hermes OS",
description: "Mobile dashboard for Hermes Agent",
icons: { icon: "/favicon.svg", apple: "/icon-192.png" },
appleWebApp: { capable: true, statusBarStyle: "black-translucent", title: "Hermes" },
};
export const viewport: Viewport = {
themeColor: "#0a0a0f",
width: "device-width",
initialScale: 1,
maximumScale: 1,
viewportFit: "cover",
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<head>
<link rel="manifest" href="/manifest.json" />
</head>
<body className="antialiased">
<Providers>
<main className="min-h-screen pb-safe px-4 pt-4 max-w-lg mx-auto">
<ErrorBoundary>{children}</ErrorBoundary>
</main>
<BottomNav />
<SearchOverlay />
</Providers>
<script
dangerouslySetInnerHTML={{
__html: `if("serviceWorker"in navigator)window.addEventListener("load",()=>navigator.serviceWorker.register("/sw.js"))`,
}}
/>
</body>
</html>
);
}