{"_id":"@alacrity-education/payload-plugin-collection-templates","_rev":"9-a34ca7a7888f92fa5fc862f318b15ccd","name":"@alacrity-education/payload-plugin-collection-templates","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"@alacrity-education/payload-plugin-collection-templates","version":"0.1.0","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"author":{"name":"Alacrity"},"license":"MIT","_id":"@alacrity-education/payload-plugin-collection-templates@0.1.0","maintainers":[{"name":"alacrity-education","email":"tech@alacrity.ro"}],"homepage":"https://github.com/alacrity-education/payload-plugin-collection-templates#readme","bugs":{"url":"https://github.com/alacrity-education/payload-plugin-collection-templates/issues"},"dist":{"shasum":"2600b78b0fedb3d232a9df15442eee14c6050f9f","tarball":"https://registry.npmjs.org/@alacrity-education/payload-plugin-collection-templates/-/payload-plugin-collection-templates-0.1.0.tgz","fileCount":78,"integrity":"sha512-+Lczhy2MyriUeULQL3HLfXi02ORI+Vk2YPC1w+VObXcNZI9G9uKnbzygIiynGFtsfhSe2j0Ff3BDnXaGaNa5Vw==","signatures":[{"sig":"MEUCIAe19+ZdzL2oe1CNO10UwuN5TXl22RGJ5l3nKagzswtvAiEAj95fsQrk3x6PoXcWqRtTFt2OI6duaz2Wr2bF4JSlM7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223600},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10 || ^11"},"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"}},"gitHead":"0fc443ae848149e64d19df83bb4aae4db572171d","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/","typecheck":"tsc --noEmit","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","test:int:sqlite":"cross-env PAYLOAD_DB=sqlite vitest","test:int:postgres":"cross-env PAYLOAD_DB=postgres vitest","dev:generate-types":"pnpm dev:payload generate:types","generate:importmap":"pnpm dev:generate-importmap","test:all-databases":"pnpm test:int && pnpm test:int:sqlite && pnpm test:int:postgres","dev:generate-importmap":"pnpm dev:payload generate:importmap"},"_npmUser":{"name":"alacrity-education","email":"tech@alacrity.ro"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/alacrity-education/payload-plugin-collection-templates.git","type":"git"},"_npmVersion":"12.0.2","description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","directories":{},"sideEffects":["**/*.css","**/*.scss"],"_nodeVersion":"26.8.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"next":"16.3.3","open":"^10.1.0","react":"19.2.6","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"8.0.1","rimraf":"3.0.2","vitest":"4.0.18","graphql":"^16.8.1","payload":"3.84.1","@swc/cli":"0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.2.6","typescript":"5.7.3","@types/node":"22.19.9","@types/react":"19.2.14","@payloadcms/ui":"3.84.1","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.84.1","@playwright/test":"1.58.2","@types/react-dom":"19.2.3","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"16.3.3","vite-tsconfig-paths":"6.0.5","@payloadcms/db-sqlite":"3.84.1","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.84.1","@payloadcms/db-postgres":"3.84.1","@payloadcms/eslint-config":"3.28.0","@payloadcms/richtext-lexical":"3.84.1"},"peerDependencies":{"react":"^19.0.0","payload":"^3.84.1","@payloadcms/ui":"^3.84.1"},"peerDependenciesMeta":{"react":{"optional":true},"@payloadcms/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-collection-templates_0.1.0_1788779591822_0.5593015193637112","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alacrity-education/payload-plugin-collection-templates","version":"0.2.0","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"author":{"name":"Alacrity"},"license":"MIT","_id":"@alacrity-education/payload-plugin-collection-templates@0.2.0","maintainers":[{"name":"alacrity-education","email":"tech@alacrity.ro"}],"homepage":"https://github.com/Alacrity-Education/payload-plugin-collections-template#readme","bugs":{"url":"https://github.com/Alacrity-Education/payload-plugin-collections-template/issues"},"dist":{"shasum":"8bd68a7414ffcc00f79e9fb005799885fa735da1","tarball":"https://registry.npmjs.org/@alacrity-education/payload-plugin-collection-templates/-/payload-plugin-collection-templates-0.2.0.tgz","fileCount":78,"integrity":"sha512-eoozu5z2iRGxsvO9BwAQbhOkZbJUEAeqlNuUN45d9LZHx7x9Mk446gCh5PsEuU3uiF83VRqaw6WqriTZiD6btg==","signatures":[{"sig":"MEUCIQDosY5ymj3jmTytm5MuHSrCWtiZwiZ4q4BWNdhYLP036QIgeuGENLrlE/Nb+NcaQV3t6KCJct2DVklIWPa1cA5xeEU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICvUAYVRtzVRv5uAwq8VK5ltg0EZkliKD7ESRFiSQApDAiEA5eV1rQuQTDWTjdGuM4a8XDIyrVMGZb3FO7nNrUC2S/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224425},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10 || ^11"},"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"}},"gitHead":"da8410af4e794709b2c7caeb0c6483085b3f7707","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/","typecheck":"tsc --noEmit","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","test:int:sqlite":"cross-env PAYLOAD_DB=sqlite vitest","test:int:postgres":"cross-env PAYLOAD_DB=postgres vitest","dev:generate-types":"pnpm build && pnpm dev:payload generate:types","generate:importmap":"pnpm dev:generate-importmap","test:all-databases":"pnpm test:int && pnpm test:int:sqlite && pnpm test:int:postgres","dev:generate-importmap":"pnpm build && pnpm dev:payload generate:importmap"},"_npmUser":{"name":"alacrity-education","email":"tech@alacrity.ro"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/Alacrity-Education/payload-plugin-collections-template.git","type":"git"},"_npmVersion":"12.0.2","description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","directories":{},"sideEffects":["**/*.css","**/*.scss"],"_nodeVersion":"26.8.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"next":"16.3.3","open":"^10.1.0","react":"19.2.6","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"8.0.1","rimraf":"3.0.2","vitest":"4.0.18","graphql":"^16.8.1","payload":"3.84.1","@swc/cli":"0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.2.6","typescript":"5.7.3","@types/node":"22.19.9","@types/react":"19.2.14","@payloadcms/ui":"3.84.1","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.84.1","@playwright/test":"1.58.2","@types/react-dom":"19.2.3","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"16.3.3","vite-tsconfig-paths":"6.0.5","@payloadcms/db-sqlite":"3.84.1","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.84.1","@payloadcms/db-postgres":"3.84.1","@payloadcms/eslint-config":"3.28.0","@payloadcms/richtext-lexical":"3.84.1"},"peerDependencies":{"react":"^19.0.0","payload":"^3.84.1","@payloadcms/ui":"^3.84.1"},"peerDependenciesMeta":{"react":{"optional":true},"@payloadcms/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-collection-templates_0.2.0_1788787402034_0.30040907552326446","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@alacrity-education/payload-plugin-collection-templates","version":"0.2.1","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"author":{"name":"Alacrity"},"license":"MIT","_id":"@alacrity-education/payload-plugin-collection-templates@0.2.1","maintainers":[{"name":"alacrity-education","email":"tech@alacrity.ro"}],"homepage":"https://github.com/Alacrity-Education/payload-plugin-collections-template#readme","bugs":{"url":"https://github.com/Alacrity-Education/payload-plugin-collections-template/issues"},"dist":{"shasum":"2d0ae1f4813c40fe818d88f0c6282fc98abdb01a","tarball":"https://registry.npmjs.org/@alacrity-education/payload-plugin-collection-templates/-/payload-plugin-collection-templates-0.2.1.tgz","fileCount":78,"integrity":"sha512-zDXd6m45henlgr0SbuujHvvTdUMlkegpTR0iUO8w7lnklUzaNJmgweu9htJhsKdPQdN9ldiyEfg+G6XVqi6sHw==","signatures":[{"sig":"MEQCIB/eWVXUQacXuMBdxuc7bvIFIBpz3WvhsQM9ydMa9gq5AiA7f490bGdk5Sx3DYWjOFEtgHGWHRYKMDTMFovOys3O4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCPLOg9BKIW1MGbFwWFaTMYmxdKbTmoxULrYf9sSNnUQgIgA81XqBNb/s/4zzm7AzxIK7oX2CjrCcpa/4h6JzLHhE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229436},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10 || ^11"},"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"}},"gitHead":"58910d816ec6039238cc14446e08ba5c34336301","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/","typecheck":"tsc --noEmit","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","test:int:sqlite":"cross-env PAYLOAD_DB=sqlite vitest","test:int:postgres":"cross-env PAYLOAD_DB=postgres vitest","dev:generate-types":"pnpm build && pnpm dev:payload generate:types","generate:importmap":"pnpm dev:generate-importmap","test:all-databases":"pnpm test:int && pnpm test:int:sqlite && pnpm test:int:postgres","dev:generate-importmap":"pnpm build && pnpm dev:payload generate:importmap"},"_npmUser":{"name":"alacrity-education","email":"tech@alacrity.ro"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/Alacrity-Education/payload-plugin-collections-template.git","type":"git"},"_npmVersion":"12.0.2","description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","directories":{},"sideEffects":["**/*.css","**/*.scss"],"_nodeVersion":"26.8.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"next":"16.3.3","open":"^10.1.0","react":"19.2.6","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"8.0.1","rimraf":"3.0.2","vitest":"4.0.18","graphql":"^16.8.1","payload":"3.84.1","@swc/cli":"0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.2.6","typescript":"5.7.3","@types/node":"22.19.9","@types/react":"19.2.14","@payloadcms/ui":"3.84.1","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.84.1","@playwright/test":"1.58.2","@types/react-dom":"19.2.3","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"16.3.3","vite-tsconfig-paths":"6.0.5","@payloadcms/db-sqlite":"3.84.1","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.84.1","@payloadcms/db-postgres":"3.84.1","@payloadcms/eslint-config":"3.28.0","@payloadcms/richtext-lexical":"3.84.1"},"peerDependencies":{"react":"^19.0.0","payload":"^3.84.1","@payloadcms/ui":"^3.84.1"},"peerDependenciesMeta":{"react":{"optional":true},"@payloadcms/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-collection-templates_0.2.1_1788789471478_0.4754669707085053","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@alacrity-education/payload-plugin-collection-templates","version":"0.2.2","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"author":{"name":"Alacrity"},"license":"MIT","_id":"@alacrity-education/payload-plugin-collection-templates@0.2.2","maintainers":[{"name":"alacrity-education","email":"tech@alacrity.ro"}],"homepage":"https://github.com/Alacrity-Education/payload-plugin-collections-template#readme","bugs":{"url":"https://github.com/Alacrity-Education/payload-plugin-collections-template/issues"},"dist":{"shasum":"522f09ddee5d3ec1d431d1f54ad31f33fe81d54a","tarball":"https://registry.npmjs.org/@alacrity-education/payload-plugin-collection-templates/-/payload-plugin-collection-templates-0.2.2.tgz","fileCount":78,"integrity":"sha512-DxGzkuyaiCtjIr3IpIquLpavrU6spGP8jzRiiqTekCBs5NGJy3TNlzi36YuZGbTloEkuGzjFi7dvGqVAoHyQXA==","signatures":[{"sig":"MEUCIHzo/2cFIVH22bP0Vs0N0i7/zMu31qP/UeGIja+CL1GKAiEAklFS7RzZyFH4rNwtpOJyv9KMJHMgUryU62/sIhygVD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFjGQLI4sI0eHC5tvgt7LtmiGMAY8O6BJAKaCQk0XPNEAiEAooFRjaeT+KfCxL0IgV9QldDAF5S8kXtgjvJ5pSrWjHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234313},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10 || ^11"},"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"}},"gitHead":"b5ecc6b42ed16c7213de0a5ea3bd6c3c69e6d25a","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/","typecheck":"tsc --noEmit","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","test:int:sqlite":"cross-env PAYLOAD_DB=sqlite vitest","test:int:postgres":"cross-env PAYLOAD_DB=postgres vitest","dev:generate-types":"pnpm build && pnpm dev:payload generate:types","generate:importmap":"pnpm dev:generate-importmap","test:all-databases":"pnpm test:int && pnpm test:int:sqlite && pnpm test:int:postgres","dev:generate-importmap":"pnpm build && pnpm dev:payload generate:importmap"},"_npmUser":{"name":"alacrity-education","email":"tech@alacrity.ro"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/Alacrity-Education/payload-plugin-collections-template.git","type":"git"},"_npmVersion":"12.0.2","description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","directories":{},"sideEffects":["**/*.css","**/*.scss"],"_nodeVersion":"26.8.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"next":"16.3.3","open":"^10.1.0","react":"19.2.6","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"8.0.1","rimraf":"3.0.2","vitest":"4.0.18","graphql":"^16.8.1","payload":"3.84.1","@swc/cli":"0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.2.6","typescript":"5.7.3","@types/node":"22.19.9","@types/react":"19.2.14","@payloadcms/ui":"3.84.1","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.84.1","@playwright/test":"1.58.2","@types/react-dom":"19.2.3","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"16.3.3","vite-tsconfig-paths":"6.0.5","@payloadcms/db-sqlite":"3.84.1","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.84.1","@payloadcms/db-postgres":"3.84.1","@payloadcms/eslint-config":"3.28.0","@payloadcms/richtext-lexical":"3.84.1"},"peerDependencies":{"react":"^19.0.0","payload":"^3.84.1","@payloadcms/ui":"^3.84.1"},"peerDependenciesMeta":{"react":{"optional":true},"@payloadcms/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-collection-templates_0.2.2_1788789920677_0.8165201932467361","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alacrity-education/payload-plugin-collection-templates","version":"0.3.0","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"author":{"name":"Alacrity"},"license":"MIT","_id":"@alacrity-education/payload-plugin-collection-templates@0.3.0","maintainers":[{"name":"alacrity-education","email":"tech@alacrity.ro"}],"homepage":"https://github.com/Alacrity-Education/payload-plugin-collections-template#readme","bugs":{"url":"https://github.com/Alacrity-Education/payload-plugin-collections-template/issues"},"dist":{"shasum":"cb7ad13fe62da5bbb7ac37a750b5f8b4d6dc7ef2","tarball":"https://registry.npmjs.org/@alacrity-education/payload-plugin-collection-templates/-/payload-plugin-collection-templates-0.3.0.tgz","fileCount":78,"integrity":"sha512-frbYWN1SLqPMqS3SuU/RSLiNE7Voe5DoOsl1dS278/pV/GVs4YBTRltq5n5nY0oL3aIe/JdTTbXZX9OVJurgzw==","signatures":[{"sig":"MEUCIQD8HP1qyB6HzNVH6Op6xbOxUM6YSrAJN/MFNO5IxDwHXAIga9/jmBvdG6fi9pZ3rT2zNU9V1JN9m9jykZ0SLkdVf1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEoFXM7+HEFSNXu4UDvsmiA0CJcPTyzrcO7R5Jlh3mgEAiAdOowu5qGYTdV/WVH2n21T8krgPlU+CyRngpvUE25vnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238482},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10 || ^11"},"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"}},"gitHead":"05287e82dcbefb6f619ab5621474881e564d048d","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/","typecheck":"tsc --noEmit","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","test:int:sqlite":"cross-env PAYLOAD_DB=sqlite vitest","test:int:postgres":"cross-env PAYLOAD_DB=postgres vitest","dev:generate-types":"pnpm build && cross-env NODE_ENV=test PAYLOAD_DB=sqlite PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload generate:types","generate:importmap":"pnpm dev:generate-importmap","test:all-databases":"pnpm test:int && pnpm test:int:sqlite && pnpm test:int:postgres","dev:generate-importmap":"pnpm build && cross-env NODE_ENV=test PAYLOAD_DB=sqlite PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload generate:importmap"},"_npmUser":{"name":"alacrity-education","email":"tech@alacrity.ro"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/Alacrity-Education/payload-plugin-collections-template.git","type":"git"},"_npmVersion":"12.0.2","description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","directories":{},"sideEffects":["**/*.css","**/*.scss"],"_nodeVersion":"26.8.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"next":"16.3.3","open":"^10.1.0","react":"19.2.6","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"8.0.1","rimraf":"3.0.2","vitest":"4.0.18","graphql":"^16.8.1","payload":"3.84.1","@swc/cli":"0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.2.6","typescript":"5.7.3","@types/node":"22.19.9","@types/react":"19.2.14","@payloadcms/ui":"3.84.1","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.84.1","@playwright/test":"1.58.2","@types/react-dom":"19.2.3","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"16.3.3","vite-tsconfig-paths":"6.0.5","@payloadcms/db-sqlite":"3.84.1","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.84.1","@payloadcms/db-postgres":"3.84.1","@payloadcms/eslint-config":"3.28.0","@payloadcms/richtext-lexical":"3.84.1"},"peerDependencies":{"react":"^19.0.0","payload":"^3.84.1","@payloadcms/ui":"^3.84.1"},"peerDependenciesMeta":{"react":{"optional":true},"@payloadcms/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-collection-templates_0.3.0_1788941535011_0.8531460430824012","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alacrity-education/payload-plugin-collection-templates","version":"0.4.0","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"author":{"name":"Alacrity"},"license":"MIT","_id":"@alacrity-education/payload-plugin-collection-templates@0.4.0","maintainers":[{"name":"alacrity_education","email":"tech@alacrity.ro"}],"homepage":"https://github.com/Alacrity-Education/payload-plugin-collections-template#readme","bugs":{"url":"https://github.com/Alacrity-Education/payload-plugin-collections-template/issues"},"dist":{"shasum":"e9775ea9bdb80fe705286e65e86353898428bc6c","tarball":"https://registry.npmjs.org/@alacrity-education/payload-plugin-collection-templates/-/payload-plugin-collection-templates-0.4.0.tgz","fileCount":75,"integrity":"sha512-8pA38BWg5MWS5xLUsc6+OLeBBYlW2RlNkD2QuPjmz89WDsZ+qjLoLh+Az0KrhC0wu/HqXP/FkknOqDc7JSUs0w==","signatures":[{"sig":"MEQCIFYKcOQ1TUUyeRAI9dspCgps6ATSeJh12QDcTzq0wU+iAiBGowukLzgS3qU2d1uSf7aQleOuuyN+YXgppXCAWt9lyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDbtDBrIfz3RnhJgAXizxJeAFShwoX7MUw3KS/OnFn6PQIhALLwv6nN/+o7mZlEVyQljho3hppwkEINhi7kE/9hi9HY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242045},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10 || ^11"},"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"}},"gitHead":"ff14d5c3fbe9dbd4cddd1e02f3726838a6fed2ae","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/","typecheck":"tsc --noEmit","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","test:int:sqlite":"cross-env PAYLOAD_DB=sqlite vitest","test:int:postgres":"cross-env PAYLOAD_DB=postgres vitest","dev:generate-types":"pnpm build && cross-env NODE_ENV=test PAYLOAD_DB=sqlite PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload generate:types","generate:importmap":"pnpm dev:generate-importmap","test:all-databases":"pnpm test:int && pnpm test:int:sqlite && pnpm test:int:postgres","dev:generate-importmap":"pnpm build && cross-env NODE_ENV=test PAYLOAD_DB=sqlite PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload generate:importmap"},"_npmUser":{"name":"alacrity_education","email":"tech@alacrity.ro"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/Alacrity-Education/payload-plugin-collections-template.git","type":"git"},"_npmVersion":"12.0.2","description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","directories":{},"sideEffects":["**/*.css","**/*.scss"],"_nodeVersion":"26.8.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"next":"16.3.3","open":"^10.1.0","react":"19.2.6","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"8.0.1","rimraf":"3.0.2","vitest":"4.0.18","graphql":"^16.8.1","payload":"3.84.1","@swc/cli":"0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.2.6","typescript":"5.7.3","@types/node":"22.19.9","@types/react":"19.2.14","@payloadcms/ui":"3.84.1","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.84.1","@playwright/test":"1.58.2","@types/react-dom":"19.2.3","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"16.3.3","vite-tsconfig-paths":"6.0.5","@payloadcms/db-sqlite":"3.84.1","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.84.1","@payloadcms/db-postgres":"3.84.1","@payloadcms/eslint-config":"3.28.0","@payloadcms/richtext-lexical":"3.84.1"},"peerDependencies":{"react":"^19.0.0","payload":"^3.84.1","@payloadcms/ui":"^3.84.1"},"peerDependenciesMeta":{"react":{"optional":true},"@payloadcms/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-collection-templates_0.4.0_1789033598822_0.5852209216693693","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alacrity-education/payload-plugin-collection-templates","version":"0.5.0","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"author":{"name":"Alacrity"},"license":"MIT","_id":"@alacrity-education/payload-plugin-collection-templates@0.5.0","maintainers":[{"name":"alacrity_education","email":"tech@alacrity.ro"}],"homepage":"https://github.com/Alacrity-Education/payload-plugin-collections-template#readme","bugs":{"url":"https://github.com/Alacrity-Education/payload-plugin-collections-template/issues"},"dist":{"shasum":"c745986efef7a166fe8e43fc6560ac13ea6f3e01","tarball":"https://registry.npmjs.org/@alacrity-education/payload-plugin-collection-templates/-/payload-plugin-collection-templates-0.5.0.tgz","fileCount":66,"integrity":"sha512-CAL6zeJyG+VbE538OZEN0rSfNqFMfPup6clmL0V1g92GCKPo/LxuiDyog3HSMMFgfvE2OnqfUnx/UDvkcF3q8g==","signatures":[{"sig":"MEQCID7/GIDUREzy++PH7eBRguPAd5Gbnl6uvaNw36FgdDHnAiA2Nk1Q7S87DfIYUa6zulyBfzApkMVwi2g2vTFbCJMHMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCPJo32xcIfyXkS4qnEBo2dlLR8SGexZl56aHTPov8dPAIhAM2mCybSxt/qC+RbKvoeExt0FB/+47HwsutolOTfD9j4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210121},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10 || ^11"},"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"}},"gitHead":"3031069d46433b9522f2a158c5ad2fddfb936a99","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/","typecheck":"tsc --noEmit","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","test:int:sqlite":"cross-env PAYLOAD_DB=sqlite vitest","test:int:postgres":"cross-env PAYLOAD_DB=postgres vitest","dev:generate-types":"pnpm build && cross-env NODE_ENV=test PAYLOAD_DB=sqlite PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload generate:types","generate:importmap":"pnpm dev:generate-importmap","test:all-databases":"pnpm test:int && pnpm test:int:sqlite && pnpm test:int:postgres","dev:generate-importmap":"pnpm build && cross-env NODE_ENV=test PAYLOAD_DB=sqlite PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload generate:importmap"},"_npmUser":{"name":"alacrity_education","email":"tech@alacrity.ro"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/Alacrity-Education/payload-plugin-collections-template.git","type":"git"},"_npmVersion":"12.0.2","description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","directories":{},"sideEffects":["**/*.css","**/*.scss"],"_nodeVersion":"26.8.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"next":"16.3.3","open":"^10.1.0","react":"19.2.6","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"8.0.1","rimraf":"3.0.2","vitest":"4.0.18","graphql":"^16.8.1","payload":"3.84.1","@swc/cli":"0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.2.6","typescript":"5.7.3","@types/node":"22.19.9","@types/react":"19.2.14","@payloadcms/ui":"3.84.1","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.84.1","@playwright/test":"1.58.2","@types/react-dom":"19.2.3","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"16.3.3","vite-tsconfig-paths":"6.0.5","@payloadcms/db-sqlite":"3.84.1","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.84.1","@payloadcms/db-postgres":"3.84.1","@payloadcms/eslint-config":"3.28.0","@payloadcms/richtext-lexical":"3.84.1"},"peerDependencies":{"react":"^19.0.0","payload":"^3.84.1","@payloadcms/ui":"^3.84.1"},"peerDependenciesMeta":{"react":{"optional":true},"@payloadcms/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-collection-templates_0.5.0_1789236349118_0.8931191415701139","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"_id":"@alacrity-education/payload-plugin-collection-templates@0.5.1","bugs":{"url":"https://github.com/Alacrity-Education/payload-plugin-collections-template/issues"},"dist":{"shasum":"a41802e452c0c558fd34b641d65528a4f2e534d2","tarball":"https://registry.npmjs.org/@alacrity-education/payload-plugin-collection-templates/-/payload-plugin-collection-templates-0.5.1.tgz","fileCount":66,"integrity":"sha512-HhTdA0CDMiZGnSwG3Iq7I8TujJZpZPC/x1bqr5Y7JtCiQnf7lQfnO7MMOHK2LWU2rmKNDOZv1e6BKNvz/LHegw==","signatures":[{"sig":"MEYCIQD48Ewpc8leKYxbaSE7pWxV0jYRZymdTIqnEqCnh9TMFQIhAM2aAMex3/H+aqNiTVLG+4xWPUjctuM7/GrksHNG5Hjx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD63uFp7CGurpATRnPxqKlRPj6DjP8x13uDfCvcidDZdAIhAMh/kK5xRyT+K4Z7yD7SMXjwTREZwVJY3/DX/6kZDXEf"}],"unpackedSize":213455},"main":"./dist/index.js","name":"@alacrity-education/payload-plugin-collection-templates","type":"module","types":"./dist/index.d.ts","author":{"name":"Alacrity"},"engines":{"node":"^18.20.2 || >=20.9.0","pnpm":"^9 || ^10 || ^11"},"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"}},"gitHead":"4f987d112d6dc124f00a02a3929b46630ec4fb87","license":"MIT","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/","typecheck":"tsc --noEmit","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","test:int:sqlite":"cross-env PAYLOAD_DB=sqlite vitest","test:int:postgres":"cross-env PAYLOAD_DB=postgres vitest","dev:generate-types":"pnpm build && cross-env NODE_ENV=test PAYLOAD_DB=sqlite PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload generate:types","generate:importmap":"pnpm dev:generate-importmap","test:all-databases":"pnpm test:int && pnpm test:int:sqlite && pnpm test:int:postgres","dev:generate-importmap":"pnpm build && cross-env NODE_ENV=test PAYLOAD_DB=sqlite PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload generate:importmap"},"version":"0.5.1","_npmUser":{"name":"alacrity_education","email":"tech@alacrity.ro"},"homepage":"https://github.com/Alacrity-Education/payload-plugin-collections-template#readme","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/Alacrity-Education/payload-plugin-collections-template.git","type":"git"},"_npmVersion":"12.0.2","description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","directories":{},"maintainers":[{"name":"alacrity_education","email":"tech@alacrity.ro"}],"sideEffects":["**/*.css","**/*.scss"],"_nodeVersion":"26.8.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"next":"16.3.3","open":"^10.1.0","react":"19.2.6","sharp":"0.34.2","eslint":"^9.23.0","qs-esm":"8.0.1","rimraf":"3.0.2","vitest":"4.0.18","graphql":"^16.8.1","payload":"3.84.1","@swc/cli":"0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","copyfiles":"2.4.1","cross-env":"^7.0.3","react-dom":"19.2.6","typescript":"5.7.3","@types/node":"22.19.9","@types/react":"19.2.14","@payloadcms/ui":"3.84.1","@eslint/eslintrc":"^3.2.0","@payloadcms/next":"3.84.1","@playwright/test":"1.58.2","@types/react-dom":"19.2.3","sort-package-json":"^2.10.0","@swc-node/register":"1.10.9","eslint-config-next":"16.3.3","vite-tsconfig-paths":"6.0.5","@payloadcms/db-sqlite":"3.84.1","mongodb-memory-server":"10.1.4","@payloadcms/db-mongodb":"3.84.1","@payloadcms/db-postgres":"3.84.1","@payloadcms/eslint-config":"3.28.0","@payloadcms/richtext-lexical":"3.84.1"},"peerDependencies":{"react":"^19.0.0","payload":"^3.84.1","@payloadcms/ui":"^3.84.1"},"peerDependenciesMeta":{"react":{"optional":true},"@payloadcms/ui":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/payload-plugin-collection-templates_0.5.1_1789650870795_0.6144358870336"}}},"time":{"created":"2026-09-07T11:13:11.551Z","modified":"2026-09-17T13:14:31.058Z","0.1.0":"2026-09-07T11:13:11.952Z","0.2.0":"2026-09-07T13:23:22.131Z","0.2.1":"2026-09-07T13:57:51.566Z","0.2.2":"2026-09-07T14:05:20.790Z","0.3.0":"2026-09-09T08:12:15.123Z","0.4.0":"2026-09-10T09:46:38.897Z","0.5.0":"2026-09-12T18:05:49.366Z","0.5.1":"2026-09-17T13:14:30.889Z"},"bugs":{"url":"https://github.com/Alacrity-Education/payload-plugin-collections-template/issues"},"author":{"name":"Alacrity"},"license":"MIT","homepage":"https://github.com/Alacrity-Education/payload-plugin-collections-template#readme","keywords":["payload","payloadcms","payload-plugin","plugin","templates","collections","cms"],"repository":{"url":"git+https://github.com/Alacrity-Education/payload-plugin-collections-template.git","type":"git"},"description":"Payload CMS plugin: reusable template collections. Promote a document to a template, create new documents that inherit from it, and switch the whole thing off from the admin panel.","maintainers":[{"name":"alacrity_education","email":"tech@alacrity.ro"}],"readme":"# @alacrity-education/payload-plugin-collection-templates\n\nReusable templates for Payload collections.\n\nPromote a document to a template, then create new documents that start from it. Templates\nlive in their own generated collection, so they are never served as documents of the\ncollection they template — a page template is not a page, and there is nothing to publish.\n\nRequires Payload `^3.84.1`. Works on MongoDB, Postgres and SQLite — the test suite runs\nagainst all three.\n\n## Install\n\n```bash\npnpm add @alacrity-education/payload-plugin-collection-templates\n```\n\n```ts\n// payload.config.ts\nimport { buildConfig } from 'payload'\nimport { collectionTemplatesPlugin } from '@alacrity-education/payload-plugin-collection-templates'\n\nexport default buildConfig({\n  collections: [Pages, Posts, Media],\n  plugins: [\n    collectionTemplatesPlugin({\n      collections: {\n        pages: true,\n        posts: { exclude: ['author'] },\n      },\n    }),\n  ],\n})\n```\n\nThen regenerate the admin import map and your types:\n\n```bash\npayload generate:importmap\npayload generate:types\n```\n\n## What you get\n\nFor every configured collection the plugin generates a shadow collection with the same\nfield schema:\n\n```\npages                    pages-T\n├── doc A                ├── \"Landing page\" template\n└── doc B                └── \"Case study\" template\n   (ordinary documents,    (own endpoint, own access,\n    no plugin columns)      no versions, no _status)\n\nGET  /api/pages          → doc A, doc B\nGET  /api/pages-T        → the templates (authenticated)\nPOST /api/pages/:id/create-template    { \"templateName\": \"Landing page\" }\nPOST /api/pages/create-from-template   { \"templateId\": \"…\" }\n```\n\nOn the source collection:\n\n- **Create template from this page** — a button in the edit view. It asks what to call the\n  template, then copies the document's saved content into `pages-T` under that name. One\n  page can be the origin of as many differently-named templates as you like, and each is\n  independent of the page from the moment it is made.\nNothing else is added — no fields, no columns, no record of which template a document came\nfrom. Both directions are one-time copies, and the source collection's schema is untouched\nby the plugin.\n\nIn the list view, a **Create from template** button opens a dialog to pick a template. The\ndocument is then created from it in a single server-side write and opened for editing —\non a drafts-enabled collection it arrives as a draft, so a template that fills in only\npart of a document still gives you something to work on.\n\nPayload has no component slot inside the list header, so the button sits at the top right\nof the list, just below the search and filter row.\n\n### Why a separate collection\n\nThe alternative is a flag on the document plus filtering on the way out, and the filter\nhas to hold everywhere: REST, GraphQL, relationship pickers, Lexical internal links,\nsitemap queries, the search plugin. A shadow collection needs no filter — a template is\nsimply not a document of that collection. It also gets you, for free:\n\n- no draft/publish workflow on templates (`versions` is off), so there is no \"published\n  template\" to leak to a front end\n- separate unique indexes, so a template never collides with a real document's slug\n- **a template cannot inherit from a template**, because the inheritance field is never\n  cloned into the templates collection. The cycle is impossible by construction, not\n  prevented by a validation rule someone can bypass.\n\n## Inheritance is a snapshot\n\nValues are copied once, when the document is created. It then stands alone: editing the\ntemplate afterwards changes nothing, and nothing records where the content came from.\n\nThis is deliberate. The alternative — resolving inherited fields at read time — means\ninherited values are not in the database, so you cannot query, sort, or full-text search\non them, and every read pays for a join. A snapshot keeps documents ordinary.\n\nThe copy is made server-side, in one write:\n\n```\nPOST /api/pages/create-from-template   { \"templateId\": \"…\" }   → 201 { id }\n```\n\nAn earlier version instead opened an empty create form and refilled it in the browser from\nthe chosen template. That depended on React effect timing, on the form not already being\nmarked modified, and on a form-state round trip — none of which held reliably outside\ndevelopment, and it silently produced blank documents in production. Creating the document\non the server has no such moving parts.\n\nGroups and named tabs merge key by key rather than wholesale, so a document that filled in\none field of a group still inherits the rest of it. Arrays, blocks and rich text are\ncopied whole or not at all.\n\n## What is templatable\n\nEverything in the source collection's field schema, minus:\n\n| Excluded                                                   | Why                                                     |\n| ---------------------------------------------------------- | ------------------------------------------------------- |\n| `unique: true` fields                                      | two documents cannot share the value                    |\n| `virtual` fields and `join` fields                         | not stored; computed from elsewhere                     |\n| `id`, `createdAt`, `updatedAt`, `_status`                  | identify or version one specific document               |\n| auth fields (`email`, `password`, `salt`, `sessions`, …)   | credentials are not content                             |\n| upload fields (`filename`, `filesize`, `sizes`, `url`, …)  | describe one uploaded file                              |\n| the plugin's own fields                                    | keeps templates from inheriting from templates          |\n| anything in a collection's `exclude` list                  | your call                                               |\n\nCloned fields keep their `validate`, `hooks`, `admin.condition` and `defaultValue`, so a\ntemplate behaves like the real thing. `required` is dropped by default (`relaxRequired`),\nbecause a template is usually a partial starting point — a template that demands every\nrequired field cannot be saved half-finished.\n\n## Databases\n\nThe plugin is adapter-agnostic, but generating a collection from another collection's\nschema is not a neutral act on a relational database, so a few things are handled for you.\n\n**Explicit table and enum names are prefixed, never reused.** A `select`, `radio`,\n`array` or block with an explicit `dbName` or `enumName` names a literal table or enum\ntype, and Payload uses it verbatim rather than prefixing it with the parent table. Cloning\nit as-is would ask for an identifier the source collection already owns — Postgres creates\nthe table once and points its parent foreign key at whichever collection was built last,\nsilently detaching the other.\n\nSo the clone prefixes them with its own slug, at any depth, including inside block\ndefinitions. Your collection keeps exactly the name you gave it:\n\n```\nposts.attachments    → post_attachments             (your dbName, untouched)\nposts-T.attachments  → posts_t_post_attachments     (prefixed)\nposts.stage          → enum_post_stage              (your enumName, untouched)\nposts-T.stage        → posts_t_enum_post_stage      (prefixed)\n```\n\nPrefixed rather than dropped, deliberately. Dropping would make Payload derive a name from\nthe full field path — and an explicit `dbName` is usually there precisely because that\npath is too long. On a real project, an array named `featuredCards` inside a `cardBlock`\nwith `dbName: 'card_block_fcards'` derives\n`enum_pages_t_blocks_card_block_featured_cards_links_link_appearance`: 67 characters, over\nthe limit below. Prefixing the author's short name gives 52 instead.\n\nA function-valued `dbName` stays a function; the prefix is applied to what it returns.\n\nIf you want a specific name on the generated collection, set it deliberately through\n`overrides`.\n\n**Identifiers have a 63-character ceiling on Postgres.** The generated slug is suffixed\n`-T` rather than something readable precisely because of this: every derived name pays for\nit, nested array and block tables included (`pages_t_sections`, not\n`pages_templates_sections`), and Payload throws if the result overflows. Shorten the slug\nfurther if a long collection name, or a deeply nested block, still takes you close:\n\n```ts\ncollectionTemplatesPlugin({\n  collections: {\n    'editorial-content-sections': { slug: 'editorial-T' },\n  },\n})\n```\n\n**Deleting a template** never takes content with it. Documents made from it hold their own\ncopy and reference nothing, so there is no link to break.\n\n## Configuration\n\n```ts\ncollectionTemplatesPlugin({\n  // Which collections get templates. `true` for defaults.\n  collections: {\n    pages: true,\n    posts: {\n      // Never cloned into the template, never inherited.\n      exclude: ['author', 'publishedAt'],\n      // Defaults to `posts-T`.\n      slug: 'post-blueprints',\n      // Last chance to change the generated collection.\n      overrides: (collection) => ({\n        ...collection,\n        admin: { ...collection.admin, group: 'Content' },\n      }),\n    },\n  },\n\n  // Access for every generated templates collection. Operations you specify replace the\n  // inherited one; the rest inherit from the source collection. Optional.\n  access: {\n    delete: ({ req }) => req.user?.role === 'admin',\n  },\n\n  // Admin nav group for the generated collections and the settings global.\n  // Pass `false` to leave them ungrouped. Default: 'Templates'.\n  adminGroup: 'Templates',\n\n  // Keep `required` on cloned fields. Default: false (required is dropped).\n  relaxRequired: true,\n\n  // Access for the settings global. Defaults to authenticated users — worth tightening,\n  // since this is the switch that turns the plugin off.\n  settingsAccess: {\n    read: ({ req }) => Boolean(req.user),\n    update: ({ req }) => req.user?.role === 'admin',\n  },\n\n  // Slug of the settings global. Default: 'collection-templates-settings'.\n  settingsGlobalSlug: 'collection-templates-settings',\n\n  // Build-time kill switch. Schema is still added so migrations stay consistent, but no\n  // hooks, components or behaviour are registered. To turn the plugin off without a\n  // redeploy, use the settings global instead.\n  disabled: false,\n})\n```\n\n### Access control\n\nEach generated collection inherits its source collection's `access` functions, ANDed with\nan authentication check. Whoever can edit `pages` can manage page templates; there is no\nsecond permission model to keep in sync.\n\nRow-level access — an access function that returns a query rather than a boolean — is\npassed through only when every field it constrains also exists on the templates\ncollection. If it references a field that was excluded (`author`, say, or a unique slug),\nthe constraint cannot be honoured: the database would match nothing and silently turn a\nrow-level rule into a blanket deny. The plugin denies the operation explicitly instead,\nlogs which operation and why, and tells you to pass an explicit `access` override:\n\n```ts\ncollectionTemplatesPlugin({\n  collections: { pages: true },\n  access: {\n    read: ({ req }) => Boolean(req.user),\n  },\n})\n```\n\n## Turning it off from the admin panel\n\n**Globals → Collection Templates** has a single `enabled` checkbox. Unchecking it:\n\n- stops values being copied from templates\n- stops promoted documents syncing to their templates\n- hides the template controls on documents and the \"New from template\" dropdown\n- shows a notice on the templates collections explaining the state\n\nIt does **not** touch the schema or the data. Generated collections, columns and every\nexisting template stay exactly as they are, so turning it back on is lossless. This is\nalso why it cannot remove the generated collections from the admin nav: a Payload config\nis built at boot, and fields and collections cannot appear and disappear at runtime\nwithout breaking migrations.\n\nThe resolved value is cached for ten seconds and dropped the moment the global is saved,\nso the switch is not a database read on every write and takes effect immediately. The\ncache is keyed by the global's slug and held on `globalThis`, deliberately: Next bundles\nserver components and route handlers separately, each with its own Payload instance, so a\ncache keyed by instance would let the write clear one copy while renders kept reading a\nstale one. The ten-second TTL remains the backstop for writes this process cannot see — a\ndirect database edit, or another instance behind a load balancer.\n\n## Notes and edge cases\n\n- **Plugin order.** Fields are cloned when this plugin runs. If another plugin adds fields\n  you want templatable, list this plugin after it.\n- **Blocks** are copied so their relational identifiers can be prefixed, and so are the\n  fields inside them, at any depth — an array nested in a block carries its own `dbName`\n  and that name is just as literal. Block content templates fine; `required` inside a\n  block is not relaxed. A block referenced by slug through `blockReferences` is owned by\n  the config rather than the field, so an explicit `dbName` on such a block is left alone;\n  remove it or exclude the field if the schema fails to build.\n- **Creating a template copies saved content**, not what is on screen. The button reads\n  the stored document server-side, so unsaved edits are deliberately left out — save\n  first, then create the template. On a drafts-enabled collection the draft being edited\n  is what gets copied.\n- **Deleting a template** affects nothing. Documents made from it hold their own copy and\n  reference it in no way.\n- **Creating twice** makes two templates. The button is an action, not a state, so\n  nothing is overwritten and nothing is kept in sync — press it again with a different\n  name to capture a variant.\n\n## Development\n\n```bash\npnpm install\npnpm test:int               # vitest: unit + integration, in-memory MongoDB, no setup\npnpm lint\npnpm build\n```\n\nThe dev app runs on whichever database `PAYLOAD_DB` names, so the same suite covers all\nthree:\n\n```bash\npnpm test:int               # mongodb (default), in-memory\npnpm test:int:sqlite        # sqlite, throwaway file\npnpm test:int:postgres      # postgres, needs DATABASE_URL\npnpm test:all-databases     # all three in sequence\n```\n\nPostgres needs a server. Anything works, including:\n\n```bash\ndocker run -d --rm --name payload-tpl-pg -p 5432:5432 \\\n  -e POSTGRES_USER=payload -e POSTGRES_PASSWORD=payload -e POSTGRES_DB=payload_templates \\\n  postgres:16-alpine\nexport DATABASE_URL=postgres://payload:payload@127.0.0.1:5432/payload_templates\npnpm test:int:postgres\n```\n\n`pnpm test:int` spins up its own in-memory MongoDB. Running the app or the browser tests\nneeds a real one, because Next forces `NODE_ENV=development` and the in-memory branch of\nthe dev config only fires under `NODE_ENV=test`:\n\n```bash\ncp dev/.env.example dev/.env      # point DATABASE_URL at a replica set\npnpm dev                          # dev app on :3000/admin, dev@payloadcms.com / test\npnpm test:e2e                     # playwright, against that dev app\n```\n\nMongoDB needs to be a replica set (`--replSet`), not a standalone, or Payload's\ntransactions cannot start.\n\n`generate:types` and `generate:importmap` run against a throwaway SQLite file, not the\nin-memory MongoDB. The memory server spawns mongod children and holds their handles, so\nthe Payload CLI writes its output and then never exits — each codegen run would leave a\n~200 MB process behind. SQLite has no server and the command exits on its own.\n\n`pnpm test:e2e` downloads its own Chromium. To use a browser you already have instead,\npoint Playwright at it with `launchOptions.executablePath` — any recent Chromium-based\nbuild works.\n\nThe `dev/` directory is a working Payload app the tests run against, with a fixture for\neach behaviour worth pinning down:\n\n| Collection | What it covers                                                            |\n| ---------- | ------------------------------------------------------------------------- |\n| `pages`    | drafts enabled, a unique `slug`, a group and an array — the general case   |\n| `posts`    | `exclude: ['author']`                                                     |\n| `notes`    | row-level access control, both the kind that transfers and the kind that cannot |\n\n`posts` also carries an explicit `enumName` and `dbName`, so every run proves the clone\ndoes not steal the source collection's relational identifiers.\n\n## Publishing\n\nThe published package is `dist/`, and `exports` points there — so `npm publish` and\n`pnpm publish` produce the same, correct artifact. (Worth knowing: `publishConfig.exports`\nis a pnpm-only feature. This package does not rely on it, because npm ignores it and would\notherwise ship a manifest pointing at TypeScript sources that are not in the tarball.)\n\n```bash\nnpm login                     # once, as the account owning the @alacrity-education scope\npnpm build                    # or: npm run build\nnpm publish                   # scoped packages need --access public; publishConfig sets it\n```\n\nBefore the first publish, check the tarball is what you think it is:\n\n```bash\nnpm pack --dry-run            # file list\nPLUGIN_FROM_DIST=1 pnpm dev   # run the dev app against dist, not src\n```\n\n`PLUGIN_FROM_DIST=1` drops the dev app's source aliases so it resolves the package through\n`exports` the way an installed dependency would. Run the e2e suite against it and you have\ntested the artifact rather than the working tree.\n\nTo cut a release, bump the version and tag it:\n\n```bash\nnpm version patch             # or minor / major\nnpm publish\ngit push --follow-tags\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}