-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpayload.config.ts
More file actions
93 lines (91 loc) · 2.49 KB
/
Copy pathpayload.config.ts
File metadata and controls
93 lines (91 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import path from "node:path";
import { fileURLToPath } from "node:url";
import { postgresAdapter } from "@payloadcms/db-postgres";
import { searchPlugin } from "@payloadcms/plugin-search";
import { lexicalEditor } from "@payloadcms/richtext-lexical";
import { buildConfig, databaseKVAdapter } from "payload";
import sharp from "sharp";
import { Categories } from "./collections/Categories";
import { Docs } from "./collections/Docs";
import { Users } from "./collections/Users";
import "dotenv/config";
import { env } from "./lib/env";
const filenameToPath = fileURLToPath(import.meta.url);
const dirname = path.dirname(filenameToPath);
export default buildConfig({
admin: {
importMap: {
baseDir: path.resolve(dirname),
},
meta: {
titleSuffix: "µLearn Docs | CMS Admin",
description: "Admin panel for documentation - Manage your documentation and content.",
defaultOGImageType: "dynamic",
icons: [
{
rel: "icon",
type: "image/x-icon",
url: "/favicon.ico",
},
{
rel: "apple-touch-icon",
type: "image/x-icon",
url: "/favicon.ico",
},
],
robots: "noindex, nofollow",
},
theme: "light",
components: {
afterNavLinks: ["@/components/home-nav-link#HomeNavLink"],
},
livePreview: {
collections: ["docs"],
url: ({ collectionConfig, data }) => {
if (collectionConfig?.slug !== "docs") return env.NEXT_PUBLIC_APP_URL as string;
const slug = data?.slug === "home" || !data?.slug ? "" : data.slug;
return `${env.NEXT_PUBLIC_APP_URL}/preview/${slug}`;
},
},
},
collections: [Users, Categories, Docs],
cors: {
origins: [env.NEXT_PUBLIC_APP_URL as string],
},
csrf: [env.NEXT_PUBLIC_APP_URL as string],
db: postgresAdapter({
pool: {
connectionString: env.PAYLOAD_DATABASE_URI || "",
},
}),
editor: lexicalEditor(),
graphQL: {
disable: true,
},
kv: databaseKVAdapter(),
plugins: [
searchPlugin({
collections: ["docs"],
defaultPriorities: {
docs: 10,
},
searchOverrides: {
fields: ({ defaultFields }) => [
...defaultFields,
{
name: "description",
type: "textarea",
admin: {
position: "sidebar",
},
},
],
},
}),
],
secret: env.PAYLOAD_SECRET || "",
sharp,
typescript: {
outputFile: path.resolve(dirname, "payload-types.ts"),
},
});