kofi-stack-template-generator 2.1.26 → 2.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -683,14 +683,14 @@ export default async function HomePage() {
683
683
  }
684
684
  }
685
685
  `,
686
- "marketing/payload/src/app/(payload)/admin/[[...segments]]/not-found.tsx.hbs": "import config from '@/payload.config'\nimport { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'\nimport { importMap } from '../importMap.js'\nimport type { Metadata } from 'next'\n\ntype Args = {\n params: Promise<{ segments: string[] }>\n searchParams: Promise<Record<string, string | string[]>>\n}\n\nexport const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>\n generatePageMetadata({ config, params, searchParams })\n\nconst NotFound = ({ params, searchParams }: Args) =>\n NotFoundPage({ config, importMap, params, searchParams })\n\nexport default NotFound\n",
687
- "marketing/payload/src/app/(payload)/admin/[[...segments]]/page.tsx.hbs": "import config from '@/payload.config'\nimport { RootPage, generatePageMetadata } from '@payloadcms/next/views'\nimport { importMap } from '../importMap.js'\nimport type { Metadata } from 'next'\n\ntype Args = {\n params: Promise<{ segments: string[] }>\n searchParams: Promise<Record<string, string | string[]>>\n}\n\nexport const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>\n generatePageMetadata({ config, params, searchParams })\n\nconst Page = ({ params, searchParams }: Args) =>\n RootPage({ config, importMap, params, searchParams })\n\nexport default Page\n",
686
+ "marketing/payload/src/app/(payload)/admin/[[...segments]]/not-found.tsx.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport type { Metadata } from 'next'\n\nimport config from '@payload-config'\nimport { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'\nimport { importMap } from '../importMap'\n\ntype Args = {\n params: Promise<{\n segments: string[]\n }>\n searchParams: Promise<{\n [key: string]: string | string[]\n }>\n}\n\nexport const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>\n generatePageMetadata({ config, params, searchParams })\n\nconst NotFound = ({ params, searchParams }: Args) =>\n NotFoundPage({ config, params, searchParams, importMap })\n\nexport default NotFound\n",
687
+ "marketing/payload/src/app/(payload)/admin/[[...segments]]/page.tsx.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport type { Metadata } from 'next'\n\nimport config from '@payload-config'\nimport { RootPage, generatePageMetadata } from '@payloadcms/next/views'\nimport { importMap } from '../importMap'\n\ntype Args = {\n params: Promise<{\n segments: string[]\n }>\n searchParams: Promise<{\n [key: string]: string | string[]\n }>\n}\n\nexport const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>\n generatePageMetadata({ config, params, searchParams })\n\nconst Page = ({ params, searchParams }: Args) =>\n RootPage({ config, params, searchParams, importMap })\n\nexport default Page\n",
688
688
  "marketing/payload/src/app/(payload)/admin/importMap.js.hbs": "export const importMap = {}\n",
689
- "marketing/payload/src/app/(payload)/api/[...slug]/route.ts.hbs": "import config from '@/payload.config'\nimport { REST_DELETE, REST_GET, REST_OPTIONS, REST_PATCH, REST_POST } from '@payloadcms/next/routes'\nimport { importMap } from '../../importMap.js'\n\nexport const GET = REST_GET(config, importMap)\nexport const POST = REST_POST(config, importMap)\nexport const DELETE = REST_DELETE(config, importMap)\nexport const PATCH = REST_PATCH(config, importMap)\nexport const OPTIONS = REST_OPTIONS(config)\n",
690
- "marketing/payload/src/app/(payload)/api/graphql/route.ts.hbs": "import config from '@/payload.config'\nimport { GRAPHQL_POST } from '@payloadcms/next/routes'\nimport { importMap } from '../../importMap.js'\n\nexport const POST = GRAPHQL_POST(config, importMap)\n",
691
- "marketing/payload/src/app/(payload)/api/graphql-playground/route.ts.hbs": "import config from '@/payload.config'\nimport { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'\nimport { importMap } from '../../importMap.js'\n\nexport const GET = GRAPHQL_PLAYGROUND_GET(config, importMap)\n",
689
+ "marketing/payload/src/app/(payload)/api/[...slug]/route.ts.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport config from '@payload-config'\nimport '@payloadcms/next/css'\nimport {\n REST_DELETE,\n REST_GET,\n REST_OPTIONS,\n REST_PATCH,\n REST_POST,\n REST_PUT,\n} from '@payloadcms/next/routes'\n\nexport const GET = REST_GET(config)\nexport const POST = REST_POST(config)\nexport const DELETE = REST_DELETE(config)\nexport const PATCH = REST_PATCH(config)\nexport const PUT = REST_PUT(config)\nexport const OPTIONS = REST_OPTIONS(config)\n",
690
+ "marketing/payload/src/app/(payload)/api/graphql/route.ts.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport config from '@payload-config'\nimport { GRAPHQL_POST, REST_OPTIONS } from '@payloadcms/next/routes'\n\nexport const POST = GRAPHQL_POST(config)\n\nexport const OPTIONS = REST_OPTIONS(config)\n",
691
+ "marketing/payload/src/app/(payload)/api/graphql-playground/route.ts.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport config from '@payload-config'\nimport '@payloadcms/next/css'\nimport { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'\n\nexport const GET = GRAPHQL_PLAYGROUND_GET(config)\n",
692
692
  "marketing/payload/src/app/(payload)/custom.scss.hbs": "/* Custom Payload admin styles */\n",
693
- "marketing/payload/src/app/(payload)/layout.tsx.hbs": "import type { Metadata } from 'next'\nimport config from '@/payload.config'\nimport '@payloadcms/next/css'\nimport { RootLayout, handleServerFunctions } from '@payloadcms/next/layouts'\nimport type { ServerFunctionClient } from 'payload'\nimport { importMap } from './admin/importMap.js'\nimport './custom.scss'\n\nexport const metadata: Metadata = {\n title: 'Admin Panel',\n}\n\nconst serverFunction: ServerFunctionClient = async function (args) {\n 'use server'\n return handleServerFunctions({ ...args, config, importMap })\n}\n\nexport default async function Layout({ children }: { children: React.ReactNode }) {\n return (\n <RootLayout config={config} importMap={importMap} serverFunction={serverFunction}>\n {children}\n </RootLayout>\n )\n}\n",
693
+ "marketing/payload/src/app/(payload)/layout.tsx.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport config from '@payload-config'\nimport '@payloadcms/next/css'\nimport { RootLayout, handleServerFunctions } from '@payloadcms/next/layouts'\nimport type { ServerFunctionClient } from 'payload'\nimport type React from 'react'\n\nimport { importMap } from './admin/importMap.js'\nimport './custom.scss'\n\ntype Args = {\n children: React.ReactNode\n}\n\nconst serverFunction: ServerFunctionClient = async (args) => {\n 'use server'\n return handleServerFunctions({\n ...args,\n config,\n importMap,\n })\n}\n\nconst Layout = ({ children }: Args) => (\n <RootLayout config={config} importMap={importMap} serverFunction={serverFunction}>\n {children}\n </RootLayout>\n)\n\nexport default Layout\n",
694
694
  "marketing/payload/src/app/globals.css.hbs": '@import "tailwindcss";\n\n@custom-variant dark (&:is(.dark *));\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --font-sans: var(--font-geist-sans);\n --font-mono: var(--font-geist-mono);\n --color-ring: var(--ring);\n --color-input: var(--input);\n --color-border: var(--border);\n --color-destructive: var(--destructive);\n --color-accent-foreground: var(--accent-foreground);\n --color-accent: var(--accent);\n --color-muted-foreground: var(--muted-foreground);\n --color-muted: var(--muted);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-secondary: var(--secondary);\n --color-primary-foreground: var(--primary-foreground);\n --color-primary: var(--primary);\n --color-popover-foreground: var(--popover-foreground);\n --color-popover: var(--popover);\n --color-card-foreground: var(--card-foreground);\n --color-card: var(--card);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n}\n\n:root {\n --radius: 0.625rem;\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n}\n\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.205 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.922 0 0);\n --primary-foreground: oklch(0.205 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.269 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --border: oklch(1 0 0 / 10%);\n --input: oklch(1 0 0 / 15%);\n --ring: oklch(0.556 0 0);\n}\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n }\n\n body {\n @apply bg-background text-foreground;\n }\n}\n',
695
695
  "marketing/payload/src/app/layout.tsx.hbs": "// Root layout is minimal - each route group has its own complete layout\n// This prevents nested <html>/<body> tags between frontend and Payload admin\n// CSS is imported in each route group's layout to avoid style conflicts\nexport default function RootLayout({\n children,\n}: {\n children: React.ReactNode\n}) {\n return children\n}\n",
696
696
  "marketing/payload/src/blocks/Benefits.ts.hbs": "import type { Block } from 'payload'\n\nexport const BenefitsBlock: Block = {\n slug: 'benefits',\n labels: { singular: 'Benefits', plural: 'Benefits' },\n fields: [\n { name: 'label', type: 'text' },\n { name: 'heading', type: 'text', required: true },\n { name: 'description', type: 'textarea' },\n { name: 'image', type: 'upload', relationTo: 'media' },\n {\n name: 'imagePosition',\n type: 'select',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Right', value: 'right' },\n ],\n defaultValue: 'right',\n },\n {\n name: 'benefits',\n type: 'array',\n fields: [{ name: 'text', type: 'text', required: true }],\n },\n {\n name: 'cta',\n type: 'group',\n fields: [\n { name: 'label', type: 'text' },\n { name: 'url', type: 'text' },\n ],\n },\n ],\n}\n",
@@ -712,7 +712,7 @@ export default async function HomePage() {
712
712
  "marketing/payload/src/globals/SiteSettings.ts.hbs": "import type { GlobalConfig } from 'payload'\n\nexport const SiteSettings: GlobalConfig = {\n slug: 'site-settings',\n access: {\n read: () => true,\n },\n fields: [\n {\n name: 'siteName',\n type: 'text',\n required: true,\n },\n {\n name: 'siteDescription',\n type: 'textarea',\n },\n {\n name: 'logo',\n type: 'upload',\n relationTo: 'media',\n },\n {\n name: 'favicon',\n type: 'upload',\n relationTo: 'media',\n },\n {\n name: 'socialLinks',\n type: 'array',\n fields: [\n {\n name: 'platform',\n type: 'select',\n options: [\n { label: 'Twitter', value: 'twitter' },\n { label: 'GitHub', value: 'github' },\n { label: 'LinkedIn', value: 'linkedin' },\n { label: 'Discord', value: 'discord' },\n ],\n },\n {\n name: 'url',\n type: 'text',\n },\n ],\n },\n ],\n}\n",
713
713
  "marketing/payload/src/globals/index.ts.hbs": "export { SiteSettings } from './SiteSettings'\nexport { Navigation } from './Navigation'\n",
714
714
  "marketing/payload/src/payload.config.ts.hbs": "import path from 'path'\nimport { fileURLToPath } from 'url'\nimport { buildConfig } from 'payload'\nimport { postgresAdapter } from '@payloadcms/db-postgres'\nimport { lexicalEditor } from '@payloadcms/richtext-lexical'\nimport { seoPlugin } from '@payloadcms/plugin-seo'\nimport { resendAdapter } from '@payloadcms/email-resend'\nimport sharp from 'sharp'\n{{#if (eq integrations.payloadStorage 's3')}}\nimport { s3Storage } from '@payloadcms/storage-s3'\n{{/if}}\n{{#if (eq integrations.payloadStorage 'r2')}}\nimport { s3Storage } from '@payloadcms/storage-s3'\n{{/if}}\n{{#if (eq integrations.payloadStorage 'vercel-blob')}}\nimport { vercelBlobStorage } from '@payloadcms/storage-vercel-blob'\n{{/if}}\n{{#if (eq integrations.payloadStorage 'gcs')}}\nimport { gcsStorage } from '@payloadcms/storage-gcs'\n{{/if}}\n\nimport { Pages } from './collections/Pages'\nimport { Media } from './collections/Media'\nimport { Users } from './collections/Users'\nimport { Posts } from './collections/Posts'\nimport { SiteSettings } from './globals/SiteSettings'\nimport { Navigation } from './globals/Navigation'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\nexport default buildConfig({\n admin: {\n user: Users.slug,\n importMap: {\n baseDir: path.resolve(__dirname),\n },\n },\n db: postgresAdapter({\n pool: {\n connectionString: process.env.DATABASE_URL,\n },\n }),\n editor: lexicalEditor(),\n email: resendAdapter({\n defaultFromAddress: process.env.RESEND_FROM_EMAIL || 'noreply@example.com',\n defaultFromName: '{{projectName}}',\n apiKey: process.env.RESEND_API_KEY || '',\n }),\n collections: [Users, Media, Pages, Posts],\n globals: [SiteSettings, Navigation],\n plugins: [\n{{#if (eq integrations.payloadStorage 's3')}}\n s3Storage({\n collections: {\n media: true,\n },\n bucket: process.env.S3_BUCKET!,\n config: {\n credentials: {\n accessKeyId: process.env.S3_ACCESS_KEY_ID!,\n secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,\n },\n region: process.env.S3_REGION!,\n endpoint: process.env.S3_ENDPOINT,\n forcePathStyle: true,\n },\n }),\n{{/if}}\n{{#if (eq integrations.payloadStorage 'r2')}}\n s3Storage({\n collections: {\n media: true,\n },\n bucket: process.env.R2_BUCKET!,\n config: {\n credentials: {\n accessKeyId: process.env.R2_ACCESS_KEY_ID!,\n secretAccessKey: process.env.R2_SECRET_ACCESS_KEY!,\n },\n region: 'auto',\n endpoint: process.env.R2_ENDPOINT!,\n forcePathStyle: true,\n },\n }),\n{{/if}}\n{{#if (eq integrations.payloadStorage 'vercel-blob')}}\n vercelBlobStorage({\n collections: {\n media: true,\n },\n token: process.env.BLOB_READ_WRITE_TOKEN!,\n }),\n{{/if}}\n{{#if (eq integrations.payloadStorage 'gcs')}}\n gcsStorage({\n collections: {\n media: true,\n },\n bucket: process.env.GCS_BUCKET!,\n options: {\n projectId: process.env.GCS_PROJECT_ID,\n credentials: JSON.parse(process.env.GCS_CREDENTIALS || '{}'),\n },\n }),\n{{/if}}\n seoPlugin({\n collections: ['pages', 'posts'],\n uploadsCollection: 'media',\n generateTitle: ({ doc }) => `${doc?.title ?? ''} | {{projectName}}`,\n generateDescription: ({ doc }) => doc?.excerpt ?? '',\n }),\n ],\n secret: process.env.PAYLOAD_SECRET!,\n sharp,\n typescript: {\n outputFile: path.resolve(__dirname, 'payload-types.ts'),\n },\n{{#if (eq integrations.payloadStorage 'local')}}\n upload: {\n limits: {\n fileSize: 5000000, // 5MB\n },\n },\n{{/if}}\n})\n",
715
- "marketing/payload/tsconfig.json.hbs": '{\n "compilerOptions": {\n "target": "ES2017",\n "lib": ["dom", "dom.iterable", "esnext"],\n "allowJs": true,\n "skipLibCheck": true,\n "strict": true,\n "noEmit": true,\n "esModuleInterop": true,\n "module": "esnext",\n "moduleResolution": "bundler",\n "resolveJsonModule": true,\n "isolatedModules": true,\n "jsx": "preserve",\n "incremental": true,\n "plugins": [{ "name": "next" }],\n "paths": {\n "@/*": ["./src/*"]\n }\n },\n "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts"],\n "exclude": ["node_modules"]\n}\n',
715
+ "marketing/payload/tsconfig.json.hbs": '{\n "compilerOptions": {\n "target": "ES2017",\n "lib": ["dom", "dom.iterable", "esnext"],\n "allowJs": true,\n "skipLibCheck": true,\n "strict": true,\n "noEmit": true,\n "esModuleInterop": true,\n "module": "esnext",\n "moduleResolution": "bundler",\n "resolveJsonModule": true,\n "isolatedModules": true,\n "jsx": "preserve",\n "incremental": true,\n "plugins": [{ "name": "next" }],\n "paths": {\n "@payload-config": ["./src/payload.config.ts"],\n "@/*": ["./src/*"]\n }\n },\n "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts"],\n "exclude": ["node_modules"]\n}\n',
716
716
  "monorepo/package.json.hbs": '{\n "name": "{{projectName}}",\n "version": "0.1.0",\n "private": true,\n "scripts": {\n "dev": "node scripts/dev.mjs",\n "dev:all": "turbo dev",\n "dev:web": "turbo -F @repo/web dev",\n "dev:backend": "turbo -F @repo/backend dev",\n "dev:setup": "pnpm --filter @repo/backend dev:setup",\n "build": "turbo build",\n "lint": "turbo lint",\n "lint:fix": "turbo lint:fix",\n "format": "turbo format",\n "typecheck": "turbo typecheck",\n "test": "turbo test",\n "test:e2e": "turbo test:e2e",\n "clean": "turbo clean && rm -rf node_modules",\n "prepare": "husky"\n },\n "devDependencies": {\n "turbo": "^2.0.0",\n "husky": "^9.0.0",\n "lint-staged": "^15.0.0"\n },\n "packageManager": "pnpm@9.0.0",\n "lint-staged": {\n "*.{js,ts,jsx,tsx}": ["biome check --apply"],\n "*.{json,md}": ["biome format --write"]\n }\n}\n',
717
717
  "monorepo/pnpm-workspace.yaml.hbs": 'packages:\n - "apps/*"\n - "packages/*"\n',
718
718
  "monorepo/turbo.json.hbs": '{\n "$schema": "https://turbo.build/schema.json",\n "ui": "tui",\n "tasks": {\n "build": {\n "dependsOn": ["^build"],\n "inputs": ["$TURBO_DEFAULT$", ".env*"],\n "outputs": [".next/**", "!.next/cache/**", "dist/**"]\n },\n "lint": {\n "dependsOn": ["^lint"],\n "inputs": ["$TURBO_DEFAULT$"]\n },\n "lint:fix": {\n "dependsOn": ["^lint:fix"],\n "inputs": ["$TURBO_DEFAULT$"]\n },\n "format": {\n "dependsOn": ["^format"],\n "inputs": ["$TURBO_DEFAULT$"]\n },\n "typecheck": {\n "dependsOn": ["^typecheck"],\n "inputs": ["$TURBO_DEFAULT$"]\n },\n "dev": {\n "cache": false,\n "persistent": true\n },\n "dev:setup": {\n "cache": false,\n "interactive": true\n },\n "test": {\n "dependsOn": ["^build"],\n "inputs": ["$TURBO_DEFAULT$"]\n },\n "test:e2e": {\n "dependsOn": ["build"],\n "inputs": ["$TURBO_DEFAULT$"]\n },\n "clean": {\n "cache": false\n }\n }\n}\n',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kofi-stack-template-generator",
3
- "version": "2.1.26",
3
+ "version": "2.1.27",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -1,6 +1,6 @@
1
1
  // Auto-generated file. Do not edit manually.
2
2
  // Run 'pnpm prebuild' to regenerate.
3
- // Generated: 2026-01-15T03:38:14.978Z
3
+ // Generated: 2026-01-15T03:48:51.224Z
4
4
  // Template count: 90
5
5
 
6
6
  export const EMBEDDED_TEMPLATES: Record<string, string> = {
@@ -30,14 +30,14 @@ export const EMBEDDED_TEMPLATES: Record<string, string> = {
30
30
  "marketing/payload/postcss.config.mjs.hbs": "export default {\n plugins: {\n '@tailwindcss/postcss': {},\n },\n}\n",
31
31
  "marketing/payload/src/app/(frontend)/layout.tsx.hbs": "import type { Metadata } from 'next'\nimport '../globals.css'\n\nexport const metadata: Metadata = {\n title: '{{projectName}} - Marketing',\n description: 'Built with Payload CMS and Next.js',\n}\n\nexport default function FrontendLayout({\n children,\n}: {\n children: React.ReactNode\n}) {\n return (\n <html lang=\"en\">\n <body>{children}</body>\n </html>\n )\n}\n",
32
32
  "marketing/payload/src/app/(frontend)/page.tsx.hbs": "import { getPayload } from 'payload'\nimport config from '@/payload.config'\n\nexport default async function HomePage() {\n // Check if DATABASE_URL is configured\n if (!process.env.DATABASE_URL || process.env.DATABASE_URL.includes('[PASSWORD]')) {\n return (\n <main className=\"min-h-screen bg-gradient-to-b from-gray-50 to-white\">\n <div className=\"container mx-auto px-4 py-16\">\n <div className=\"max-w-2xl mx-auto text-center\">\n <h1 className=\"text-4xl font-bold text-gray-900 mb-4\">\n Welcome to Your Marketing Site\n </h1>\n <p className=\"text-lg text-gray-600 mb-8\">\n Built with Payload CMS and Next.js\n </p>\n <div className=\"bg-amber-50 border border-amber-200 rounded-lg p-6 text-left\">\n <h2 className=\"text-lg font-semibold text-amber-800 mb-2\">\n Database Setup Required\n </h2>\n <p className=\"text-amber-700 mb-4\">\n To get started, configure your PostgreSQL database:\n </p>\n <ol className=\"list-decimal list-inside text-amber-700 space-y-2\">\n <li>Create a Supabase project at <a href=\"https://supabase.com\" className=\"underline\" target=\"_blank\" rel=\"noopener noreferrer\">supabase.com</a></li>\n <li>Copy your database connection string</li>\n <li>Update <code className=\"bg-amber-100 px-1 rounded\">DATABASE_URL</code> in <code className=\"bg-amber-100 px-1 rounded\">apps/marketing/.env.local</code></li>\n <li>Restart the development server</li>\n </ol>\n </div>\n <div className=\"mt-8\">\n <a\n href=\"/admin\"\n className=\"inline-flex items-center px-6 py-3 bg-gray-900 text-white rounded-lg hover:bg-gray-800 transition-colors\"\n >\n Go to Admin Panel\n </a>\n </div>\n </div>\n </div>\n </main>\n )\n }\n\n try {\n const payload = await getPayload({ config })\n\n const settings = await payload.findGlobal({\n slug: 'site-settings',\n })\n\n return (\n <main className=\"min-h-screen\">\n <div className=\"container mx-auto px-4 py-16\">\n <h1 className=\"text-4xl font-bold\">{settings.siteName || 'Marketing Site'}</h1>\n <p className=\"mt-4 text-lg text-gray-600\">{settings.siteDescription || 'Built with Payload CMS'}</p>\n </div>\n </main>\n )\n } catch (error) {\n return (\n <main className=\"min-h-screen bg-gradient-to-b from-red-50 to-white\">\n <div className=\"container mx-auto px-4 py-16\">\n <div className=\"max-w-2xl mx-auto text-center\">\n <h1 className=\"text-4xl font-bold text-gray-900 mb-4\">\n Database Connection Error\n </h1>\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-6 text-left\">\n <p className=\"text-red-700 mb-4\">\n Could not connect to the database. Please check your configuration:\n </p>\n <ul className=\"list-disc list-inside text-red-700 space-y-2\">\n <li>Verify <code className=\"bg-red-100 px-1 rounded\">DATABASE_URL</code> is correct</li>\n <li>Ensure your database is running and accessible</li>\n <li>Check that the database credentials are valid</li>\n </ul>\n </div>\n </div>\n </div>\n </main>\n )\n }\n}\n",
33
- "marketing/payload/src/app/(payload)/admin/[[...segments]]/not-found.tsx.hbs": "import config from '@/payload.config'\nimport { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'\nimport { importMap } from '../importMap.js'\nimport type { Metadata } from 'next'\n\ntype Args = {\n params: Promise<{ segments: string[] }>\n searchParams: Promise<Record<string, string | string[]>>\n}\n\nexport const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>\n generatePageMetadata({ config, params, searchParams })\n\nconst NotFound = ({ params, searchParams }: Args) =>\n NotFoundPage({ config, importMap, params, searchParams })\n\nexport default NotFound\n",
34
- "marketing/payload/src/app/(payload)/admin/[[...segments]]/page.tsx.hbs": "import config from '@/payload.config'\nimport { RootPage, generatePageMetadata } from '@payloadcms/next/views'\nimport { importMap } from '../importMap.js'\nimport type { Metadata } from 'next'\n\ntype Args = {\n params: Promise<{ segments: string[] }>\n searchParams: Promise<Record<string, string | string[]>>\n}\n\nexport const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>\n generatePageMetadata({ config, params, searchParams })\n\nconst Page = ({ params, searchParams }: Args) =>\n RootPage({ config, importMap, params, searchParams })\n\nexport default Page\n",
33
+ "marketing/payload/src/app/(payload)/admin/[[...segments]]/not-found.tsx.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport type { Metadata } from 'next'\n\nimport config from '@payload-config'\nimport { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'\nimport { importMap } from '../importMap'\n\ntype Args = {\n params: Promise<{\n segments: string[]\n }>\n searchParams: Promise<{\n [key: string]: string | string[]\n }>\n}\n\nexport const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>\n generatePageMetadata({ config, params, searchParams })\n\nconst NotFound = ({ params, searchParams }: Args) =>\n NotFoundPage({ config, params, searchParams, importMap })\n\nexport default NotFound\n",
34
+ "marketing/payload/src/app/(payload)/admin/[[...segments]]/page.tsx.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport type { Metadata } from 'next'\n\nimport config from '@payload-config'\nimport { RootPage, generatePageMetadata } from '@payloadcms/next/views'\nimport { importMap } from '../importMap'\n\ntype Args = {\n params: Promise<{\n segments: string[]\n }>\n searchParams: Promise<{\n [key: string]: string | string[]\n }>\n}\n\nexport const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>\n generatePageMetadata({ config, params, searchParams })\n\nconst Page = ({ params, searchParams }: Args) =>\n RootPage({ config, params, searchParams, importMap })\n\nexport default Page\n",
35
35
  "marketing/payload/src/app/(payload)/admin/importMap.js.hbs": "export const importMap = {}\n",
36
- "marketing/payload/src/app/(payload)/api/[...slug]/route.ts.hbs": "import config from '@/payload.config'\nimport { REST_DELETE, REST_GET, REST_OPTIONS, REST_PATCH, REST_POST } from '@payloadcms/next/routes'\nimport { importMap } from '../../importMap.js'\n\nexport const GET = REST_GET(config, importMap)\nexport const POST = REST_POST(config, importMap)\nexport const DELETE = REST_DELETE(config, importMap)\nexport const PATCH = REST_PATCH(config, importMap)\nexport const OPTIONS = REST_OPTIONS(config)\n",
37
- "marketing/payload/src/app/(payload)/api/graphql/route.ts.hbs": "import config from '@/payload.config'\nimport { GRAPHQL_POST } from '@payloadcms/next/routes'\nimport { importMap } from '../../importMap.js'\n\nexport const POST = GRAPHQL_POST(config, importMap)\n",
38
- "marketing/payload/src/app/(payload)/api/graphql-playground/route.ts.hbs": "import config from '@/payload.config'\nimport { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'\nimport { importMap } from '../../importMap.js'\n\nexport const GET = GRAPHQL_PLAYGROUND_GET(config, importMap)\n",
36
+ "marketing/payload/src/app/(payload)/api/[...slug]/route.ts.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport config from '@payload-config'\nimport '@payloadcms/next/css'\nimport {\n REST_DELETE,\n REST_GET,\n REST_OPTIONS,\n REST_PATCH,\n REST_POST,\n REST_PUT,\n} from '@payloadcms/next/routes'\n\nexport const GET = REST_GET(config)\nexport const POST = REST_POST(config)\nexport const DELETE = REST_DELETE(config)\nexport const PATCH = REST_PATCH(config)\nexport const PUT = REST_PUT(config)\nexport const OPTIONS = REST_OPTIONS(config)\n",
37
+ "marketing/payload/src/app/(payload)/api/graphql/route.ts.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport config from '@payload-config'\nimport { GRAPHQL_POST, REST_OPTIONS } from '@payloadcms/next/routes'\n\nexport const POST = GRAPHQL_POST(config)\n\nexport const OPTIONS = REST_OPTIONS(config)\n",
38
+ "marketing/payload/src/app/(payload)/api/graphql-playground/route.ts.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport config from '@payload-config'\nimport '@payloadcms/next/css'\nimport { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'\n\nexport const GET = GRAPHQL_PLAYGROUND_GET(config)\n",
39
39
  "marketing/payload/src/app/(payload)/custom.scss.hbs": "/* Custom Payload admin styles */\n",
40
- "marketing/payload/src/app/(payload)/layout.tsx.hbs": "import type { Metadata } from 'next'\nimport config from '@/payload.config'\nimport '@payloadcms/next/css'\nimport { RootLayout, handleServerFunctions } from '@payloadcms/next/layouts'\nimport type { ServerFunctionClient } from 'payload'\nimport { importMap } from './admin/importMap.js'\nimport './custom.scss'\n\nexport const metadata: Metadata = {\n title: 'Admin Panel',\n}\n\nconst serverFunction: ServerFunctionClient = async function (args) {\n 'use server'\n return handleServerFunctions({ ...args, config, importMap })\n}\n\nexport default async function Layout({ children }: { children: React.ReactNode }) {\n return (\n <RootLayout config={config} importMap={importMap} serverFunction={serverFunction}>\n {children}\n </RootLayout>\n )\n}\n",
40
+ "marketing/payload/src/app/(payload)/layout.tsx.hbs": "/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */\n/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */\nimport config from '@payload-config'\nimport '@payloadcms/next/css'\nimport { RootLayout, handleServerFunctions } from '@payloadcms/next/layouts'\nimport type { ServerFunctionClient } from 'payload'\nimport type React from 'react'\n\nimport { importMap } from './admin/importMap.js'\nimport './custom.scss'\n\ntype Args = {\n children: React.ReactNode\n}\n\nconst serverFunction: ServerFunctionClient = async (args) => {\n 'use server'\n return handleServerFunctions({\n ...args,\n config,\n importMap,\n })\n}\n\nconst Layout = ({ children }: Args) => (\n <RootLayout config={config} importMap={importMap} serverFunction={serverFunction}>\n {children}\n </RootLayout>\n)\n\nexport default Layout\n",
41
41
  "marketing/payload/src/app/globals.css.hbs": "@import \"tailwindcss\";\n\n@custom-variant dark (&:is(.dark *));\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --font-sans: var(--font-geist-sans);\n --font-mono: var(--font-geist-mono);\n --color-ring: var(--ring);\n --color-input: var(--input);\n --color-border: var(--border);\n --color-destructive: var(--destructive);\n --color-accent-foreground: var(--accent-foreground);\n --color-accent: var(--accent);\n --color-muted-foreground: var(--muted-foreground);\n --color-muted: var(--muted);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-secondary: var(--secondary);\n --color-primary-foreground: var(--primary-foreground);\n --color-primary: var(--primary);\n --color-popover-foreground: var(--popover-foreground);\n --color-popover: var(--popover);\n --color-card-foreground: var(--card-foreground);\n --color-card: var(--card);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n}\n\n:root {\n --radius: 0.625rem;\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n}\n\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.205 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.922 0 0);\n --primary-foreground: oklch(0.205 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.269 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --border: oklch(1 0 0 / 10%);\n --input: oklch(1 0 0 / 15%);\n --ring: oklch(0.556 0 0);\n}\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n }\n\n body {\n @apply bg-background text-foreground;\n }\n}\n",
42
42
  "marketing/payload/src/app/layout.tsx.hbs": "// Root layout is minimal - each route group has its own complete layout\n// This prevents nested <html>/<body> tags between frontend and Payload admin\n// CSS is imported in each route group's layout to avoid style conflicts\nexport default function RootLayout({\n children,\n}: {\n children: React.ReactNode\n}) {\n return children\n}\n",
43
43
  "marketing/payload/src/blocks/Benefits.ts.hbs": "import type { Block } from 'payload'\n\nexport const BenefitsBlock: Block = {\n slug: 'benefits',\n labels: { singular: 'Benefits', plural: 'Benefits' },\n fields: [\n { name: 'label', type: 'text' },\n { name: 'heading', type: 'text', required: true },\n { name: 'description', type: 'textarea' },\n { name: 'image', type: 'upload', relationTo: 'media' },\n {\n name: 'imagePosition',\n type: 'select',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Right', value: 'right' },\n ],\n defaultValue: 'right',\n },\n {\n name: 'benefits',\n type: 'array',\n fields: [{ name: 'text', type: 'text', required: true }],\n },\n {\n name: 'cta',\n type: 'group',\n fields: [\n { name: 'label', type: 'text' },\n { name: 'url', type: 'text' },\n ],\n },\n ],\n}\n",
@@ -59,7 +59,7 @@ export const EMBEDDED_TEMPLATES: Record<string, string> = {
59
59
  "marketing/payload/src/globals/SiteSettings.ts.hbs": "import type { GlobalConfig } from 'payload'\n\nexport const SiteSettings: GlobalConfig = {\n slug: 'site-settings',\n access: {\n read: () => true,\n },\n fields: [\n {\n name: 'siteName',\n type: 'text',\n required: true,\n },\n {\n name: 'siteDescription',\n type: 'textarea',\n },\n {\n name: 'logo',\n type: 'upload',\n relationTo: 'media',\n },\n {\n name: 'favicon',\n type: 'upload',\n relationTo: 'media',\n },\n {\n name: 'socialLinks',\n type: 'array',\n fields: [\n {\n name: 'platform',\n type: 'select',\n options: [\n { label: 'Twitter', value: 'twitter' },\n { label: 'GitHub', value: 'github' },\n { label: 'LinkedIn', value: 'linkedin' },\n { label: 'Discord', value: 'discord' },\n ],\n },\n {\n name: 'url',\n type: 'text',\n },\n ],\n },\n ],\n}\n",
60
60
  "marketing/payload/src/globals/index.ts.hbs": "export { SiteSettings } from './SiteSettings'\nexport { Navigation } from './Navigation'\n",
61
61
  "marketing/payload/src/payload.config.ts.hbs": "import path from 'path'\nimport { fileURLToPath } from 'url'\nimport { buildConfig } from 'payload'\nimport { postgresAdapter } from '@payloadcms/db-postgres'\nimport { lexicalEditor } from '@payloadcms/richtext-lexical'\nimport { seoPlugin } from '@payloadcms/plugin-seo'\nimport { resendAdapter } from '@payloadcms/email-resend'\nimport sharp from 'sharp'\n{{#if (eq integrations.payloadStorage 's3')}}\nimport { s3Storage } from '@payloadcms/storage-s3'\n{{/if}}\n{{#if (eq integrations.payloadStorage 'r2')}}\nimport { s3Storage } from '@payloadcms/storage-s3'\n{{/if}}\n{{#if (eq integrations.payloadStorage 'vercel-blob')}}\nimport { vercelBlobStorage } from '@payloadcms/storage-vercel-blob'\n{{/if}}\n{{#if (eq integrations.payloadStorage 'gcs')}}\nimport { gcsStorage } from '@payloadcms/storage-gcs'\n{{/if}}\n\nimport { Pages } from './collections/Pages'\nimport { Media } from './collections/Media'\nimport { Users } from './collections/Users'\nimport { Posts } from './collections/Posts'\nimport { SiteSettings } from './globals/SiteSettings'\nimport { Navigation } from './globals/Navigation'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\nexport default buildConfig({\n admin: {\n user: Users.slug,\n importMap: {\n baseDir: path.resolve(__dirname),\n },\n },\n db: postgresAdapter({\n pool: {\n connectionString: process.env.DATABASE_URL,\n },\n }),\n editor: lexicalEditor(),\n email: resendAdapter({\n defaultFromAddress: process.env.RESEND_FROM_EMAIL || 'noreply@example.com',\n defaultFromName: '{{projectName}}',\n apiKey: process.env.RESEND_API_KEY || '',\n }),\n collections: [Users, Media, Pages, Posts],\n globals: [SiteSettings, Navigation],\n plugins: [\n{{#if (eq integrations.payloadStorage 's3')}}\n s3Storage({\n collections: {\n media: true,\n },\n bucket: process.env.S3_BUCKET!,\n config: {\n credentials: {\n accessKeyId: process.env.S3_ACCESS_KEY_ID!,\n secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,\n },\n region: process.env.S3_REGION!,\n endpoint: process.env.S3_ENDPOINT,\n forcePathStyle: true,\n },\n }),\n{{/if}}\n{{#if (eq integrations.payloadStorage 'r2')}}\n s3Storage({\n collections: {\n media: true,\n },\n bucket: process.env.R2_BUCKET!,\n config: {\n credentials: {\n accessKeyId: process.env.R2_ACCESS_KEY_ID!,\n secretAccessKey: process.env.R2_SECRET_ACCESS_KEY!,\n },\n region: 'auto',\n endpoint: process.env.R2_ENDPOINT!,\n forcePathStyle: true,\n },\n }),\n{{/if}}\n{{#if (eq integrations.payloadStorage 'vercel-blob')}}\n vercelBlobStorage({\n collections: {\n media: true,\n },\n token: process.env.BLOB_READ_WRITE_TOKEN!,\n }),\n{{/if}}\n{{#if (eq integrations.payloadStorage 'gcs')}}\n gcsStorage({\n collections: {\n media: true,\n },\n bucket: process.env.GCS_BUCKET!,\n options: {\n projectId: process.env.GCS_PROJECT_ID,\n credentials: JSON.parse(process.env.GCS_CREDENTIALS || '{}'),\n },\n }),\n{{/if}}\n seoPlugin({\n collections: ['pages', 'posts'],\n uploadsCollection: 'media',\n generateTitle: ({ doc }) => `${doc?.title ?? ''} | {{projectName}}`,\n generateDescription: ({ doc }) => doc?.excerpt ?? '',\n }),\n ],\n secret: process.env.PAYLOAD_SECRET!,\n sharp,\n typescript: {\n outputFile: path.resolve(__dirname, 'payload-types.ts'),\n },\n{{#if (eq integrations.payloadStorage 'local')}}\n upload: {\n limits: {\n fileSize: 5000000, // 5MB\n },\n },\n{{/if}}\n})\n",
62
- "marketing/payload/tsconfig.json.hbs": "{\n \"compilerOptions\": {\n \"target\": \"ES2017\",\n \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n \"allowJs\": true,\n \"skipLibCheck\": true,\n \"strict\": true,\n \"noEmit\": true,\n \"esModuleInterop\": true,\n \"module\": \"esnext\",\n \"moduleResolution\": \"bundler\",\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"jsx\": \"preserve\",\n \"incremental\": true,\n \"plugins\": [{ \"name\": \"next\" }],\n \"paths\": {\n \"@/*\": [\"./src/*\"]\n }\n },\n \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\", \".next/dev/types/**/*.ts\"],\n \"exclude\": [\"node_modules\"]\n}\n",
62
+ "marketing/payload/tsconfig.json.hbs": "{\n \"compilerOptions\": {\n \"target\": \"ES2017\",\n \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n \"allowJs\": true,\n \"skipLibCheck\": true,\n \"strict\": true,\n \"noEmit\": true,\n \"esModuleInterop\": true,\n \"module\": \"esnext\",\n \"moduleResolution\": \"bundler\",\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"jsx\": \"preserve\",\n \"incremental\": true,\n \"plugins\": [{ \"name\": \"next\" }],\n \"paths\": {\n \"@payload-config\": [\"./src/payload.config.ts\"],\n \"@/*\": [\"./src/*\"]\n }\n },\n \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\", \".next/dev/types/**/*.ts\"],\n \"exclude\": [\"node_modules\"]\n}\n",
63
63
  "monorepo/package.json.hbs": "{\n \"name\": \"{{projectName}}\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"scripts\": {\n \"dev\": \"node scripts/dev.mjs\",\n \"dev:all\": \"turbo dev\",\n \"dev:web\": \"turbo -F @repo/web dev\",\n \"dev:backend\": \"turbo -F @repo/backend dev\",\n \"dev:setup\": \"pnpm --filter @repo/backend dev:setup\",\n \"build\": \"turbo build\",\n \"lint\": \"turbo lint\",\n \"lint:fix\": \"turbo lint:fix\",\n \"format\": \"turbo format\",\n \"typecheck\": \"turbo typecheck\",\n \"test\": \"turbo test\",\n \"test:e2e\": \"turbo test:e2e\",\n \"clean\": \"turbo clean && rm -rf node_modules\",\n \"prepare\": \"husky\"\n },\n \"devDependencies\": {\n \"turbo\": \"^2.0.0\",\n \"husky\": \"^9.0.0\",\n \"lint-staged\": \"^15.0.0\"\n },\n \"packageManager\": \"pnpm@9.0.0\",\n \"lint-staged\": {\n \"*.{js,ts,jsx,tsx}\": [\"biome check --apply\"],\n \"*.{json,md}\": [\"biome format --write\"]\n }\n}\n",
64
64
  "monorepo/pnpm-workspace.yaml.hbs": "packages:\n - \"apps/*\"\n - \"packages/*\"\n",
65
65
  "monorepo/turbo.json.hbs": "{\n \"$schema\": \"https://turbo.build/schema.json\",\n \"ui\": \"tui\",\n \"tasks\": {\n \"build\": {\n \"dependsOn\": [\"^build\"],\n \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n \"outputs\": [\".next/**\", \"!.next/cache/**\", \"dist/**\"]\n },\n \"lint\": {\n \"dependsOn\": [\"^lint\"],\n \"inputs\": [\"$TURBO_DEFAULT$\"]\n },\n \"lint:fix\": {\n \"dependsOn\": [\"^lint:fix\"],\n \"inputs\": [\"$TURBO_DEFAULT$\"]\n },\n \"format\": {\n \"dependsOn\": [\"^format\"],\n \"inputs\": [\"$TURBO_DEFAULT$\"]\n },\n \"typecheck\": {\n \"dependsOn\": [\"^typecheck\"],\n \"inputs\": [\"$TURBO_DEFAULT$\"]\n },\n \"dev\": {\n \"cache\": false,\n \"persistent\": true\n },\n \"dev:setup\": {\n \"cache\": false,\n \"interactive\": true\n },\n \"test\": {\n \"dependsOn\": [\"^build\"],\n \"inputs\": [\"$TURBO_DEFAULT$\"]\n },\n \"test:e2e\": {\n \"dependsOn\": [\"build\"],\n \"inputs\": [\"$TURBO_DEFAULT$\"]\n },\n \"clean\": {\n \"cache\": false\n }\n }\n}\n",
@@ -1,17 +1,24 @@
1
- import config from '@/payload.config'
2
- import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
3
- import { importMap } from '../importMap.js'
1
+ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
2
+ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
4
3
  import type { Metadata } from 'next'
5
4
 
5
+ import config from '@payload-config'
6
+ import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
7
+ import { importMap } from '../importMap'
8
+
6
9
  type Args = {
7
- params: Promise<{ segments: string[] }>
8
- searchParams: Promise<Record<string, string | string[]>>
10
+ params: Promise<{
11
+ segments: string[]
12
+ }>
13
+ searchParams: Promise<{
14
+ [key: string]: string | string[]
15
+ }>
9
16
  }
10
17
 
11
18
  export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
12
19
  generatePageMetadata({ config, params, searchParams })
13
20
 
14
21
  const NotFound = ({ params, searchParams }: Args) =>
15
- NotFoundPage({ config, importMap, params, searchParams })
22
+ NotFoundPage({ config, params, searchParams, importMap })
16
23
 
17
24
  export default NotFound
@@ -1,17 +1,24 @@
1
- import config from '@/payload.config'
2
- import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
3
- import { importMap } from '../importMap.js'
1
+ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
2
+ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
4
3
  import type { Metadata } from 'next'
5
4
 
5
+ import config from '@payload-config'
6
+ import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
7
+ import { importMap } from '../importMap'
8
+
6
9
  type Args = {
7
- params: Promise<{ segments: string[] }>
8
- searchParams: Promise<Record<string, string | string[]>>
10
+ params: Promise<{
11
+ segments: string[]
12
+ }>
13
+ searchParams: Promise<{
14
+ [key: string]: string | string[]
15
+ }>
9
16
  }
10
17
 
11
18
  export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
12
19
  generatePageMetadata({ config, params, searchParams })
13
20
 
14
21
  const Page = ({ params, searchParams }: Args) =>
15
- RootPage({ config, importMap, params, searchParams })
22
+ RootPage({ config, params, searchParams, importMap })
16
23
 
17
24
  export default Page
@@ -1,9 +1,19 @@
1
- import config from '@/payload.config'
2
- import { REST_DELETE, REST_GET, REST_OPTIONS, REST_PATCH, REST_POST } from '@payloadcms/next/routes'
3
- import { importMap } from '../../importMap.js'
1
+ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
2
+ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
3
+ import config from '@payload-config'
4
+ import '@payloadcms/next/css'
5
+ import {
6
+ REST_DELETE,
7
+ REST_GET,
8
+ REST_OPTIONS,
9
+ REST_PATCH,
10
+ REST_POST,
11
+ REST_PUT,
12
+ } from '@payloadcms/next/routes'
4
13
 
5
- export const GET = REST_GET(config, importMap)
6
- export const POST = REST_POST(config, importMap)
7
- export const DELETE = REST_DELETE(config, importMap)
8
- export const PATCH = REST_PATCH(config, importMap)
14
+ export const GET = REST_GET(config)
15
+ export const POST = REST_POST(config)
16
+ export const DELETE = REST_DELETE(config)
17
+ export const PATCH = REST_PATCH(config)
18
+ export const PUT = REST_PUT(config)
9
19
  export const OPTIONS = REST_OPTIONS(config)
@@ -1,5 +1,8 @@
1
- import config from '@/payload.config'
2
- import { GRAPHQL_POST } from '@payloadcms/next/routes'
3
- import { importMap } from '../../importMap.js'
1
+ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
2
+ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
3
+ import config from '@payload-config'
4
+ import { GRAPHQL_POST, REST_OPTIONS } from '@payloadcms/next/routes'
4
5
 
5
- export const POST = GRAPHQL_POST(config, importMap)
6
+ export const POST = GRAPHQL_POST(config)
7
+
8
+ export const OPTIONS = REST_OPTIONS(config)
@@ -1,5 +1,7 @@
1
- import config from '@/payload.config'
1
+ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
2
+ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
3
+ import config from '@payload-config'
4
+ import '@payloadcms/next/css'
2
5
  import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'
3
- import { importMap } from '../../importMap.js'
4
6
 
5
- export const GET = GRAPHQL_PLAYGROUND_GET(config, importMap)
7
+ export const GET = GRAPHQL_PLAYGROUND_GET(config)
@@ -1,24 +1,31 @@
1
- import type { Metadata } from 'next'
2
- import config from '@/payload.config'
1
+ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
2
+ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
3
+ import config from '@payload-config'
3
4
  import '@payloadcms/next/css'
4
5
  import { RootLayout, handleServerFunctions } from '@payloadcms/next/layouts'
5
6
  import type { ServerFunctionClient } from 'payload'
7
+ import type React from 'react'
8
+
6
9
  import { importMap } from './admin/importMap.js'
7
10
  import './custom.scss'
8
11
 
9
- export const metadata: Metadata = {
10
- title: 'Admin Panel',
12
+ type Args = {
13
+ children: React.ReactNode
11
14
  }
12
15
 
13
- const serverFunction: ServerFunctionClient = async function (args) {
16
+ const serverFunction: ServerFunctionClient = async (args) => {
14
17
  'use server'
15
- return handleServerFunctions({ ...args, config, importMap })
18
+ return handleServerFunctions({
19
+ ...args,
20
+ config,
21
+ importMap,
22
+ })
16
23
  }
17
24
 
18
- export default async function Layout({ children }: { children: React.ReactNode }) {
19
- return (
20
- <RootLayout config={config} importMap={importMap} serverFunction={serverFunction}>
21
- {children}
22
- </RootLayout>
23
- )
24
- }
25
+ const Layout = ({ children }: Args) => (
26
+ <RootLayout config={config} importMap={importMap} serverFunction={serverFunction}>
27
+ {children}
28
+ </RootLayout>
29
+ )
30
+
31
+ export default Layout
@@ -15,6 +15,7 @@
15
15
  "incremental": true,
16
16
  "plugins": [{ "name": "next" }],
17
17
  "paths": {
18
+ "@payload-config": ["./src/payload.config.ts"],
18
19
  "@/*": ["./src/*"]
19
20
  }
20
21
  },