dbx/docs/app/layout.tsx

56 lines
1.5 KiB
TypeScript

import "./global.css";
import type { ReactNode } from "react";
import type { Metadata } from "next";
import { SITE_URL, SITE_NAME, DEFAULT_DESCRIPTION, DEFAULT_OG_IMAGE } from "@/lib/metadata";
export const metadata: Metadata = {
title: {
default: SITE_NAME,
template: `%s | ${SITE_NAME}`,
},
description: DEFAULT_DESCRIPTION,
metadataBase: new URL(SITE_URL),
icons: {
icon: "/favicon.png",
shortcut: "/favicon.png",
apple: "/logo.png",
},
openGraph: {
siteName: SITE_NAME,
images: [{ url: DEFAULT_OG_IMAGE }],
},
twitter: {
card: "summary_large_image",
},
};
export default function RootLayout({ children }: { children: ReactNode }) {
return (
<html suppressHydrationWarning>
<head>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify({
"@context": "https://schema.org",
"@type": "WebSite",
name: SITE_NAME,
url: SITE_URL,
description: DEFAULT_DESCRIPTION,
potentialAction: {
"@type": "SearchAction",
target: {
"@type": "EntryPoint",
urlTemplate: `${SITE_URL}/search?q={search_term_string}`,
},
"query-input": "required name=search_term_string",
},
}),
}}
/>
</head>
<body className="flex min-h-screen flex-col">{children}</body>
</html>
);
}