import { postgresAdapter } from "@payloadcms/db-postgres"; import { lexicalEditor } from "@payloadcms/richtext-lexical"; import path from "path"; import { buildConfig } from "payload"; import { fileURLToPath } from "url"; import sharp from "sharp"; import { Users } from "@/collections/Users"; import { Media } from "@/collections/Media"; import { Events } from "@/collections/Events"; import { Posts } from "@/collections/Posts"; import { Offers } from "@/collections/Offers"; import { EventRegistrations } from "@/collections/EventRegistrations"; import { Customers } from "@/collections/Customers"; import { Availability } from "@/collections/Availability"; import { AvailabilityOverrides } from "@/collections/AvailabilityOverrides"; import { BookingRequests } from "@/collections/BookingRequests"; import { Redirects } from "@/collections/Redirects"; import { Home } from "@/globals/Home"; import { About } from "@/globals/About"; import { AngeboteIntro } from "@/globals/AngeboteIntro"; import { AktuellesIntro } from "@/globals/AktuellesIntro"; import { Contact } from "@/globals/Contact"; import { Booking } from "@/globals/Booking"; import { MeetingSettings } from "@/globals/MeetingSettings"; import { BookingSettings } from "@/globals/BookingSettings"; import { SEOSettings } from "@/globals/SEOSettings"; const filename = fileURLToPath(import.meta.url); const dirname = path.dirname(filename); export default buildConfig({ serverURL: process.env.NEXT_PUBLIC_SERVER_URL || "http://localhost:3000", admin: { user: Users.slug, importMap: { baseDir: path.resolve(dirname), }, meta: { titleSuffix: "— Anouma Admin", }, components: { afterNavLinks: ["/components/admin/CalendarNavLink#CalendarNavLink"], views: { kalender: { Component: "/components/admin/AdminCalendarView#AdminCalendarView", path: "/kalender", exact: true, meta: { title: "Kalender" }, }, }, }, }, collections: [ Users, Customers, Media, Events, Posts, Offers, EventRegistrations, Availability, AvailabilityOverrides, BookingRequests, Redirects, ], globals: [Home, About, AngeboteIntro, AktuellesIntro, Contact, Booking, MeetingSettings, BookingSettings, SEOSettings], editor: lexicalEditor(), secret: process.env.PAYLOAD_SECRET || "", typescript: { outputFile: path.resolve(dirname, "payload-types.ts"), }, db: postgresAdapter({ pool: { connectionString: process.env.DATABASE_URI || "", }, }), sharp, // Server-side upload size limit; the Media collection restricts formats. upload: { limits: { fileSize: 10 * 1024 * 1024, // 10 MB }, }, plugins: [], });