chore: update website and blank templates to incorporate import map changes (#7664)
This commit is contained in:
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
@@ -427,8 +427,8 @@ jobs:
|
|||||||
- name: Pack and build app
|
- name: Pack and build app
|
||||||
run: |
|
run: |
|
||||||
set -ex
|
set -ex
|
||||||
pnpm run script:pack --dest templates/blank-3.0
|
pnpm run script:pack --dest templates/blank
|
||||||
cd templates/blank-3.0
|
cd templates/blank
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
ls -la
|
ls -la
|
||||||
pnpm add ./*.tgz --ignore-workspace
|
pnpm add ./*.tgz --ignore-workspace
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ To install a Database Adapter, you can run **one** of the following commands:
|
|||||||
|
|
||||||
#### 2. Copy Payload files into your Next.js app folder
|
#### 2. Copy Payload files into your Next.js app folder
|
||||||
|
|
||||||
Payload installs directly in your Next.js `/app` folder, and you'll need to place some files into that folder for Payload to run. You can copy these files from the [Blank Template](https://github.com/payloadcms/payload/tree/beta/templates/blank-3.0/src/app/(payload)) on GitHub. Once you have the required Payload files in place in your `/app` folder, you should have something like this:
|
Payload installs directly in your Next.js `/app` folder, and you'll need to place some files into that folder for Payload to run. You can copy these files from the [Blank Template](https://github.com/payloadcms/payload/tree/beta/templates/blank/src/app/(payload)) on GitHub. Once you have the required Payload files in place in your `/app` folder, you should have something like this:
|
||||||
|
|
||||||
```plaintext
|
```plaintext
|
||||||
app/
|
app/
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ describe('createProject', () => {
|
|||||||
const args = {
|
const args = {
|
||||||
_: ['project-name'],
|
_: ['project-name'],
|
||||||
'--db': 'mongodb',
|
'--db': 'mongodb',
|
||||||
'--local-template': 'blank-3.0',
|
'--local-template': 'blank',
|
||||||
'--no-deps': true,
|
'--no-deps': true,
|
||||||
} as CliArgs
|
} as CliArgs
|
||||||
const packageManager = 'yarn'
|
const packageManager = 'yarn'
|
||||||
@@ -64,8 +64,8 @@ describe('createProject', () => {
|
|||||||
const templates = getValidTemplates()
|
const templates = getValidTemplates()
|
||||||
|
|
||||||
it.each([
|
it.each([
|
||||||
['blank-3.0', 'mongodb'],
|
['blank', 'mongodb'],
|
||||||
['blank-3.0', 'postgres'],
|
['blank', 'postgres'],
|
||||||
|
|
||||||
// TODO: Re-enable these once 3.0 is stable and templates updated
|
// TODO: Re-enable these once 3.0 is stable and templates updated
|
||||||
// ['website', 'mongodb'],
|
// ['website', 'mongodb'],
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ async function installAndConfigurePayload(
|
|||||||
const templateFilesPath =
|
const templateFilesPath =
|
||||||
dirname.endsWith('dist') || useDistFiles
|
dirname.endsWith('dist') || useDistFiles
|
||||||
? path.resolve(dirname, '../..', 'dist/template')
|
? path.resolve(dirname, '../..', 'dist/template')
|
||||||
: path.resolve(dirname, '../../../../templates/blank-3.0')
|
: path.resolve(dirname, '../../../../templates/blank')
|
||||||
|
|
||||||
logDebug(`Using template files from: ${templateFilesPath}`)
|
logDebug(`Using template files from: ${templateFilesPath}`)
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export function getValidTemplates(): ProjectTemplate[] {
|
|||||||
name: 'blank',
|
name: 'blank',
|
||||||
type: 'starter',
|
type: 'starter',
|
||||||
description: 'Blank 3.0 Template',
|
description: 'Blank 3.0 Template',
|
||||||
url: 'https://github.com/payloadcms/payload/templates/blank-3.0#beta',
|
url: 'https://github.com/payloadcms/payload/templates/blank#beta',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'website',
|
name: 'website',
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ export async function updatePayloadInProject(
|
|||||||
|
|
||||||
const templateFilesPath =
|
const templateFilesPath =
|
||||||
process.env.JEST_WORKER_ID !== undefined
|
process.env.JEST_WORKER_ID !== undefined
|
||||||
? path.resolve(dirname, '../../../../templates/blank-3.0')
|
? path.resolve(dirname, '../../../../templates/blank')
|
||||||
: path.resolve(dirname, '../..', 'dist/template')
|
: path.resolve(dirname, '../..', 'dist/template')
|
||||||
|
|
||||||
const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')
|
const templateSrcDir = path.resolve(templateFilesPath, 'src/app/(payload)')
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ const dirname = path.dirname(filename)
|
|||||||
main()
|
main()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy the necessary template files from `templates/blank-3.0` to `dist/template`
|
* Copy the necessary template files from `templates/blank` to `dist/template`
|
||||||
*
|
*
|
||||||
* Eventually, this should be replaced with using tar.x to stream from the git repo
|
* Eventually, this should be replaced with using tar.x to stream from the git repo
|
||||||
*/
|
*/
|
||||||
@@ -17,7 +17,7 @@ main()
|
|||||||
async function main() {
|
async function main() {
|
||||||
const root = path.resolve(dirname, '../../../../')
|
const root = path.resolve(dirname, '../../../../')
|
||||||
const outputPath = path.resolve(dirname, '../../dist/template')
|
const outputPath = path.resolve(dirname, '../../dist/template')
|
||||||
const sourceTemplatePath = path.resolve(root, 'templates/blank-3.0')
|
const sourceTemplatePath = path.resolve(root, 'templates/blank')
|
||||||
|
|
||||||
if (!fs.existsSync(sourceTemplatePath)) {
|
if (!fs.existsSync(sourceTemplatePath)) {
|
||||||
throw new Error(`Source path does not exist: ${sourceTemplatePath}`)
|
throw new Error(`Source path does not exist: ${sourceTemplatePath}`)
|
||||||
@@ -27,7 +27,7 @@ async function main() {
|
|||||||
fs.mkdirSync(outputPath, { recursive: true })
|
fs.mkdirSync(outputPath, { recursive: true })
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy the src directory from `templates/blank-3.0` to `dist`
|
// Copy the src directory from `templates/blank` to `dist`
|
||||||
const srcPath = path.resolve(sourceTemplatePath, 'src')
|
const srcPath = path.resolve(sourceTemplatePath, 'src')
|
||||||
const distSrcPath = path.resolve(outputPath, 'src')
|
const distSrcPath = path.resolve(outputPath, 'src')
|
||||||
// Copy entire file structure from src to dist
|
// Copy entire file structure from src to dist
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ export type Imports = {
|
|||||||
* Import Map after being imported from the actual import map. Contains all the actual imported components
|
* Import Map after being imported from the actual import map. Contains all the actual imported components
|
||||||
*/
|
*/
|
||||||
export type ImportMap = {
|
export type ImportMap = {
|
||||||
[path: UserImportPath]: React.FC
|
[path: UserImportPath]: any
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addPayloadComponentToImportMap({
|
export function addPayloadComponentToImportMap({
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ type TemplateVariations = {
|
|||||||
envNames?: {
|
envNames?: {
|
||||||
dbUri: string
|
dbUri: string
|
||||||
}
|
}
|
||||||
|
configureConfig?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
main().catch((error) => {
|
main().catch((error) => {
|
||||||
@@ -93,6 +94,9 @@ async function main() {
|
|||||||
db: 'mongodb',
|
db: 'mongodb',
|
||||||
storage: 'localDisk',
|
storage: 'localDisk',
|
||||||
sharp: true,
|
sharp: true,
|
||||||
|
// The blank template will later be used by CPA as a base. That's when we want to
|
||||||
|
// configure the config - not here
|
||||||
|
configureConfig: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'payload-cloud-mongodb-template',
|
name: 'payload-cloud-mongodb-template',
|
||||||
@@ -111,21 +115,24 @@ async function main() {
|
|||||||
vercelDeployButtonLink,
|
vercelDeployButtonLink,
|
||||||
envNames,
|
envNames,
|
||||||
sharp,
|
sharp,
|
||||||
|
configureConfig,
|
||||||
} of variations) {
|
} of variations) {
|
||||||
console.log(`Generating ${name}...`)
|
console.log(`Generating ${name}...`)
|
||||||
const destDir = path.join(templatesDir, dirname)
|
const destDir = path.join(templatesDir, dirname)
|
||||||
copyRecursiveSync(path.join(templatesDir, '_template'), destDir)
|
copyRecursiveSync(path.join(templatesDir, '_template'), destDir)
|
||||||
console.log(`Generated ${name} in ${destDir}`)
|
console.log(`Generated ${name} in ${destDir}`)
|
||||||
|
|
||||||
// Configure payload config
|
if (configureConfig !== false) {
|
||||||
await configurePayloadConfig({
|
// Configure payload config
|
||||||
dbType: db,
|
await configurePayloadConfig({
|
||||||
packageJsonName: name,
|
dbType: db,
|
||||||
projectDirOrConfigPath: { projectDir: destDir },
|
packageJsonName: name,
|
||||||
storageAdapter: storage,
|
projectDirOrConfigPath: { projectDir: destDir },
|
||||||
sharp,
|
storageAdapter: storage,
|
||||||
envNames,
|
sharp,
|
||||||
})
|
envNames,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
await generateReadme({
|
await generateReadme({
|
||||||
destDir,
|
destDir,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ To spin up the project locally, follow these steps:
|
|||||||
|
|
||||||
1. First clone the repo
|
1. First clone the repo
|
||||||
1. Then `cd YOUR_PROJECT_REPO && cp .env.example .env`
|
1. Then `cd YOUR_PROJECT_REPO && cp .env.example .env`
|
||||||
1. Next `yarn && yarn dev` (or `docker-compose up`, see [Docker](#docker))
|
1. Next `beta && beta dev` (or `docker-compose up`, see [Docker](#docker))
|
||||||
1. Now `open http://localhost:3000/admin` to access the admin panel
|
1. Now `open http://localhost:3000/admin` to access the admin panel
|
||||||
1. Create your first admin user using the form on the page
|
1. Create your first admin user using the form on the page
|
||||||
|
|
||||||
@@ -28,10 +28,10 @@ That's it! The Docker instance will help you get up and running quickly while al
|
|||||||
|
|
||||||
## Production
|
## Production
|
||||||
|
|
||||||
To run Payload in production, you need to build and serve the Admin panel. To do so, follow these steps:
|
To run Payload in production, you need to build and start the Admin panel. To do so, follow these steps:
|
||||||
|
|
||||||
1. First invoke the `payload build` script by running `yarn build` or `npm run build` in your project root. This creates a `./build` directory with a production-ready admin bundle.
|
1. First invoke the `payload build` script by running `beta build` or `npm run build` in your project root. This creates a `./build` directory with a production-ready admin bundle.
|
||||||
1. Then run `yarn serve` or `npm run serve` to run Node in production and serve Payload from the `./build` directory.
|
1. Then run `beta start` or `npm run start` to run Node in production and start Payload from the `./build` directory.
|
||||||
|
|
||||||
### Deployment
|
### Deployment
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,11 @@
|
|||||||
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
||||||
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"generate:types": "payload generate:types",
|
|
||||||
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
||||||
"payload": "cross-env NODE_OPTIONS=--no-deprecation payload",
|
"start": "cross-env NODE_OPTIONS=--no-deprecation next start",
|
||||||
"start": "cross-env NODE_OPTIONS=--no-deprecation next start"
|
"payload": "payload",
|
||||||
|
"generate:types": "payload generate:types",
|
||||||
|
"generate:importmap": "payload generate:importmap"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@payloadcms/db-mongodb": "beta",
|
"@payloadcms/db-mongodb": "beta",
|
||||||
@@ -20,10 +21,10 @@
|
|||||||
"@payloadcms/richtext-lexical": "beta",
|
"@payloadcms/richtext-lexical": "beta",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"graphql": "^16.8.1",
|
"graphql": "^16.8.1",
|
||||||
"next": "15.0.0-canary.53",
|
"next": "15.0.0-canary.104",
|
||||||
"payload": "beta",
|
"payload": "beta",
|
||||||
"react": "19.0.0-rc-6230622a1a-20240610",
|
"react": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"react-dom": "19.0.0-rc-6230622a1a-20240610",
|
"react-dom": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"sharp": "0.32.6"
|
"sharp": "0.32.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -31,7 +32,7 @@
|
|||||||
"@types/react": "npm:types-react@19.0.0-rc.0",
|
"@types/react": "npm:types-react@19.0.0-rc.0",
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
||||||
"eslint": "^8",
|
"eslint": "^8",
|
||||||
"eslint-config-next": "15.0.0-canary.53",
|
"eslint-config-next": "15.0.0-canary.104",
|
||||||
"typescript": "5.5.4"
|
"typescript": "5.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const NotFound = ({ params, searchParams }: Args) => NotFoundPage({ config, params, searchParams })
|
const NotFound = ({ params, searchParams }: Args) =>
|
||||||
|
NotFoundPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default NotFound
|
export default NotFound
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const Page = ({ params, searchParams }: Args) => RootPage({ config, params, searchParams })
|
const Page = ({ params, searchParams }: Args) =>
|
||||||
|
RootPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default Page
|
export default Page
|
||||||
|
|||||||
5
templates/_template/src/app/(payload)/admin/importMap.js
Normal file
5
templates/_template/src/app/(payload)/admin/importMap.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import { emptyComponent as emptyComponent_0 } from '@payloadcms/ui/shared'
|
||||||
|
|
||||||
|
export const importMap = {
|
||||||
|
'@payloadcms/ui/shared#emptyComponent': emptyComponent_0,
|
||||||
|
}
|
||||||
@@ -6,11 +6,16 @@ import { RootLayout } from '@payloadcms/next/layouts'
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import './custom.scss'
|
import './custom.scss'
|
||||||
|
import { importMap } from './admin/importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}
|
}
|
||||||
|
|
||||||
const Layout = ({ children }: Args) => <RootLayout config={configPromise}>{children}</RootLayout>
|
const Layout = ({ children }: Args) => (
|
||||||
|
<RootLayout importMap={importMap} config={configPromise}>
|
||||||
|
{children}
|
||||||
|
</RootLayout>
|
||||||
|
)
|
||||||
|
|
||||||
export default Layout
|
export default Layout
|
||||||
|
|||||||
127
templates/_template/src/payload-types.ts
Normal file
127
templates/_template/src/payload-types.ts
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* This file was automatically generated by Payload.
|
||||||
|
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
|
||||||
|
* and re-run `payload generate:types` to regenerate this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface Config {
|
||||||
|
auth: {
|
||||||
|
users: UserAuthOperations;
|
||||||
|
};
|
||||||
|
collections: {
|
||||||
|
users: User;
|
||||||
|
media: Media;
|
||||||
|
'payload-preferences': PayloadPreference;
|
||||||
|
'payload-migrations': PayloadMigration;
|
||||||
|
};
|
||||||
|
db: {
|
||||||
|
defaultIDType: string;
|
||||||
|
};
|
||||||
|
globals: {};
|
||||||
|
locale: null;
|
||||||
|
user: User & {
|
||||||
|
collection: 'users';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface UserAuthOperations {
|
||||||
|
forgotPassword: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
login: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
registerFirstUser: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
unlock: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "users".
|
||||||
|
*/
|
||||||
|
export interface User {
|
||||||
|
id: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
email: string;
|
||||||
|
resetPasswordToken?: string | null;
|
||||||
|
resetPasswordExpiration?: string | null;
|
||||||
|
salt?: string | null;
|
||||||
|
hash?: string | null;
|
||||||
|
loginAttempts?: number | null;
|
||||||
|
lockUntil?: string | null;
|
||||||
|
password?: string | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "media".
|
||||||
|
*/
|
||||||
|
export interface Media {
|
||||||
|
id: string;
|
||||||
|
alt: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
url?: string | null;
|
||||||
|
thumbnailURL?: string | null;
|
||||||
|
filename?: string | null;
|
||||||
|
mimeType?: string | null;
|
||||||
|
filesize?: number | null;
|
||||||
|
width?: number | null;
|
||||||
|
height?: number | null;
|
||||||
|
focalX?: number | null;
|
||||||
|
focalY?: number | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-preferences".
|
||||||
|
*/
|
||||||
|
export interface PayloadPreference {
|
||||||
|
id: string;
|
||||||
|
user: {
|
||||||
|
relationTo: 'users';
|
||||||
|
value: string | User;
|
||||||
|
};
|
||||||
|
key?: string | null;
|
||||||
|
value?:
|
||||||
|
| {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
| unknown[]
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-migrations".
|
||||||
|
*/
|
||||||
|
export interface PayloadMigration {
|
||||||
|
id: string;
|
||||||
|
name?: string | null;
|
||||||
|
batch?: number | null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "auth".
|
||||||
|
*/
|
||||||
|
export interface Auth {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare module 'payload' {
|
||||||
|
export interface GeneratedTypes extends Config {}
|
||||||
|
}
|
||||||
@@ -15,6 +15,9 @@ const dirname = path.dirname(filename)
|
|||||||
export default buildConfig({
|
export default buildConfig({
|
||||||
admin: {
|
admin: {
|
||||||
user: Users.slug,
|
user: Users.slug,
|
||||||
|
importMap: {
|
||||||
|
baseDir: path.resolve(dirname),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
collections: [Users, Media],
|
collections: [Users, Media],
|
||||||
editor: lexicalEditor(),
|
editor: lexicalEditor(),
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
DATABASE_URI=mongodb://127.0.0.1/payload-template-blank-3-0
|
|
||||||
PAYLOAD_SECRET=YOUR_SECRET_HERE
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
/** @type {import('eslint').Linter.Config} */
|
|
||||||
module.exports = {
|
|
||||||
extends: ['next/core-web-vitals'],
|
|
||||||
parserOptions: {
|
|
||||||
project: ['./tsconfig.json'],
|
|
||||||
tsconfigRootDir: __dirname,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
43
templates/blank-3.0/.gitignore
vendored
43
templates/blank-3.0/.gitignore
vendored
@@ -1,43 +0,0 @@
|
|||||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
/node_modules
|
|
||||||
/.pnp
|
|
||||||
.pnp.js
|
|
||||||
.yarn/install-state.gz
|
|
||||||
|
|
||||||
/.idea/*
|
|
||||||
!/.idea/runConfigurations
|
|
||||||
|
|
||||||
# testing
|
|
||||||
/coverage
|
|
||||||
|
|
||||||
# next.js
|
|
||||||
/.next/
|
|
||||||
/out/
|
|
||||||
|
|
||||||
# production
|
|
||||||
/build
|
|
||||||
|
|
||||||
# misc
|
|
||||||
.DS_Store
|
|
||||||
*.pem
|
|
||||||
|
|
||||||
# debug
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
|
|
||||||
# local env files
|
|
||||||
.env*.local
|
|
||||||
|
|
||||||
# vercel
|
|
||||||
.vercel
|
|
||||||
|
|
||||||
# typescript
|
|
||||||
*.tsbuildinfo
|
|
||||||
next-env.d.ts
|
|
||||||
|
|
||||||
.env
|
|
||||||
|
|
||||||
/media
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"singleQuote": true,
|
|
||||||
"trailingComma": "all",
|
|
||||||
"printWidth": 100,
|
|
||||||
"semi": false
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
--install.ignore-engines true
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
# From https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile
|
|
||||||
|
|
||||||
FROM node:18-alpine AS base
|
|
||||||
|
|
||||||
# Install dependencies only when needed
|
|
||||||
FROM base AS deps
|
|
||||||
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
|
|
||||||
RUN apk add --no-cache libc6-compat
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# Install dependencies based on the preferred package manager
|
|
||||||
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
|
|
||||||
RUN \
|
|
||||||
if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
|
|
||||||
elif [ -f package-lock.json ]; then npm ci; \
|
|
||||||
elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \
|
|
||||||
else echo "Lockfile not found." && exit 1; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Rebuild the source code only when needed
|
|
||||||
FROM base AS builder
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=deps /app/node_modules ./node_modules
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
# Next.js collects completely anonymous telemetry data about general usage.
|
|
||||||
# Learn more here: https://nextjs.org/telemetry
|
|
||||||
# Uncomment the following line in case you want to disable telemetry during the build.
|
|
||||||
# ENV NEXT_TELEMETRY_DISABLED 1
|
|
||||||
|
|
||||||
RUN \
|
|
||||||
if [ -f yarn.lock ]; then yarn run build; \
|
|
||||||
elif [ -f package-lock.json ]; then npm run build; \
|
|
||||||
elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \
|
|
||||||
else echo "Lockfile not found." && exit 1; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Production image, copy all the files and run next
|
|
||||||
FROM base AS runner
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
ENV NODE_ENV production
|
|
||||||
# Uncomment the following line in case you want to disable telemetry during runtime.
|
|
||||||
# ENV NEXT_TELEMETRY_DISABLED 1
|
|
||||||
|
|
||||||
RUN addgroup --system --gid 1001 nodejs
|
|
||||||
RUN adduser --system --uid 1001 nextjs
|
|
||||||
|
|
||||||
COPY --from=builder /app/public ./public
|
|
||||||
|
|
||||||
# Set the correct permission for prerender cache
|
|
||||||
RUN mkdir .next
|
|
||||||
RUN chown nextjs:nodejs .next
|
|
||||||
|
|
||||||
# Automatically leverage output traces to reduce image size
|
|
||||||
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
|
||||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
|
||||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
|
||||||
|
|
||||||
USER nextjs
|
|
||||||
|
|
||||||
EXPOSE 3000
|
|
||||||
|
|
||||||
ENV PORT 3000
|
|
||||||
|
|
||||||
# server.js is created by next build from the standalone output
|
|
||||||
# https://nextjs.org/docs/pages/api-reference/next-config-js/output
|
|
||||||
CMD HOSTNAME="0.0.0.0" node server.js
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
# Payload Blank Template
|
|
||||||
|
|
||||||
A blank template for [Payload](https://github.com/payloadcms/payload) to help you get up and running quickly. This repo may have been created by running `npx create-payload-app@latest` and selecting the "blank" template or by cloning this template on [Payload Cloud](https://payloadcms.com/new/clone/blank).
|
|
||||||
|
|
||||||
See the official [Examples Directory](https://github.com/payloadcms/payload/tree/main/examples) for details on how to use Payload in a variety of different ways.
|
|
||||||
|
|
||||||
## Development
|
|
||||||
|
|
||||||
To spin up the project locally, follow these steps:
|
|
||||||
|
|
||||||
1. First clone the repo
|
|
||||||
1. Then `cd YOUR_PROJECT_REPO && cp .env.example .env`
|
|
||||||
1. Next `yarn && yarn dev` (or `docker-compose up`, see [Docker](#docker))
|
|
||||||
1. Now `open http://localhost:3000/admin` to access the admin panel
|
|
||||||
1. Create your first admin user using the form on the page
|
|
||||||
|
|
||||||
That's it! Changes made in `./src` will be reflected in your app.
|
|
||||||
|
|
||||||
### Docker
|
|
||||||
|
|
||||||
Alternatively, you can use [Docker](https://www.docker.com) to spin up this project locally. To do so, follow these steps:
|
|
||||||
|
|
||||||
1. Follow [steps 1 and 2 from above](#development), the docker-compose file will automatically use the `.env` file in your project root
|
|
||||||
1. Next run `docker-compose up`
|
|
||||||
1. Follow [steps 4 and 5 from above](#development) to login and create your first admin user
|
|
||||||
|
|
||||||
That's it! The Docker instance will help you get up and running quickly while also standardizing the development environment across your teams.
|
|
||||||
|
|
||||||
## Production
|
|
||||||
|
|
||||||
To run Payload in production, you need to build and serve the Admin panel. To do so, follow these steps:
|
|
||||||
|
|
||||||
1. First invoke the `payload build` script by running `yarn build` or `npm run build` in your project root. This creates a `./build` directory with a production-ready admin bundle.
|
|
||||||
1. Then run `yarn serve` or `npm run serve` to run Node in production and serve Payload from the `./build` directory.
|
|
||||||
|
|
||||||
### Deployment
|
|
||||||
|
|
||||||
The easiest way to deploy your project is to use [Payload Cloud](https://payloadcms.com/new/import), a one-click hosting solution to deploy production-ready instances of your Payload apps directly from your GitHub repo. You can also deploy your app manually, check out the [deployment documentation](https://payloadcms.com/docs/production/deployment) for full details.
|
|
||||||
|
|
||||||
## Questions
|
|
||||||
|
|
||||||
If you have any issues or questions, reach out to us on [Discord](https://discord.com/invite/payload) or start a [GitHub discussion](https://github.com/payloadcms/payload/discussions).
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
payload:
|
|
||||||
image: node:18-alpine
|
|
||||||
ports:
|
|
||||||
- '3000:3000'
|
|
||||||
volumes:
|
|
||||||
- .:/home/node/app
|
|
||||||
- node_modules:/home/node/app/node_modules
|
|
||||||
working_dir: /home/node/app/
|
|
||||||
command: sh -c "corepack enable && corepack prepare pnpm@latest --activate && pnpm install && pnpm dev"
|
|
||||||
depends_on:
|
|
||||||
- mongo
|
|
||||||
# - postgres
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
|
|
||||||
# Ensure your DATABASE_URI uses 'mongo' as the hostname ie. mongodb://mongo/my-db-name
|
|
||||||
mongo:
|
|
||||||
image: mongo:latest
|
|
||||||
ports:
|
|
||||||
- '27017:27017'
|
|
||||||
command:
|
|
||||||
- --storageEngine=wiredTiger
|
|
||||||
volumes:
|
|
||||||
- data:/data/db
|
|
||||||
logging:
|
|
||||||
driver: none
|
|
||||||
|
|
||||||
# Uncomment the following to use postgres
|
|
||||||
# postgres:
|
|
||||||
# restart: always
|
|
||||||
# image: postgres:latest
|
|
||||||
# volumes:
|
|
||||||
# - pgdata:/var/lib/postgresql/data
|
|
||||||
# ports:
|
|
||||||
# - "5432:5432"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
data:
|
|
||||||
# pgdata:
|
|
||||||
node_modules:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
import { withPayload } from '@payloadcms/next/withPayload'
|
|
||||||
|
|
||||||
/** @type {import('next').NextConfig} */
|
|
||||||
const nextConfig = {
|
|
||||||
// Your Next.js config here
|
|
||||||
}
|
|
||||||
|
|
||||||
export default withPayload(nextConfig)
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "template-blank-3.0",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "A blank template to get started with Payload 3.0",
|
|
||||||
"license": "MIT",
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
|
||||||
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
|
||||||
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
|
||||||
"generate:types": "payload generate:types",
|
|
||||||
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
|
||||||
"payload": "cross-env NODE_OPTIONS=--no-deprecation payload",
|
|
||||||
"start": "cross-env NODE_OPTIONS=--no-deprecation next start"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@payloadcms/db-mongodb": "beta",
|
|
||||||
"@payloadcms/next": "beta",
|
|
||||||
"@payloadcms/plugin-cloud": "beta",
|
|
||||||
"@payloadcms/richtext-lexical": "beta",
|
|
||||||
"cross-env": "^7.0.3",
|
|
||||||
"graphql": "^16.8.1",
|
|
||||||
"next": "15.0.0-canary.53",
|
|
||||||
"payload": "beta",
|
|
||||||
"react": "^19.0.0-rc-6230622a1a-20240610",
|
|
||||||
"react-dom": "^19.0.0-rc-6230622a1a-20240610",
|
|
||||||
"sharp": "0.32.6"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/node": "^20.12.12",
|
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.0",
|
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
|
||||||
"eslint": "^8",
|
|
||||||
"eslint-config-next": "15.0.0-canary.53",
|
|
||||||
"typescript": "5.5.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.20.2 || >=20.9.0"
|
|
||||||
},
|
|
||||||
"pnpm": {
|
|
||||||
"overrides": {
|
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.0",
|
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"overrides": {
|
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.0",
|
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
||||||
import type { Metadata } from 'next'
|
|
||||||
|
|
||||||
import config from '@payload-config'
|
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
||||||
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
|
||||||
|
|
||||||
type Args = {
|
|
||||||
params: {
|
|
||||||
segments: string[]
|
|
||||||
}
|
|
||||||
searchParams: {
|
|
||||||
[key: string]: string | string[]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
|
||||||
generatePageMetadata({ config, params, searchParams })
|
|
||||||
|
|
||||||
const NotFound = ({ params, searchParams }: Args) => NotFoundPage({ config, params, searchParams })
|
|
||||||
|
|
||||||
export default NotFound
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
||||||
import type { Metadata } from 'next'
|
|
||||||
|
|
||||||
import config from '@payload-config'
|
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
||||||
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
|
||||||
|
|
||||||
type Args = {
|
|
||||||
params: {
|
|
||||||
segments: string[]
|
|
||||||
}
|
|
||||||
searchParams: {
|
|
||||||
[key: string]: string | string[]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
|
||||||
generatePageMetadata({ config, params, searchParams })
|
|
||||||
|
|
||||||
const Page = ({ params, searchParams }: Args) => RootPage({ config, params, searchParams })
|
|
||||||
|
|
||||||
export default Page
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
||||||
/* DO NOT MODIFY it because it could be re-written at any time. */
|
|
||||||
import config from '@payload-config'
|
|
||||||
import { REST_DELETE, REST_GET, REST_OPTIONS, REST_PATCH, REST_POST } from '@payloadcms/next/routes'
|
|
||||||
|
|
||||||
export const GET = REST_GET(config)
|
|
||||||
export const POST = REST_POST(config)
|
|
||||||
export const DELETE = REST_DELETE(config)
|
|
||||||
export const PATCH = REST_PATCH(config)
|
|
||||||
export const OPTIONS = REST_OPTIONS(config)
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
||||||
/* DO NOT MODIFY it because it could be re-written at any time. */
|
|
||||||
import config from '@payload-config'
|
|
||||||
import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'
|
|
||||||
|
|
||||||
export const GET = GRAPHQL_PLAYGROUND_GET(config)
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
||||||
/* DO NOT MODIFY it because it could be re-written at any time. */
|
|
||||||
import config from '@payload-config'
|
|
||||||
import { GRAPHQL_POST } from '@payloadcms/next/routes'
|
|
||||||
|
|
||||||
export const POST = GRAPHQL_POST(config)
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
|
|
||||||
import configPromise from '@payload-config'
|
|
||||||
import '@payloadcms/next/css'
|
|
||||||
import { RootLayout } from '@payloadcms/next/layouts'
|
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
|
||||||
import React from 'react'
|
|
||||||
|
|
||||||
import './custom.scss'
|
|
||||||
|
|
||||||
type Args = {
|
|
||||||
children: React.ReactNode
|
|
||||||
}
|
|
||||||
|
|
||||||
const Layout = ({ children }: Args) => <RootLayout config={configPromise}>{children}</RootLayout>
|
|
||||||
|
|
||||||
export default Layout
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import configPromise from '@payload-config'
|
|
||||||
import { getPayload } from 'payload'
|
|
||||||
|
|
||||||
export const GET = async () => {
|
|
||||||
const payload = await getPayload({
|
|
||||||
config: configPromise,
|
|
||||||
})
|
|
||||||
|
|
||||||
const data = await payload.find({
|
|
||||||
collection: 'users',
|
|
||||||
})
|
|
||||||
|
|
||||||
return Response.json(data)
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import type { CollectionConfig } from 'payload'
|
|
||||||
|
|
||||||
export const Media: CollectionConfig = {
|
|
||||||
slug: 'media',
|
|
||||||
access: {
|
|
||||||
read: () => true,
|
|
||||||
},
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: 'alt',
|
|
||||||
type: 'text',
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
upload: true,
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import type { CollectionConfig } from 'payload'
|
|
||||||
|
|
||||||
export const Users: CollectionConfig = {
|
|
||||||
slug: 'users',
|
|
||||||
admin: {
|
|
||||||
useAsTitle: 'email',
|
|
||||||
},
|
|
||||||
auth: true,
|
|
||||||
fields: [
|
|
||||||
// Email added by default
|
|
||||||
// Add more fields as needed
|
|
||||||
],
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
// storage-adapter-import-placeholder
|
|
||||||
import { mongooseAdapter } from '@payloadcms/db-mongodb' // database-adapter-import
|
|
||||||
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'
|
|
||||||
|
|
||||||
const filename = fileURLToPath(import.meta.url)
|
|
||||||
const dirname = path.dirname(filename)
|
|
||||||
|
|
||||||
export default buildConfig({
|
|
||||||
admin: {
|
|
||||||
user: Users.slug,
|
|
||||||
},
|
|
||||||
collections: [Users, Media],
|
|
||||||
editor: lexicalEditor(),
|
|
||||||
secret: process.env.PAYLOAD_SECRET || '',
|
|
||||||
typescript: {
|
|
||||||
outputFile: path.resolve(dirname, 'payload-types.ts'),
|
|
||||||
},
|
|
||||||
// database-adapter-config-start
|
|
||||||
db: mongooseAdapter({
|
|
||||||
url: process.env.DATABASE_URI || '',
|
|
||||||
}),
|
|
||||||
// database-adapter-config-end
|
|
||||||
sharp,
|
|
||||||
plugins: [
|
|
||||||
// storage-adapter-placeholder
|
|
||||||
],
|
|
||||||
})
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"baseUrl": ".",
|
|
||||||
"lib": [
|
|
||||||
"dom",
|
|
||||||
"dom.iterable",
|
|
||||||
"esnext"
|
|
||||||
],
|
|
||||||
"allowJs": true,
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"strict": true,
|
|
||||||
"noEmit": true,
|
|
||||||
"esModuleInterop": true,
|
|
||||||
"module": "esnext",
|
|
||||||
"moduleResolution": "bundler",
|
|
||||||
"resolveJsonModule": true,
|
|
||||||
"isolatedModules": true,
|
|
||||||
"jsx": "preserve",
|
|
||||||
"incremental": true,
|
|
||||||
"plugins": [
|
|
||||||
{
|
|
||||||
"name": "next"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"paths": {
|
|
||||||
"@/*": [
|
|
||||||
"./src/*"
|
|
||||||
],
|
|
||||||
"@payload-config": [
|
|
||||||
"./src/payload.config.ts"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"target": "ES2017"
|
|
||||||
},
|
|
||||||
"include": [
|
|
||||||
"next-env.d.ts",
|
|
||||||
"**/*.ts",
|
|
||||||
"**/*.tsx",
|
|
||||||
".next/types/**/*.ts"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"node_modules"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "blank",
|
"name": "template-blank-3.0",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "A blank template to get started with Payload 3.0",
|
"description": "A blank template to get started with Payload 3.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -8,10 +8,11 @@
|
|||||||
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
||||||
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"generate:types": "payload generate:types",
|
|
||||||
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
||||||
"payload": "cross-env NODE_OPTIONS=--no-deprecation payload",
|
"start": "cross-env NODE_OPTIONS=--no-deprecation next start",
|
||||||
"start": "cross-env NODE_OPTIONS=--no-deprecation next start"
|
"payload": "payload",
|
||||||
|
"generate:types": "payload generate:types",
|
||||||
|
"generate:importmap": "payload generate:importmap"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@payloadcms/db-mongodb": "beta",
|
"@payloadcms/db-mongodb": "beta",
|
||||||
@@ -20,10 +21,10 @@
|
|||||||
"@payloadcms/richtext-lexical": "beta",
|
"@payloadcms/richtext-lexical": "beta",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"graphql": "^16.8.1",
|
"graphql": "^16.8.1",
|
||||||
"next": "15.0.0-canary.53",
|
"next": "15.0.0-canary.104",
|
||||||
"payload": "beta",
|
"payload": "beta",
|
||||||
"react": "19.0.0-rc-6230622a1a-20240610",
|
"react": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"react-dom": "19.0.0-rc-6230622a1a-20240610",
|
"react-dom": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"sharp": "0.32.6"
|
"sharp": "0.32.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -31,7 +32,7 @@
|
|||||||
"@types/react": "npm:types-react@19.0.0-rc.0",
|
"@types/react": "npm:types-react@19.0.0-rc.0",
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
||||||
"eslint": "^8",
|
"eslint": "^8",
|
||||||
"eslint-config-next": "15.0.0-canary.53",
|
"eslint-config-next": "15.0.0-canary.104",
|
||||||
"typescript": "5.5.4"
|
"typescript": "5.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const NotFound = ({ params, searchParams }: Args) => NotFoundPage({ config, params, searchParams })
|
const NotFound = ({ params, searchParams }: Args) =>
|
||||||
|
NotFoundPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default NotFound
|
export default NotFound
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const Page = ({ params, searchParams }: Args) => RootPage({ config, params, searchParams })
|
const Page = ({ params, searchParams }: Args) =>
|
||||||
|
RootPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default Page
|
export default Page
|
||||||
|
|||||||
5
templates/blank/src/app/(payload)/admin/importMap.js
Normal file
5
templates/blank/src/app/(payload)/admin/importMap.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import { emptyComponent as emptyComponent_0 } from '@payloadcms/ui/shared'
|
||||||
|
|
||||||
|
export const importMap = {
|
||||||
|
'@payloadcms/ui/shared#emptyComponent': emptyComponent_0,
|
||||||
|
}
|
||||||
@@ -6,11 +6,16 @@ import { RootLayout } from '@payloadcms/next/layouts'
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import './custom.scss'
|
import './custom.scss'
|
||||||
|
import { importMap } from './admin/importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}
|
}
|
||||||
|
|
||||||
const Layout = ({ children }: Args) => <RootLayout config={configPromise}>{children}</RootLayout>
|
const Layout = ({ children }: Args) => (
|
||||||
|
<RootLayout importMap={importMap} config={configPromise}>
|
||||||
|
{children}
|
||||||
|
</RootLayout>
|
||||||
|
)
|
||||||
|
|
||||||
export default Layout
|
export default Layout
|
||||||
|
|||||||
127
templates/blank/src/payload-types.ts
Normal file
127
templates/blank/src/payload-types.ts
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* This file was automatically generated by Payload.
|
||||||
|
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
|
||||||
|
* and re-run `payload generate:types` to regenerate this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface Config {
|
||||||
|
auth: {
|
||||||
|
users: UserAuthOperations;
|
||||||
|
};
|
||||||
|
collections: {
|
||||||
|
users: User;
|
||||||
|
media: Media;
|
||||||
|
'payload-preferences': PayloadPreference;
|
||||||
|
'payload-migrations': PayloadMigration;
|
||||||
|
};
|
||||||
|
db: {
|
||||||
|
defaultIDType: string;
|
||||||
|
};
|
||||||
|
globals: {};
|
||||||
|
locale: null;
|
||||||
|
user: User & {
|
||||||
|
collection: 'users';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface UserAuthOperations {
|
||||||
|
forgotPassword: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
login: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
registerFirstUser: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
unlock: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "users".
|
||||||
|
*/
|
||||||
|
export interface User {
|
||||||
|
id: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
email: string;
|
||||||
|
resetPasswordToken?: string | null;
|
||||||
|
resetPasswordExpiration?: string | null;
|
||||||
|
salt?: string | null;
|
||||||
|
hash?: string | null;
|
||||||
|
loginAttempts?: number | null;
|
||||||
|
lockUntil?: string | null;
|
||||||
|
password?: string | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "media".
|
||||||
|
*/
|
||||||
|
export interface Media {
|
||||||
|
id: string;
|
||||||
|
alt: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
url?: string | null;
|
||||||
|
thumbnailURL?: string | null;
|
||||||
|
filename?: string | null;
|
||||||
|
mimeType?: string | null;
|
||||||
|
filesize?: number | null;
|
||||||
|
width?: number | null;
|
||||||
|
height?: number | null;
|
||||||
|
focalX?: number | null;
|
||||||
|
focalY?: number | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-preferences".
|
||||||
|
*/
|
||||||
|
export interface PayloadPreference {
|
||||||
|
id: string;
|
||||||
|
user: {
|
||||||
|
relationTo: 'users';
|
||||||
|
value: string | User;
|
||||||
|
};
|
||||||
|
key?: string | null;
|
||||||
|
value?:
|
||||||
|
| {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
| unknown[]
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-migrations".
|
||||||
|
*/
|
||||||
|
export interface PayloadMigration {
|
||||||
|
id: string;
|
||||||
|
name?: string | null;
|
||||||
|
batch?: number | null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "auth".
|
||||||
|
*/
|
||||||
|
export interface Auth {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare module 'payload' {
|
||||||
|
export interface GeneratedTypes extends Config {}
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import { mongooseAdapter } from '@payloadcms/db-mongodb'
|
// storage-adapter-import-placeholder
|
||||||
|
import { mongooseAdapter } from '@payloadcms/db-mongodb' // database-adapter-import
|
||||||
import { lexicalEditor } from '@payloadcms/richtext-lexical'
|
import { lexicalEditor } from '@payloadcms/richtext-lexical'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import { buildConfig } from 'payload'
|
import { buildConfig } from 'payload'
|
||||||
@@ -14,6 +15,9 @@ const dirname = path.dirname(filename)
|
|||||||
export default buildConfig({
|
export default buildConfig({
|
||||||
admin: {
|
admin: {
|
||||||
user: Users.slug,
|
user: Users.slug,
|
||||||
|
importMap: {
|
||||||
|
baseDir: path.resolve(dirname),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
collections: [Users, Media],
|
collections: [Users, Media],
|
||||||
editor: lexicalEditor(),
|
editor: lexicalEditor(),
|
||||||
@@ -21,9 +25,13 @@ export default buildConfig({
|
|||||||
typescript: {
|
typescript: {
|
||||||
outputFile: path.resolve(dirname, 'payload-types.ts'),
|
outputFile: path.resolve(dirname, 'payload-types.ts'),
|
||||||
},
|
},
|
||||||
|
// database-adapter-config-start
|
||||||
db: mongooseAdapter({
|
db: mongooseAdapter({
|
||||||
url: process.env.DATABASE_URI || '',
|
url: process.env.DATABASE_URI || '',
|
||||||
}),
|
}),
|
||||||
|
// database-adapter-config-end
|
||||||
sharp,
|
sharp,
|
||||||
plugins: [],
|
plugins: [
|
||||||
|
// storage-adapter-placeholder
|
||||||
|
],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -7,26 +7,27 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
||||||
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"dev:prod": "cross-env NODE_OPTIONS=--no-deprecation rm -rf .next && pnpm build && pnpm serve",
|
"dev:prod": "cross-env NODE_OPTIONS=--no-deprecation rm -rf .next && pnpm build && pnpm start",
|
||||||
"generate:types": "cross-env NODE_OPTIONS=--no-deprecation payload generate:types",
|
|
||||||
"ii": "cross-env NODE_OPTIONS=--no-deprecation pnpm --ignore-workspace install",
|
"ii": "cross-env NODE_OPTIONS=--no-deprecation pnpm --ignore-workspace install",
|
||||||
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
||||||
"lint:fix": "cross-env NODE_OPTIONS=--no-deprecation next lint --fix",
|
"lint:fix": "cross-env NODE_OPTIONS=--no-deprecation next lint --fix",
|
||||||
"payload": "cross-env NODE_OPTIONS=--no-deprecation payload",
|
|
||||||
"reinstall": "cross-env NODE_OPTIONS=--no-deprecation rm -rf node_modules && rm pnpm-lock.yaml && pnpm --ignore-workspace install",
|
"reinstall": "cross-env NODE_OPTIONS=--no-deprecation rm -rf node_modules && rm pnpm-lock.yaml && pnpm --ignore-workspace install",
|
||||||
"start": "cross-env NODE_OPTIONS=--no-deprecation next start"
|
"start": "cross-env NODE_OPTIONS=--no-deprecation next start",
|
||||||
|
"payload": "payload",
|
||||||
|
"generate:types": "payload generate:types",
|
||||||
|
"generate:importmap": "payload generate:importmap"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@payloadcms/db-mongodb": "3.0.0-beta.67",
|
"@payloadcms/db-mongodb": "3.0.0-beta.79",
|
||||||
"@payloadcms/live-preview-react": "3.0.0-beta.67",
|
"@payloadcms/live-preview-react": "3.0.0-beta.79",
|
||||||
"@payloadcms/next": "3.0.0-beta.67",
|
"@payloadcms/next": "3.0.0-beta.79",
|
||||||
"@payloadcms/plugin-cloud": "3.0.0-beta.67",
|
"@payloadcms/plugin-cloud": "3.0.0-beta.79",
|
||||||
"@payloadcms/plugin-form-builder": "3.0.0-beta.67",
|
"@payloadcms/plugin-form-builder": "3.0.0-beta.79",
|
||||||
"@payloadcms/plugin-nested-docs": "3.0.0-beta.67",
|
"@payloadcms/plugin-nested-docs": "3.0.0-beta.79",
|
||||||
"@payloadcms/plugin-redirects": "3.0.0-beta.67",
|
"@payloadcms/plugin-redirects": "3.0.0-beta.79",
|
||||||
"@payloadcms/plugin-seo": "3.0.0-beta.67",
|
"@payloadcms/plugin-seo": "3.0.0-beta.79",
|
||||||
"@payloadcms/richtext-lexical": "3.0.0-beta.67",
|
"@payloadcms/richtext-lexical": "3.0.0-beta.79",
|
||||||
"@payloadcms/ui": "3.0.0-beta.67",
|
"@payloadcms/ui": "3.0.0-beta.79",
|
||||||
"@radix-ui/react-checkbox": "^1.0.4",
|
"@radix-ui/react-checkbox": "^1.0.4",
|
||||||
"@radix-ui/react-label": "^2.0.2",
|
"@radix-ui/react-label": "^2.0.2",
|
||||||
"@radix-ui/react-select": "^2.0.0",
|
"@radix-ui/react-select": "^2.0.0",
|
||||||
@@ -35,16 +36,16 @@
|
|||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"geist": "^1.3.0",
|
"geist": "^1.3.0",
|
||||||
"graphql": "^16.8.1",
|
"graphql": "^16.8.2",
|
||||||
"jsonwebtoken": "9.0.1",
|
"jsonwebtoken": "9.0.1",
|
||||||
"lexical": "0.16.1",
|
"lexical": "0.17.0",
|
||||||
"lucide-react": "^0.378.0",
|
"lucide-react": "^0.378.0",
|
||||||
"next": "15.0.0-canary.58",
|
"next": "15.0.0-canary.104",
|
||||||
"payload": "3.0.0-beta.67",
|
"payload": "3.0.0-beta.79",
|
||||||
"payload-admin-bar": "^1.0.6",
|
"payload-admin-bar": "^1.0.6",
|
||||||
"prism-react-renderer": "^2.3.1",
|
"prism-react-renderer": "^2.3.1",
|
||||||
"react": "19.0.0-rc-6230622a1a-20240610",
|
"react": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"react-dom": "19.0.0-rc-6230622a1a-20240610",
|
"react-dom": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"react-hook-form": "7.45.4",
|
"react-hook-form": "7.45.4",
|
||||||
"sharp": "0.32.6",
|
"sharp": "0.32.6",
|
||||||
"tailwind-merge": "^2.3.0",
|
"tailwind-merge": "^2.3.0",
|
||||||
@@ -61,7 +62,7 @@
|
|||||||
"autoprefixer": "^10.4.19",
|
"autoprefixer": "^10.4.19",
|
||||||
"copyfiles": "^2.4.1",
|
"copyfiles": "^2.4.1",
|
||||||
"eslint": "^8",
|
"eslint": "^8",
|
||||||
"eslint-config-next": "15.0.0-canary.58",
|
"eslint-config-next": "15.0.0-canary.104",
|
||||||
"postcss": "^8.4.38",
|
"postcss": "^8.4.38",
|
||||||
"prettier": "^3.0.3",
|
"prettier": "^3.0.3",
|
||||||
"tailwindcss": "^3.4.3",
|
"tailwindcss": "^3.4.3",
|
||||||
|
|||||||
9094
templates/website/pnpm-lock.yaml
generated
9094
templates/website/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const NotFound = ({ params, searchParams }: Args) => NotFoundPage({ config, params, searchParams })
|
const NotFound = ({ params, searchParams }: Args) =>
|
||||||
|
NotFoundPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default NotFound
|
export default NotFound
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const Page = ({ params, searchParams }: Args) => RootPage({ config, params, searchParams })
|
const Page = ({ params, searchParams }: Args) =>
|
||||||
|
RootPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default Page
|
export default Page
|
||||||
|
|||||||
44
templates/website/src/app/(payload)/admin/importMap.js
Normal file
44
templates/website/src/app/(payload)/admin/importMap.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import { RichTextCell as RichTextCell_0 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { RichTextField as RichTextField_1 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { getGenerateComponentMap as getGenerateComponentMap_2 } from '@payloadcms/richtext-lexical/generateComponentMap'
|
||||||
|
import { InlineToolbarFeatureClient as InlineToolbarFeatureClient_3 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { FixedToolbarFeatureClient as FixedToolbarFeatureClient_4 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { HeadingFeatureClient as HeadingFeatureClient_5 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { UnderlineFeatureClient as UnderlineFeatureClient_6 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { BoldFeatureClient as BoldFeatureClient_7 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { ItalicFeatureClient as ItalicFeatureClient_8 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { LinkFeatureClient as LinkFeatureClient_9 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { OverviewComponent as OverviewComponent_10 } from '@payloadcms/plugin-seo/client'
|
||||||
|
import { MetaTitleComponent as MetaTitleComponent_11 } from '@payloadcms/plugin-seo/client'
|
||||||
|
import { MetaImageComponent as MetaImageComponent_12 } from '@payloadcms/plugin-seo/client'
|
||||||
|
import { MetaDescriptionComponent as MetaDescriptionComponent_13 } from '@payloadcms/plugin-seo/client'
|
||||||
|
import { PreviewComponent as PreviewComponent_14 } from '@payloadcms/plugin-seo/client'
|
||||||
|
import { emptyComponent as emptyComponent_15 } from '@payloadcms/ui/shared'
|
||||||
|
import { HorizontalRuleFeatureClient as HorizontalRuleFeatureClient_16 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { BlocksFeatureClient as BlocksFeatureClient_17 } from '@payloadcms/richtext-lexical/client'
|
||||||
|
import { default as default_18 } from 'src/payload/components/BeforeDashboard'
|
||||||
|
import { default as default_19 } from 'src/payload/components/BeforeLogin'
|
||||||
|
|
||||||
|
export const importMap = {
|
||||||
|
'@payloadcms/richtext-lexical/client#RichTextCell': RichTextCell_0,
|
||||||
|
'@payloadcms/richtext-lexical/client#RichTextField': RichTextField_1,
|
||||||
|
'@payloadcms/richtext-lexical/generateComponentMap#getGenerateComponentMap':
|
||||||
|
getGenerateComponentMap_2,
|
||||||
|
'@payloadcms/richtext-lexical/client#InlineToolbarFeatureClient': InlineToolbarFeatureClient_3,
|
||||||
|
'@payloadcms/richtext-lexical/client#FixedToolbarFeatureClient': FixedToolbarFeatureClient_4,
|
||||||
|
'@payloadcms/richtext-lexical/client#HeadingFeatureClient': HeadingFeatureClient_5,
|
||||||
|
'@payloadcms/richtext-lexical/client#UnderlineFeatureClient': UnderlineFeatureClient_6,
|
||||||
|
'@payloadcms/richtext-lexical/client#BoldFeatureClient': BoldFeatureClient_7,
|
||||||
|
'@payloadcms/richtext-lexical/client#ItalicFeatureClient': ItalicFeatureClient_8,
|
||||||
|
'@payloadcms/richtext-lexical/client#LinkFeatureClient': LinkFeatureClient_9,
|
||||||
|
'@payloadcms/plugin-seo/client#OverviewComponent': OverviewComponent_10,
|
||||||
|
'@payloadcms/plugin-seo/client#MetaTitleComponent': MetaTitleComponent_11,
|
||||||
|
'@payloadcms/plugin-seo/client#MetaImageComponent': MetaImageComponent_12,
|
||||||
|
'@payloadcms/plugin-seo/client#MetaDescriptionComponent': MetaDescriptionComponent_13,
|
||||||
|
'@payloadcms/plugin-seo/client#PreviewComponent': PreviewComponent_14,
|
||||||
|
'@payloadcms/ui/shared#emptyComponent': emptyComponent_15,
|
||||||
|
'@payloadcms/richtext-lexical/client#HorizontalRuleFeatureClient': HorizontalRuleFeatureClient_16,
|
||||||
|
'@payloadcms/richtext-lexical/client#BlocksFeatureClient': BlocksFeatureClient_17,
|
||||||
|
'/payload/components/BeforeDashboard#default': default_18,
|
||||||
|
'/payload/components/BeforeLogin#default': default_19,
|
||||||
|
}
|
||||||
@@ -6,11 +6,16 @@ import { RootLayout } from '@payloadcms/next/layouts'
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import './custom.scss'
|
import './custom.scss'
|
||||||
|
import { importMap } from './admin/importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}
|
}
|
||||||
|
|
||||||
const Layout = ({ children }: Args) => <RootLayout config={configPromise}>{children}</RootLayout>
|
const Layout = ({ children }: Args) => (
|
||||||
|
<RootLayout importMap={importMap} config={configPromise}>
|
||||||
|
{children}
|
||||||
|
</RootLayout>
|
||||||
|
)
|
||||||
|
|
||||||
export default Layout
|
export default Layout
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import type { Page } from '../../../payload-types'
|
|||||||
export type NodeTypes =
|
export type NodeTypes =
|
||||||
| DefaultNodeTypes
|
| DefaultNodeTypes
|
||||||
| SerializedBlockNode<
|
| SerializedBlockNode<
|
||||||
|
// @ts-ignore // TODO: Fix this
|
||||||
| Extract<Page['layout'][0], { blockType: 'cta' }>
|
| Extract<Page['layout'][0], { blockType: 'cta' }>
|
||||||
| Extract<Page['layout'][0], { blockType: 'mediaBlock' }>
|
| Extract<Page['layout'][0], { blockType: 'mediaBlock' }>
|
||||||
| BannerBlockProps
|
| BannerBlockProps
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import canUseDOM from '../../utilities/canUseDOM'
|
|||||||
|
|
||||||
export interface ContextType {
|
export interface ContextType {
|
||||||
headerTheme?: Theme | null
|
headerTheme?: Theme | null
|
||||||
setHeaderTheme: (theme: Theme | null) => void
|
setHeaderTheme: (theme: Theme | null) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const initialContext: ContextType = {
|
const initialContext: ContextType = {
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ export interface Config {
|
|||||||
'payload-preferences': PayloadPreference;
|
'payload-preferences': PayloadPreference;
|
||||||
'payload-migrations': PayloadMigration;
|
'payload-migrations': PayloadMigration;
|
||||||
};
|
};
|
||||||
|
db: {
|
||||||
|
defaultIDType: string;
|
||||||
|
};
|
||||||
globals: {
|
globals: {
|
||||||
header: Header;
|
header: Header;
|
||||||
footer: Footer;
|
footer: Footer;
|
||||||
@@ -34,15 +37,20 @@ export interface Config {
|
|||||||
export interface UserAuthOperations {
|
export interface UserAuthOperations {
|
||||||
forgotPassword: {
|
forgotPassword: {
|
||||||
email: string;
|
email: string;
|
||||||
|
password: string;
|
||||||
};
|
};
|
||||||
login: {
|
login: {
|
||||||
password: string;
|
|
||||||
email: string;
|
email: string;
|
||||||
|
password: string;
|
||||||
};
|
};
|
||||||
registerFirstUser: {
|
registerFirstUser: {
|
||||||
email: string;
|
email: string;
|
||||||
password: string;
|
password: string;
|
||||||
};
|
};
|
||||||
|
unlock: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This interface was referenced by `Config`'s JSON-Schema
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ import { Media } from './payload/collections/Media'
|
|||||||
import { Pages } from './payload/collections/Pages'
|
import { Pages } from './payload/collections/Pages'
|
||||||
import { Posts } from './payload/collections/Posts'
|
import { Posts } from './payload/collections/Posts'
|
||||||
import Users from './payload/collections/Users'
|
import Users from './payload/collections/Users'
|
||||||
import BeforeDashboard from './payload/components/BeforeDashboard'
|
|
||||||
import BeforeLogin from './payload/components/BeforeLogin'
|
|
||||||
import { seed } from './payload/endpoints/seed'
|
import { seed } from './payload/endpoints/seed'
|
||||||
import { Footer } from './payload/globals/Footer/Footer'
|
import { Footer } from './payload/globals/Footer/Footer'
|
||||||
import { Header } from './payload/globals/Header/Header'
|
import { Header } from './payload/globals/Header/Header'
|
||||||
@@ -52,10 +50,13 @@ export default buildConfig({
|
|||||||
components: {
|
components: {
|
||||||
// The `BeforeLogin` component renders a message that you see while logging into your admin panel.
|
// The `BeforeLogin` component renders a message that you see while logging into your admin panel.
|
||||||
// Feel free to delete this at any time. Simply remove the line below and the import `BeforeLogin` statement on line 15.
|
// Feel free to delete this at any time. Simply remove the line below and the import `BeforeLogin` statement on line 15.
|
||||||
beforeLogin: [BeforeLogin],
|
beforeLogin: ['/payload/components/BeforeLogin'],
|
||||||
// The `BeforeDashboard` component renders the 'welcome' block that you see after logging into your admin panel.
|
// The `BeforeDashboard` component renders the 'welcome' block that you see after logging into your admin panel.
|
||||||
// Feel free to delete this at any time. Simply remove the line below and the import `BeforeDashboard` statement on line 15.
|
// Feel free to delete this at any time. Simply remove the line below and the import `BeforeDashboard` statement on line 15.
|
||||||
beforeDashboard: [BeforeDashboard],
|
beforeDashboard: ['/payload/components/BeforeDashboard'],
|
||||||
|
},
|
||||||
|
importMap: {
|
||||||
|
baseDir: path.resolve(dirname),
|
||||||
},
|
},
|
||||||
user: Users.slug,
|
user: Users.slug,
|
||||||
livePreview: {
|
livePreview: {
|
||||||
|
|||||||
@@ -8,10 +8,11 @@
|
|||||||
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
||||||
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"generate:types": "payload generate:types",
|
|
||||||
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
||||||
"payload": "cross-env NODE_OPTIONS=--no-deprecation payload",
|
"start": "cross-env NODE_OPTIONS=--no-deprecation next start",
|
||||||
"start": "cross-env NODE_OPTIONS=--no-deprecation next start"
|
"payload": "payload",
|
||||||
|
"generate:types": "payload generate:types",
|
||||||
|
"generate:importmap": "payload generate:importmap"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@payloadcms/db-mongodb": "beta",
|
"@payloadcms/db-mongodb": "beta",
|
||||||
@@ -20,10 +21,10 @@
|
|||||||
"@payloadcms/richtext-lexical": "beta",
|
"@payloadcms/richtext-lexical": "beta",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"graphql": "^16.8.1",
|
"graphql": "^16.8.1",
|
||||||
"next": "15.0.0-canary.53",
|
"next": "15.0.0-canary.104",
|
||||||
"payload": "beta",
|
"payload": "beta",
|
||||||
"react": "19.0.0-rc-6230622a1a-20240610",
|
"react": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"react-dom": "19.0.0-rc-6230622a1a-20240610",
|
"react-dom": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"sharp": "0.32.6"
|
"sharp": "0.32.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -31,7 +32,7 @@
|
|||||||
"@types/react": "npm:types-react@19.0.0-rc.0",
|
"@types/react": "npm:types-react@19.0.0-rc.0",
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
||||||
"eslint": "^8",
|
"eslint": "^8",
|
||||||
"eslint-config-next": "15.0.0-canary.53",
|
"eslint-config-next": "15.0.0-canary.104",
|
||||||
"typescript": "5.5.4"
|
"typescript": "5.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const NotFound = ({ params, searchParams }: Args) => NotFoundPage({ config, params, searchParams })
|
const NotFound = ({ params, searchParams }: Args) =>
|
||||||
|
NotFoundPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default NotFound
|
export default NotFound
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const Page = ({ params, searchParams }: Args) => RootPage({ config, params, searchParams })
|
const Page = ({ params, searchParams }: Args) =>
|
||||||
|
RootPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default Page
|
export default Page
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { emptyComponent as emptyComponent_0 } from '@payloadcms/ui/shared'
|
||||||
|
|
||||||
|
export const importMap = {
|
||||||
|
'@payloadcms/ui/shared#emptyComponent': emptyComponent_0,
|
||||||
|
}
|
||||||
@@ -6,11 +6,16 @@ import { RootLayout } from '@payloadcms/next/layouts'
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import './custom.scss'
|
import './custom.scss'
|
||||||
|
import { importMap } from './admin/importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}
|
}
|
||||||
|
|
||||||
const Layout = ({ children }: Args) => <RootLayout config={configPromise}>{children}</RootLayout>
|
const Layout = ({ children }: Args) => (
|
||||||
|
<RootLayout importMap={importMap} config={configPromise}>
|
||||||
|
{children}
|
||||||
|
</RootLayout>
|
||||||
|
)
|
||||||
|
|
||||||
export default Layout
|
export default Layout
|
||||||
|
|||||||
127
templates/with-payload-cloud/src/payload-types.ts
Normal file
127
templates/with-payload-cloud/src/payload-types.ts
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* This file was automatically generated by Payload.
|
||||||
|
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
|
||||||
|
* and re-run `payload generate:types` to regenerate this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface Config {
|
||||||
|
auth: {
|
||||||
|
users: UserAuthOperations;
|
||||||
|
};
|
||||||
|
collections: {
|
||||||
|
users: User;
|
||||||
|
media: Media;
|
||||||
|
'payload-preferences': PayloadPreference;
|
||||||
|
'payload-migrations': PayloadMigration;
|
||||||
|
};
|
||||||
|
db: {
|
||||||
|
defaultIDType: string;
|
||||||
|
};
|
||||||
|
globals: {};
|
||||||
|
locale: null;
|
||||||
|
user: User & {
|
||||||
|
collection: 'users';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface UserAuthOperations {
|
||||||
|
forgotPassword: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
login: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
registerFirstUser: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
unlock: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "users".
|
||||||
|
*/
|
||||||
|
export interface User {
|
||||||
|
id: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
email: string;
|
||||||
|
resetPasswordToken?: string | null;
|
||||||
|
resetPasswordExpiration?: string | null;
|
||||||
|
salt?: string | null;
|
||||||
|
hash?: string | null;
|
||||||
|
loginAttempts?: number | null;
|
||||||
|
lockUntil?: string | null;
|
||||||
|
password?: string | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "media".
|
||||||
|
*/
|
||||||
|
export interface Media {
|
||||||
|
id: string;
|
||||||
|
alt: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
url?: string | null;
|
||||||
|
thumbnailURL?: string | null;
|
||||||
|
filename?: string | null;
|
||||||
|
mimeType?: string | null;
|
||||||
|
filesize?: number | null;
|
||||||
|
width?: number | null;
|
||||||
|
height?: number | null;
|
||||||
|
focalX?: number | null;
|
||||||
|
focalY?: number | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-preferences".
|
||||||
|
*/
|
||||||
|
export interface PayloadPreference {
|
||||||
|
id: string;
|
||||||
|
user: {
|
||||||
|
relationTo: 'users';
|
||||||
|
value: string | User;
|
||||||
|
};
|
||||||
|
key?: string | null;
|
||||||
|
value?:
|
||||||
|
| {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
| unknown[]
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-migrations".
|
||||||
|
*/
|
||||||
|
export interface PayloadMigration {
|
||||||
|
id: string;
|
||||||
|
name?: string | null;
|
||||||
|
batch?: number | null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "auth".
|
||||||
|
*/
|
||||||
|
export interface Auth {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare module 'payload' {
|
||||||
|
export interface GeneratedTypes extends Config {}
|
||||||
|
}
|
||||||
@@ -15,6 +15,9 @@ const dirname = path.dirname(filename)
|
|||||||
export default buildConfig({
|
export default buildConfig({
|
||||||
admin: {
|
admin: {
|
||||||
user: Users.slug,
|
user: Users.slug,
|
||||||
|
importMap: {
|
||||||
|
baseDir: path.resolve(dirname),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
collections: [Users, Media],
|
collections: [Users, Media],
|
||||||
editor: lexicalEditor(),
|
editor: lexicalEditor(),
|
||||||
|
|||||||
@@ -8,30 +8,31 @@
|
|||||||
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
||||||
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"generate:types": "payload generate:types",
|
|
||||||
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
||||||
"payload": "cross-env NODE_OPTIONS=--no-deprecation payload",
|
"start": "cross-env NODE_OPTIONS=--no-deprecation next start",
|
||||||
"start": "cross-env NODE_OPTIONS=--no-deprecation next start"
|
"payload": "payload",
|
||||||
|
"generate:types": "payload generate:types",
|
||||||
|
"generate:importmap": "payload generate:importmap"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@payloadcms/db-mongodb": "beta",
|
"@payloadcms/db-mongodb": "beta",
|
||||||
"@payloadcms/next": "beta",
|
"@payloadcms/next": "beta",
|
||||||
"@payloadcms/plugin-cloud": "beta",
|
"@payloadcms/plugin-cloud": "beta",
|
||||||
"@payloadcms/richtext-lexical": "beta",
|
"@payloadcms/richtext-lexical": "beta",
|
||||||
"@payloadcms/storage-vercel-blob": "beta",
|
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"graphql": "^16.8.1",
|
"graphql": "^16.8.1",
|
||||||
"next": "15.0.0-canary.53",
|
"next": "15.0.0-canary.104",
|
||||||
"payload": "beta",
|
"payload": "beta",
|
||||||
"react": "19.0.0-rc-6230622a1a-20240610",
|
"react": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"react-dom": "19.0.0-rc-6230622a1a-20240610"
|
"react-dom": "19.0.0-rc-06d0b89e-20240801",
|
||||||
|
"@payloadcms/storage-vercel-blob": "beta"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.14.9",
|
"@types/node": "^20.14.9",
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.0",
|
"@types/react": "npm:types-react@19.0.0-rc.0",
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
||||||
"eslint": "^8",
|
"eslint": "^8",
|
||||||
"eslint-config-next": "15.0.0-canary.53",
|
"eslint-config-next": "15.0.0-canary.104",
|
||||||
"typescript": "5.5.4"
|
"typescript": "5.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const NotFound = ({ params, searchParams }: Args) => NotFoundPage({ config, params, searchParams })
|
const NotFound = ({ params, searchParams }: Args) =>
|
||||||
|
NotFoundPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default NotFound
|
export default NotFound
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const Page = ({ params, searchParams }: Args) => RootPage({ config, params, searchParams })
|
const Page = ({ params, searchParams }: Args) =>
|
||||||
|
RootPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default Page
|
export default Page
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { emptyComponent as emptyComponent_0 } from '@payloadcms/ui/shared'
|
||||||
|
|
||||||
|
export const importMap = {
|
||||||
|
'@payloadcms/ui/shared#emptyComponent': emptyComponent_0,
|
||||||
|
}
|
||||||
@@ -6,11 +6,16 @@ import { RootLayout } from '@payloadcms/next/layouts'
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import './custom.scss'
|
import './custom.scss'
|
||||||
|
import { importMap } from './admin/importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}
|
}
|
||||||
|
|
||||||
const Layout = ({ children }: Args) => <RootLayout config={configPromise}>{children}</RootLayout>
|
const Layout = ({ children }: Args) => (
|
||||||
|
<RootLayout importMap={importMap} config={configPromise}>
|
||||||
|
{children}
|
||||||
|
</RootLayout>
|
||||||
|
)
|
||||||
|
|
||||||
export default Layout
|
export default Layout
|
||||||
|
|||||||
127
templates/with-vercel-mongodb/src/payload-types.ts
Normal file
127
templates/with-vercel-mongodb/src/payload-types.ts
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* This file was automatically generated by Payload.
|
||||||
|
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
|
||||||
|
* and re-run `payload generate:types` to regenerate this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface Config {
|
||||||
|
auth: {
|
||||||
|
users: UserAuthOperations;
|
||||||
|
};
|
||||||
|
collections: {
|
||||||
|
users: User;
|
||||||
|
media: Media;
|
||||||
|
'payload-preferences': PayloadPreference;
|
||||||
|
'payload-migrations': PayloadMigration;
|
||||||
|
};
|
||||||
|
db: {
|
||||||
|
defaultIDType: string;
|
||||||
|
};
|
||||||
|
globals: {};
|
||||||
|
locale: null;
|
||||||
|
user: User & {
|
||||||
|
collection: 'users';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface UserAuthOperations {
|
||||||
|
forgotPassword: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
login: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
registerFirstUser: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
unlock: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "users".
|
||||||
|
*/
|
||||||
|
export interface User {
|
||||||
|
id: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
email: string;
|
||||||
|
resetPasswordToken?: string | null;
|
||||||
|
resetPasswordExpiration?: string | null;
|
||||||
|
salt?: string | null;
|
||||||
|
hash?: string | null;
|
||||||
|
loginAttempts?: number | null;
|
||||||
|
lockUntil?: string | null;
|
||||||
|
password?: string | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "media".
|
||||||
|
*/
|
||||||
|
export interface Media {
|
||||||
|
id: string;
|
||||||
|
alt: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
url?: string | null;
|
||||||
|
thumbnailURL?: string | null;
|
||||||
|
filename?: string | null;
|
||||||
|
mimeType?: string | null;
|
||||||
|
filesize?: number | null;
|
||||||
|
width?: number | null;
|
||||||
|
height?: number | null;
|
||||||
|
focalX?: number | null;
|
||||||
|
focalY?: number | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-preferences".
|
||||||
|
*/
|
||||||
|
export interface PayloadPreference {
|
||||||
|
id: string;
|
||||||
|
user: {
|
||||||
|
relationTo: 'users';
|
||||||
|
value: string | User;
|
||||||
|
};
|
||||||
|
key?: string | null;
|
||||||
|
value?:
|
||||||
|
| {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
| unknown[]
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-migrations".
|
||||||
|
*/
|
||||||
|
export interface PayloadMigration {
|
||||||
|
id: string;
|
||||||
|
name?: string | null;
|
||||||
|
batch?: number | null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "auth".
|
||||||
|
*/
|
||||||
|
export interface Auth {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare module 'payload' {
|
||||||
|
export interface GeneratedTypes extends Config {}
|
||||||
|
}
|
||||||
@@ -14,6 +14,9 @@ const dirname = path.dirname(filename)
|
|||||||
export default buildConfig({
|
export default buildConfig({
|
||||||
admin: {
|
admin: {
|
||||||
user: Users.slug,
|
user: Users.slug,
|
||||||
|
importMap: {
|
||||||
|
baseDir: path.resolve(dirname),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
collections: [Users, Media],
|
collections: [Users, Media],
|
||||||
editor: lexicalEditor(),
|
editor: lexicalEditor(),
|
||||||
|
|||||||
@@ -8,30 +8,31 @@
|
|||||||
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
"build": "cross-env NODE_OPTIONS=--no-deprecation next build",
|
||||||
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"dev": "cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
"devsafe": "rm -rf .next && cross-env NODE_OPTIONS=--no-deprecation next dev",
|
||||||
"generate:types": "payload generate:types",
|
|
||||||
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
"lint": "cross-env NODE_OPTIONS=--no-deprecation next lint",
|
||||||
"payload": "cross-env NODE_OPTIONS=--no-deprecation payload",
|
"start": "cross-env NODE_OPTIONS=--no-deprecation next start",
|
||||||
"start": "cross-env NODE_OPTIONS=--no-deprecation next start"
|
"payload": "payload",
|
||||||
|
"generate:types": "payload generate:types",
|
||||||
|
"generate:importmap": "payload generate:importmap"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@payloadcms/db-postgres": "beta",
|
|
||||||
"@payloadcms/next": "beta",
|
"@payloadcms/next": "beta",
|
||||||
"@payloadcms/plugin-cloud": "beta",
|
"@payloadcms/plugin-cloud": "beta",
|
||||||
"@payloadcms/richtext-lexical": "beta",
|
"@payloadcms/richtext-lexical": "beta",
|
||||||
"@payloadcms/storage-vercel-blob": "beta",
|
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"graphql": "^16.8.1",
|
"graphql": "^16.8.1",
|
||||||
"next": "15.0.0-canary.53",
|
"next": "15.0.0-canary.104",
|
||||||
"payload": "beta",
|
"payload": "beta",
|
||||||
"react": "19.0.0-rc-6230622a1a-20240610",
|
"react": "19.0.0-rc-06d0b89e-20240801",
|
||||||
"react-dom": "19.0.0-rc-6230622a1a-20240610"
|
"react-dom": "19.0.0-rc-06d0b89e-20240801",
|
||||||
|
"@payloadcms/db-postgres": "beta",
|
||||||
|
"@payloadcms/storage-vercel-blob": "beta"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.14.9",
|
"@types/node": "^20.14.9",
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.0",
|
"@types/react": "npm:types-react@19.0.0-rc.0",
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
||||||
"eslint": "^8",
|
"eslint": "^8",
|
||||||
"eslint-config-next": "15.0.0-canary.53",
|
"eslint-config-next": "15.0.0-canary.104",
|
||||||
"typescript": "5.5.4"
|
"typescript": "5.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const NotFound = ({ params, searchParams }: Args) => NotFoundPage({ config, params, searchParams })
|
const NotFound = ({ params, searchParams }: Args) =>
|
||||||
|
NotFoundPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default NotFound
|
export default NotFound
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Metadata } from 'next'
|
|||||||
import config from '@payload-config'
|
import config from '@payload-config'
|
||||||
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
|
||||||
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
|
||||||
|
import { importMap } from '../importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
params: {
|
params: {
|
||||||
@@ -17,6 +18,7 @@ type Args = {
|
|||||||
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
|
||||||
generatePageMetadata({ config, params, searchParams })
|
generatePageMetadata({ config, params, searchParams })
|
||||||
|
|
||||||
const Page = ({ params, searchParams }: Args) => RootPage({ config, params, searchParams })
|
const Page = ({ params, searchParams }: Args) =>
|
||||||
|
RootPage({ config, params, searchParams, importMap })
|
||||||
|
|
||||||
export default Page
|
export default Page
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { emptyComponent as emptyComponent_0 } from '@payloadcms/ui/shared'
|
||||||
|
|
||||||
|
export const importMap = {
|
||||||
|
'@payloadcms/ui/shared#emptyComponent': emptyComponent_0,
|
||||||
|
}
|
||||||
@@ -6,11 +6,16 @@ import { RootLayout } from '@payloadcms/next/layouts'
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import './custom.scss'
|
import './custom.scss'
|
||||||
|
import { importMap } from './admin/importMap'
|
||||||
|
|
||||||
type Args = {
|
type Args = {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}
|
}
|
||||||
|
|
||||||
const Layout = ({ children }: Args) => <RootLayout config={configPromise}>{children}</RootLayout>
|
const Layout = ({ children }: Args) => (
|
||||||
|
<RootLayout importMap={importMap} config={configPromise}>
|
||||||
|
{children}
|
||||||
|
</RootLayout>
|
||||||
|
)
|
||||||
|
|
||||||
export default Layout
|
export default Layout
|
||||||
|
|||||||
127
templates/with-vercel-postgres/src/payload-types.ts
Normal file
127
templates/with-vercel-postgres/src/payload-types.ts
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* This file was automatically generated by Payload.
|
||||||
|
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
|
||||||
|
* and re-run `payload generate:types` to regenerate this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface Config {
|
||||||
|
auth: {
|
||||||
|
users: UserAuthOperations;
|
||||||
|
};
|
||||||
|
collections: {
|
||||||
|
users: User;
|
||||||
|
media: Media;
|
||||||
|
'payload-preferences': PayloadPreference;
|
||||||
|
'payload-migrations': PayloadMigration;
|
||||||
|
};
|
||||||
|
db: {
|
||||||
|
defaultIDType: string;
|
||||||
|
};
|
||||||
|
globals: {};
|
||||||
|
locale: null;
|
||||||
|
user: User & {
|
||||||
|
collection: 'users';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface UserAuthOperations {
|
||||||
|
forgotPassword: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
login: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
registerFirstUser: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
unlock: {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "users".
|
||||||
|
*/
|
||||||
|
export interface User {
|
||||||
|
id: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
email: string;
|
||||||
|
resetPasswordToken?: string | null;
|
||||||
|
resetPasswordExpiration?: string | null;
|
||||||
|
salt?: string | null;
|
||||||
|
hash?: string | null;
|
||||||
|
loginAttempts?: number | null;
|
||||||
|
lockUntil?: string | null;
|
||||||
|
password?: string | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "media".
|
||||||
|
*/
|
||||||
|
export interface Media {
|
||||||
|
id: string;
|
||||||
|
alt: string;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
url?: string | null;
|
||||||
|
thumbnailURL?: string | null;
|
||||||
|
filename?: string | null;
|
||||||
|
mimeType?: string | null;
|
||||||
|
filesize?: number | null;
|
||||||
|
width?: number | null;
|
||||||
|
height?: number | null;
|
||||||
|
focalX?: number | null;
|
||||||
|
focalY?: number | null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-preferences".
|
||||||
|
*/
|
||||||
|
export interface PayloadPreference {
|
||||||
|
id: string;
|
||||||
|
user: {
|
||||||
|
relationTo: 'users';
|
||||||
|
value: string | User;
|
||||||
|
};
|
||||||
|
key?: string | null;
|
||||||
|
value?:
|
||||||
|
| {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
| unknown[]
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "payload-migrations".
|
||||||
|
*/
|
||||||
|
export interface PayloadMigration {
|
||||||
|
id: string;
|
||||||
|
name?: string | null;
|
||||||
|
batch?: number | null;
|
||||||
|
updatedAt: string;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Config`'s JSON-Schema
|
||||||
|
* via the `definition` "auth".
|
||||||
|
*/
|
||||||
|
export interface Auth {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare module 'payload' {
|
||||||
|
export interface GeneratedTypes extends Config {}
|
||||||
|
}
|
||||||
@@ -14,6 +14,9 @@ const dirname = path.dirname(filename)
|
|||||||
export default buildConfig({
|
export default buildConfig({
|
||||||
admin: {
|
admin: {
|
||||||
user: Users.slug,
|
user: Users.slug,
|
||||||
|
importMap: {
|
||||||
|
baseDir: path.resolve(dirname),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
collections: [Users, Media],
|
collections: [Users, Media],
|
||||||
editor: lexicalEditor(),
|
editor: lexicalEditor(),
|
||||||
|
|||||||
Reference in New Issue
Block a user