mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
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.
61 lines
1.9 KiB
TypeScript
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>
|
|
);
|
|
}
|