Files
SnapOtter/apps/landing/src/app/layout.tsx
T
SnapOtter 2c45a3a9e8 fix: update tool count to 52 and add ai-canvas-expand to landing page
ai-canvas-expand was added to constants.ts and route files but never
added to the landing page bento grid, causing all hardcoded counts
to remain at 51. This updates all references across source, docs,
i18n, and tests to reflect the correct count of 52 tools.
2026-05-16 10:02:19 +08:00

61 lines
1.9 KiB
TypeScript

import type { Metadata } from "next";
import { Inter, Nunito } from "next/font/google";
import "@/styles/globals.css";
const inter = Inter({ subsets: ["latin"], variable: "--font-inter" });
const nunito = Nunito({ subsets: ["latin"], variable: "--font-nunito" });
export const metadata: Metadata = {
title: "SnapOtter | Self-Hosted Image Processing",
description:
"52 image processing tools with local AI. Runs 100% offline. No data leaves your network. Open source and free forever.",
metadataBase: new URL("https://snapotter.com"),
icons: {
icon: [
{ url: "/favicon.png", type: "image/png", sizes: "48x48" },
{ url: "/favicon.ico", type: "image/x-icon" },
],
apple: [{ url: "/apple-touch-icon.png", sizes: "180x180" }],
},
other: {
"color-scheme": "light only",
"darkreader-lock": "true",
},
openGraph: {
title: "SnapOtter | Self-Hosted Image Processing",
description:
"52 image processing tools with local AI. Runs 100% offline. No data leaves your network.",
url: "https://snapotter.com",
siteName: "SnapOtter",
type: "website",
images: [
{
url: "/og-image.svg",
width: 1200,
height: 630,
alt: "SnapOtter | Self-Hosted Image Processing",
},
],
},
twitter: {
card: "summary_large_image",
title: "SnapOtter | Self-Hosted Image Processing",
description:
"52 image processing tools with local AI. Runs 100% offline. No data leaves your network.",
images: ["/og-image.svg"],
},
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className={`${inter.variable} ${nunito.variable}`} suppressHydrationWarning>
<body
className="bg-background text-foreground font-[family-name:var(--font-inter)] antialiased"
suppressHydrationWarning
>
{children}
</body>
</html>
);
}