Decorative images on the marketing pages stay quiet, and every dialog close button is named Close. Co-authored-by: Cursor <cursoragent@cursor.com>
24 lines
886 B
TypeScript
24 lines
886 B
TypeScript
import type { Metadata } from "next";
|
|
import messages from "../../../messages/en/index";
|
|
import { listRuleTemplatesFromDb } from "../../../lib/server/ruleTemplates";
|
|
import {
|
|
routeMetadata,
|
|
templatesShareImages,
|
|
} from "../../../lib/siteMetadata";
|
|
import { gridEntriesForFullCatalogWithFallback } from "../../../lib/templates/templateGridPresentation";
|
|
import TemplatesPageClient from "./TemplatesPageClient";
|
|
|
|
export const metadata: Metadata = routeMetadata("/templates", {
|
|
title: messages.metadata.templates.title,
|
|
description: messages.metadata.templates.description,
|
|
openGraph: {
|
|
images: templatesShareImages(),
|
|
},
|
|
});
|
|
|
|
export default async function TemplatesPage() {
|
|
const rows = await listRuleTemplatesFromDb();
|
|
const initialGridEntries = gridEntriesForFullCatalogWithFallback(rows);
|
|
return <TemplatesPageClient initialGridEntries={initialGridEntries} />;
|
|
}
|