feat(marketing-pages): add pages collection + siteSettings global

This commit is contained in:
2026-05-05 08:31:37 +02:00
parent 23e7885fc4
commit a44142b875
3 changed files with 97 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
import type { CollectionConfig } from "payload";
import {
cta,
seoFields,
slugifyIfMissing,
} from "@repo/core-shared/payload";
export const pages: CollectionConfig = {
slug: "pages",
admin: {
useAsTitle: "title",
defaultColumns: ["title", "status", "updatedAt"],
},
hooks: {
beforeChange: [slugifyIfMissing],
},
versions: {
drafts: true,
},
fields: [
{
name: "title",
type: "text",
required: true,
maxLength: 255,
},
{
name: "slug",
type: "text",
unique: true,
admin: {
position: "sidebar",
description: "Auto-generated from title if left empty",
},
},
{
name: "hero",
type: "group",
fields: [
{ name: "heading", type: "text", required: true },
{ name: "subheading", type: "textarea" },
{
name: "image",
type: "upload",
relationTo: "media",
},
],
},
{
name: "layout",
type: "blocks",
blocks: [cta],
},
{
name: "status",
type: "select",
options: [
{ label: "Draft", value: "draft" },
{ label: "Published", value: "published" },
],
defaultValue: "draft",
required: true,
admin: { position: "sidebar" },
},
{
name: "publishedAt",
type: "date",
admin: {
position: "sidebar",
date: { pickerAppearance: "dayAndTime" },
},
},
seoFields,
],
};

View File

@@ -0,0 +1,20 @@
import type { GlobalConfig } from "payload";
export const siteSettings: GlobalConfig = {
slug: "site-settings",
admin: {
group: "Settings",
},
fields: [
{
name: "siteName",
type: "text",
required: true,
defaultValue: "My App",
},
{
name: "siteDescription",
type: "textarea",
},
],
};

View File

@@ -0,0 +1,2 @@
export { pages } from "./collections/pages";
export { siteSettings } from "./globals/site-settings";