Files
ipal-kit/src/types.ts
T

59 lines
1.9 KiB
TypeScript

import type { Field } from 'payload'
import type { AccessOption } from './modules/access/types.js'
import type { ContentOption } from './modules/content/types.js'
import type { FormsOption } from './modules/forms/types.js'
import type { I18nConfig } from './modules/i18n/types.js'
import type { PagesOption } from './modules/pages/types.js'
import type { SeoOption } from './modules/seo/types.js'
/**
* Configuration options for the IPAL plugin.
* Passed by the client project in payload.config.ts.
*/
export type IpalOptions = {
/**
* Role-based access control. Injects a fixed `roles` field
* (admin > editor > user) into the client's auth collection.
*/
access?: AccessOption
/**
* Collections whose entries live under an archive page — blog posts, case
* studies, anything with a listing. Adds an "archive page" assignment per
* collection in SiteSettings; the assigned page's localized slug becomes the
* URL segment (/pl/artykuly/moj-post, /en/articles/my-post). Requires `pages`.
*/
content?: ContentOption
/** Disable the plugin without uninstalling (keeps DB schema intact) */
enabled?: boolean
/**
* Forms — form-builder collections (forms, form-submissions) plus the
* callable submitForm (Turnstile + persistence + SMTP-from-panel email).
*/
forms?: FormsOption
/** Internationalization — locales, default locale, fallback behavior */
i18n: I18nConfig
/** Additional fields injected into SiteIntegrations global */
integrationsFields?: Field[]
/**
* System-page assignments (homepage, privacy, cookies) in SiteSettings.
* Provide the slug of the client's Pages collection to enable.
*/
pages?: PagesOption
/**
* SEO — adds meta fields to chosen collections (via @payloadcms/plugin-seo)
* and enables locale-aware metadata helpers.
*/
seo?: SeoOption
/** Additional fields injected into SiteSettings global */
siteSettingsFields?: Field[]
}