{"_id":"@art-design-digital/payload-plugin-forms-v3","_rev":"3-5bb7d65ae0cb700d213320d8b4f2222e","name":"@art-design-digital/payload-plugin-forms-v3","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@art-design-digital/payload-plugin-forms-v3","version":"1.0.0","license":"MIT","_id":"@art-design-digital/payload-plugin-forms-v3@1.0.0","maintainers":[{"name":"skouzzi","email":"bob-4-u@hotmail.de"},{"name":"tobedamobe","email":"tobe_damobe@me.com"},{"name":"artdesigndigitalgmbh","email":"info@ad-digital.de"}],"dist":{"shasum":"bf8ec1d24b8f1848dd7bb57a98446436ddd8d357","tarball":"https://registry.npmjs.org/@art-design-digital/payload-plugin-forms-v3/-/payload-plugin-forms-v3-1.0.0.tgz","fileCount":101,"integrity":"sha512-QAkXLaoNT8FkV94gFIfRbYAgfxP6kEWDezb0JAS8LkzZyW/EJUAyeUfFYayWrS1YVuvQW0bg9mb1fgsHJ9ecRQ==","signatures":[{"sig":"MEUCID7lMl3vimkwaP5HdPplrmclJtcgWKXL0AVVghCJS6ARAiEA9yj8UeiQkO9K4BmIMmAByoN4wfHkcafL5yzaGjizWfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272334},"main":"./src/index.ts","pnpm":{"onlyBuiltDependencies":["sharp","esbuild","unrs-resolver"]},"type":"module","types":"./src/index.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./rsc":{"types":"./src/exports/rsc.ts","import":"./src/exports/rsc.ts","default":"./src/exports/rsc.ts"},"./client":{"types":"./src/exports/client.ts","import":"./src/exports/client.ts","default":"./src/exports/client.ts"}},"gitHead":"0f677ebd0e16ce671007bdd4f347922adc8dfd4b","scripts":{"dev":"next dev dev --turbo","lint":"eslint","test":"pnpm test:int && pnpm test:e2e","build":"pnpm copyfiles && pnpm build:types && pnpm build:swc","clean":"rimraf {dist,*.tsbuildinfo}","lint:fix":"eslint ./src --fix","test:e2e":"playwright test","test:int":"vitest","build:swc":"swc ./src -d ./dist --config-file .swcrc --strip-leading-paths","copyfiles":"copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/","build:types":"tsc --outDir dist --rootDir ./src","dev:payload":"cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload","generate:types":"pnpm dev:generate-types","prepublishOnly":"pnpm clean && pnpm build","dev:generate-types":"pnpm dev:payload generate:types","generate:importmap":"pnpm dev:generate-importmap","dev:generate-importmap":"pnpm dev:payload generate:importmap"},"_npmUser":{"name":"tobedamobe","email":"tobe_damobe@me.com"},"registry":"https://registry.npmjs.org/","_npmVersion":"10.8.2","description":"A Payload plugin for forms. This plugin adds a global collection of forms to your Payload instance. You can create and manage forms in the admin interface, and then render them in your frontend application.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@payloadcms/translations":"^3.65.0"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./rsc":{"types":"./dist/exports/rsc.d.ts","import":"./dist/exports/rsc.js","default":"./dist/exports/rsc.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}}},"_hasShrinkwrap":false,"devDependencies":{"next":"15.4.7","open":"^10.1.0","react":"19.1.0","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"7.0.2","rimraf":"3.0.2","vitest":"^3.1.2","graphql":"^16.8.1","payload":"3.37.0","@swc/cli":"0.6.0","prettier":"^3.4.2","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.1.0","typescript":"5.7.3","@types/node":"^22.5.4","@types/react":"19.1.8","@payloadcms/ui":"3.37.0","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.37.0","@playwright/test":"1.56.1","@types/react-dom":"19.1.6","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"15.4.7","vite-tsconfig-paths":"^5.1.4","@payloadcms/db-sqlite":"3.37.0","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.37.0","@payloadcms/db-postgres":"3.37.0","@payloadcms/eslint-config":"3.9.0","@payloadcms/richtext-lexical":"3.37.0"},"peerDependencies":{"payload":"^3.37.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-forms-v3_1.0.0_1764338634062_0.5577589205479969","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@art-design-digital/payload-plugin-forms-v3","version":"1.0.1","license":"MIT","_id":"@art-design-digital/payload-plugin-forms-v3@1.0.1","maintainers":[{"name":"skouzzi","email":"bob-4-u@hotmail.de"},{"name":"tobedamobe","email":"tobe_damobe@me.com"},{"name":"artdesigndigitalgmbh","email":"info@ad-digital.de"}],"dist":{"shasum":"c2bd67389c97dbeb87b64b5aec40bd87f3e9bc8e","tarball":"https://registry.npmjs.org/@art-design-digital/payload-plugin-forms-v3/-/payload-plugin-forms-v3-1.0.1.tgz","fileCount":101,"integrity":"sha512-JkPeGrPnzcyZBsY3Ae6zHFLt9LnbCQEQ16Yl2/cxzoQPzQRpbZMn0f3XZRWtGhaDeAxPktj7IUCPvuhS7gxVoQ==","signatures":[{"sig":"MEUCID8yaGOY8WC6t7+pqnXQMwtLkOtsXkH9YiN+80/n2YR8AiEAg5j421ZEBVexG5AAUgQWQ5AQuQBQwFVoRehUlLuF20g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273009},"main":"./src/index.ts","pnpm":{"onlyBuiltDependencies":["sharp","esbuild","unrs-resolver"]},"type":"module","types":"./src/index.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts","default":"./src/index.ts"},"./rsc":{"types":"./src/exports/rsc.ts","import":"./src/exports/rsc.ts","default":"./src/exports/rsc.ts"},"./client":{"types":"./src/exports/client.ts","import":"./src/exports/client.ts","default":"./src/exports/client.ts"}},"gitHead":"6bedceacc86097f0b6e377ba96029086e1832a90","scripts":{"dev":"next dev dev --turbo","lint":"eslint","test":"pnpm test:int && pnpm test:e2e","build":"pnpm copyfiles && pnpm build:types && pnpm build:swc","clean":"rimraf {dist,*.tsbuildinfo}","lint:fix":"eslint ./src --fix","test:e2e":"playwright test","test:int":"vitest","build:swc":"swc ./src -d ./dist --config-file .swcrc --strip-leading-paths","copyfiles":"copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/","build:types":"tsc --outDir dist --rootDir ./src","dev:payload":"cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload","generate:types":"pnpm dev:generate-types","prepublishOnly":"pnpm clean && pnpm build","dev:generate-types":"pnpm dev:payload generate:types","generate:importmap":"pnpm dev:generate-importmap","dev:generate-importmap":"pnpm dev:payload generate:importmap"},"_npmUser":{"name":"tobedamobe","email":"tobe_damobe@me.com"},"registry":"https://registry.npmjs.org/","_npmVersion":"10.8.2","description":"A Payload plugin for forms. This plugin adds a global collection of forms to your Payload instance. You can create and manage forms in the admin interface, and then render them in your frontend application.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@payloadcms/translations":"^3.65.0"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./rsc":{"types":"./dist/exports/rsc.d.ts","import":"./dist/exports/rsc.js","default":"./dist/exports/rsc.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}}},"_hasShrinkwrap":false,"devDependencies":{"next":"15.4.7","open":"^10.1.0","react":"19.1.0","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"7.0.2","rimraf":"3.0.2","vitest":"^3.1.2","graphql":"^16.8.1","payload":"3.37.0","@swc/cli":"0.6.0","prettier":"^3.4.2","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.1.0","typescript":"5.7.3","@types/node":"^22.5.4","@types/react":"19.1.8","@payloadcms/ui":"3.37.0","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.37.0","@playwright/test":"1.56.1","@types/react-dom":"19.1.6","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"15.4.7","vite-tsconfig-paths":"^5.1.4","@payloadcms/db-sqlite":"3.37.0","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.37.0","@payloadcms/db-postgres":"3.37.0","@payloadcms/eslint-config":"3.9.0","@payloadcms/richtext-lexical":"3.37.0"},"peerDependencies":{"payload":"^3.37.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-forms-v3_1.0.1_1764338828325_0.36386870062711596","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@art-design-digital/payload-plugin-forms-v3","version":"1.0.3","description":"A Payload plugin for forms. This plugin adds a global collection of forms to your Payload instance. You can create and manage forms in the admin interface, and then render them in your frontend application.","license":"MIT","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"import":"./dist/exports/client.js","types":"./dist/exports/client.d.ts","default":"./dist/exports/client.js"},"./rsc":{"import":"./dist/exports/rsc.js","types":"./dist/exports/rsc.d.ts","default":"./dist/exports/rsc.js"}},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"pnpm copyfiles && pnpm build:types && pnpm build:swc","build:swc":"swc ./src -d ./dist --config-file .swcrc --strip-leading-paths","build:types":"tsc --outDir dist --rootDir ./src","clean":"rimraf {dist,*.tsbuildinfo}","copyfiles":"copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/","dev":"next dev dev --turbo","dev:generate-importmap":"pnpm dev:payload generate:importmap","dev:generate-types":"pnpm dev:payload generate:types","dev:payload":"cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload","generate:importmap":"pnpm dev:generate-importmap","generate:types":"pnpm dev:generate-types","lint":"eslint","lint:fix":"eslint ./src --fix","prepublishOnly":"pnpm clean && pnpm build","test":"pnpm test:int && pnpm test:e2e","test:e2e":"playwright test","test:int":"vitest"},"devDependencies":{"@eslint/eslintrc":"^3.2.0","@payloadcms/db-mongodb":"3.37.0","@payloadcms/db-postgres":"3.37.0","@payloadcms/db-sqlite":"3.37.0","@payloadcms/eslint-config":"3.9.0","@payloadcms/next":"3.37.0","@payloadcms/richtext-lexical":"3.37.0","@payloadcms/ui":"3.37.0","@playwright/test":"1.56.1","@swc-node/register":"1.10.9","@swc/cli":"0.6.0","@types/node":"^22.5.4","@types/react":"19.1.8","@types/react-dom":"19.1.6","copyfiles":"2.4.1","cross-env":"^7.0.3","eslint":"^9.23.0","eslint-config-next":"15.4.7","graphql":"^16.8.1","mongodb-memory-server":"10.1.4","next":"15.4.7","open":"^10.1.0","payload":"3.37.0","prettier":"^3.4.2","qs-esm":"7.0.2","react":"19.1.0","react-dom":"19.1.0","rimraf":"3.0.2","sharp":"0.34.2","sort-package-json":"^2.10.0","typescript":"5.7.3","vite-tsconfig-paths":"^5.1.4","vitest":"^3.1.2"},"peerDependencies":{"payload":"^3.37.0"},"engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10"},"pnpm":{"onlyBuiltDependencies":["sharp","esbuild","unrs-resolver"]},"registry":"https://registry.npmjs.org/","dependencies":{"@payloadcms/translations":"^3.65.0"},"_id":"@art-design-digital/payload-plugin-forms-v3@1.0.3","gitHead":"fa8098c282e12b8c3b6136cc89a3e2629fe1f3ff","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-B8eQfg7jeOn/N2/vJbBUUgbKDQdT+9GIcvWoWiU7FDd3ESo+/5/tOjgtJbU5RwLSAnrU7J0EVYKQOkH0M7Pmpw==","shasum":"4d594544513fa4ca98dc3a3032f388a37c97d698","tarball":"https://registry.npmjs.org/@art-design-digital/payload-plugin-forms-v3/-/payload-plugin-forms-v3-1.0.3.tgz","fileCount":101,"unpackedSize":272457,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD6p5WFUP5RWFf4go+L2fxevMzDxgWpPkP3MdYTCIytnQIhAJySh+Ru2OCQ/jys41/xIcIvS4QU3d7kibPUk0Sli2Is"}]},"_npmUser":{"name":"artdesigndigitalgmbh","email":"info@ad-digital.de"},"directories":{},"maintainers":[{"name":"skouzzi","email":"bob-4-u@hotmail.de"},{"name":"tobedamobe","email":"tobe_damobe@me.com"},{"name":"artdesigndigitalgmbh","email":"info@ad-digital.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/payload-plugin-forms-v3_1.0.3_1767770875109_0.9270253413576675"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-28T14:03:53.937Z","modified":"2026-01-07T07:27:55.514Z","1.0.0":"2025-11-28T14:03:54.252Z","1.0.1":"2025-11-28T14:07:08.559Z","1.0.3":"2026-01-07T07:27:55.281Z"},"license":"MIT","description":"A Payload plugin for forms. This plugin adds a global collection of forms to your Payload instance. You can create and manage forms in the admin interface, and then render them in your frontend application.","maintainers":[{"name":"skouzzi","email":"bob-4-u@hotmail.de"},{"name":"tobedamobe","email":"tobe_damobe@me.com"},{"name":"artdesigndigitalgmbh","email":"info@ad-digital.de"}],"readme":"# Payload Plugin Forms v3\n\nA flexible forms plugin for [Payload CMS](https://payloadcms.com) v3. Create and manage forms with configurable fields, email settings, and feedback messages.\n\n## Features\n\n- Create and manage forms with multiple field types\n- Configurable field widths (1/1, 1/2, 1/4, 3/4)\n- Sender/receiver email configuration\n- Customizable success and error messages\n- Conditional field display\n- Autocomplete attribute support\n- Full i18n support (EN, DE, ES, FR, NL)\n- Optional field localization\n\n## Installation\n\n```bash\nnpm install @art-design-digital/payload-plugin-forms-v3\n# or\npnpm add @art-design-digital/payload-plugin-forms-v3\n# or\nyarn add @art-design-digital/payload-plugin-forms-v3\n```\n\n## Usage\n\nAdd the plugin to your Payload config:\n\n```ts\nimport { buildConfig } from 'payload'\nimport { formsPlugin } from '@art-design-digital/payload-plugin-forms-v3'\n\nexport default buildConfig({\n  // ... your config\n  plugins: [\n    formsPlugin({\n      // Optional: Admin group name\n      adminGroup: 'Content',\n      // Optional: Enable localization for form field labels\n      localized: true,\n      // Optional: Override access control\n      access: {\n        read: () => true,\n        create: ({ req }) => req.user?.role === 'admin',\n        update: ({ req }) => req.user?.role === 'admin',\n        delete: ({ req }) => req.user?.role === 'admin',\n      },\n      // Optional: Disable the plugin (keeps schema for migrations)\n      disabled: false,\n    }),\n  ],\n})\n```\n\n## Configuration Options\n\n| Option       | Type                         | Default                | Description                                          |\n| ------------ | ---------------------------- | ---------------------- | ---------------------------------------------------- |\n| `adminGroup` | `string`                     | `undefined`            | Admin panel group name for the Forms collection      |\n| `localized`  | `boolean`                    | `false`                | Enable localization for form field labels            |\n| `access`     | `CollectionConfig['access']` | `{ read: () => true }` | Override access control for the Forms collection     |\n| `disabled`   | `boolean`                    | `false`                | Disable the plugin (schema preserved for migrations) |\n\n## Form Field Types\n\nThe plugin supports these field types:\n\n| Type       | Description                     |\n| ---------- | ------------------------------- |\n| `text`     | Single-line text input          |\n| `textarea` | Multi-line text input           |\n| `email`    | Email input with validation     |\n| `number`   | Numeric input with min/max/step |\n| `tel`      | Telephone number input          |\n| `url`      | URL input with validation       |\n| `dropdown` | Select dropdown with options    |\n| `radio`    | Radio button group              |\n| `checkbox` | Single checkbox                 |\n| `date`     | Date picker                     |\n| `time`     | Time picker                     |\n| `datetime` | Date and time picker            |\n\n## Form Field Configuration\n\nEach form field can be configured with:\n\n| Field          | Description                                               |\n| -------------- | --------------------------------------------------------- |\n| `label`        | Display label for the field                               |\n| `fieldType`    | Type of field (see above)                                 |\n| `width`        | Field width: `full`, `half`, `onequarter`, `threequarter` |\n| `required`     | Whether the field is required                             |\n| `placeholder`  | Placeholder text                                          |\n| `description`  | Help text below the field                                 |\n| `default`      | Default value                                             |\n| `autocomplete` | HTML autocomplete attribute                               |\n| `condition`    | Conditional display based on another field's value        |\n\n### Type-specific options\n\n- **text/textarea**: `minLength`, `maxLength`, `rows` (textarea only)\n- **number**: `minValue`, `maxValue`, `step`\n- **dropdown/radio**: `options` array with `label` and `value`\n- **date/datetime**: `minDate`, `maxDate`\n\n## Form Structure\n\nEach form includes:\n\n### Form Fields\n\nAn array of configurable form fields with the options described above.\n\n### Sender/Receiver Settings\n\n- `senderName` - Name shown in email \"From\" field\n- `senderMail` - Email address for the sender\n- `receiver` - Email address(es) to receive submissions\n- `subject` - Email subject line\n\n### Messages\n\n- `submitLabel` - Text for the submit button\n- `successMessage` - Message shown on successful submission\n- `errorMessage` - Message shown on submission error\n\n## Fetching Forms\n\nYou can fetch forms using the Payload Local API or REST API:\n\n```ts\n// Local API\nconst forms = await payload.find({\n  collection: 'forms',\n  where: {\n    name: { equals: 'Contact Form' },\n  },\n})\n\n// REST API\n// GET /api/forms?where[name][equals]=Contact Form\n```\n\n## i18n Support\n\nThe plugin includes translations for:\n\n- English (en)\n- German (de)\n- Spanish (es)\n- French (fr)\n- Dutch (nl)\n\nAll field labels, validation messages, and UI elements are translated based on your Payload admin language setting.\n\n## TypeScript\n\nThe plugin exports types for use in your project:\n\n```ts\nimport type {\n  FormsPluginConfig,\n  Form,\n  FormField,\n  FormFieldOption,\n  AutocompleteValue,\n  FormFieldCondition,\n} from '@art-design-digital/payload-plugin-forms-v3'\n\nimport { FIELD_TYPES, WIDTHS } from '@art-design-digital/payload-plugin-forms-v3'\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}