{"_id":"@anvilkit/puck-studio","_rev":"13-20b154d2ef52c3035fdd0147d9cbf365","name":"@anvilkit/puck-studio","dist-tags":{"latest":"0.4.4"},"versions":{"0.0.1":{"name":"@anvilkit/puck-studio","version":"0.0.1","_id":"@anvilkit/puck-studio@0.0.1","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"dist":{"shasum":"a0ac22bbccd6d053877e02d20b83066dee099808","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.0.1.tgz","fileCount":6,"integrity":"sha512-D+BDJUzylnkZ5VMINKCLk1LP1WDZX2g7+wkld4w+OBSb6rmMBpXLJcU+Z1SOwrtUGMUQTblqy1eUrrUtIv/lgA==","signatures":[{"sig":"MEUCIQCm88U/j3RC2jF9J000Y+bdzViYqf4C7gk5Tuww/dBzOgIgCDEojyYya3cNfQPYRY/aEWGD/sa6ep/XRLnFSaEETsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317062},"main":"./dist/index.js","type":"module","_from":"file:anvilkit-puck-studio-0.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles.css":"./dist/styles.css"},"scripts":{"dev":"next dev","lint":"tsc --noEmit","build":"tsup"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_resolved":"/tmp/551a34f199a6777c7b7206a2acf44fae/anvilkit-puck-studio-0.0.1.tgz","_integrity":"sha512-D+BDJUzylnkZ5VMINKCLk1LP1WDZX2g7+wkld4w+OBSb6rmMBpXLJcU+Z1SOwrtUGMUQTblqy1eUrrUtIv/lgA==","_npmVersion":"10.8.2","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"_nodeVersion":"20.20.1","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.36.0","zustand":"^5.0.11","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","@radix-ui/react-tooltip":"^1.2.8","class-variance-authority":"^0.7.1","@base-ui-components/react":"1.0.0-rc.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.1.6","tsup":"^8.5.1","react":"^19.2.4","shadcn":"^4.0.5","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^22.19.15","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","@tailwindcss/postcss":"^4.2.1"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","tailwindcss":"^4.2.1","@base-ui/react":"^1.2.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.0.1_1773714522739_0.30179741988720643","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@anvilkit/puck-studio","version":"0.1.0","_id":"@anvilkit/puck-studio@0.1.0","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"ff24aaae328b69cbd0c285a2f3de169a87d987cd","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.1.0.tgz","fileCount":13,"integrity":"sha512-6S44ZJfTxtFVnI5HVvGTvjUEA8uOrIfz7PnQiB3Llic+mMYx/oQuX0LZO/viF0ZJZglagNQOISYS1dVocebY9w==","signatures":[{"sig":"MEUCIQDWn6c2S4XLINqgD/KhYn64IY3aQ9iKlW3ixxpT/VYWZAIga/MaVDUL/YEOtPaoJ5HtHjvt5IRMv4i0JH66vXcokdA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":494403},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.mjs","require":"./dist/legacy.js"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.mjs","require":"./dist/overrides.js"},"./styles.css":"./dist/styles.css"},"gitHead":"be5417a2046d72ba0d01beae3a90f1e014c5f3f1","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"tsup","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.7.0","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.9.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.1.6","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.0.8","vitest":"^4.1.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.0.0","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","tailwindcss":"^4.2.1","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.1.0_1773859077582_0.22192515057420836","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@anvilkit/puck-studio","version":"0.2.0","_id":"@anvilkit/puck-studio@0.2.0","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"028af3b67eb4226bd5904439403d04884b76808a","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.2.0.tgz","fileCount":13,"integrity":"sha512-2mHTSxNY8Lt1vAFfMYjPA5zRAugvt6636x0B7rktxMCqGV1oBJKO9cgYJeRfqR+ceM8TYVTs+mIydGiBp0DC5A==","signatures":[{"sig":"MEYCIQCLE7BXlKj/tzgwj4mV3993gH5qcINMP1PdE1OkZTevJQIhAMHaDk0Nd7amUR78qREYzhe7igZMv+RiRPBFTwyJkpaI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":496752},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.mjs","require":"./dist/legacy.js"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.mjs","require":"./dist/overrides.js"},"./styles.css":"./dist/styles.css"},"gitHead":"078431afea34947f71fba40e05df24791ce93e00","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"tsup","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.1.6","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.0.8","vitest":"^4.1.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.0.0","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","tailwindcss":"^4.2.1","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.2.0_1773887935933_0.7745907536092025","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anvilkit/puck-studio","version":"0.3.0","_id":"@anvilkit/puck-studio@0.3.0","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"88dcf5119d078a1d8082d811aec60cd6b7a0cad7","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.3.0.tgz","fileCount":13,"integrity":"sha512-+bHt4jGtbKDEX0QcMIlvEmONz7ZTx2FJmTakmXnrRTj89M/fCRZoajim8iedec4uhI73g9Mp+PhutNDofWgEmA==","signatures":[{"sig":"MEUCICj7gaXt/0ekaJXRLz2i0HrbuJl/uYVkBxCTDO+pg4TeAiEAlVoi+rc9Nobv+6OvM1gjfXeiQf5EtgTW3oZIBDHsL/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":496791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.mjs","require":"./dist/legacy.js"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.mjs","require":"./dist/overrides.js"},"./styles.css":"./dist/styles.css"},"gitHead":"9f8b4a8f489e97f0f6ce946c272775154d861e8d","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"tsup","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@anvilkit/puck-studio":"^0.2.0","@puckeditor/plugin-ai":"^0.6.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.1.6","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.0.8","vitest":"^4.1.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.0.0","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","tailwindcss":"^4.2.1","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.3.0_1773902614938_0.8505313105409251","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@anvilkit/puck-studio","version":"0.3.1","_id":"@anvilkit/puck-studio@0.3.1","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"0b2f0d04b2da45ecc69da8ea477ca0cc7b6aba11","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.3.1.tgz","fileCount":15,"integrity":"sha512-PDR6y4kBe4NfuNUr3mPtmJu2826BnXf80ozcZ98shv6RytHoYCO3dyiyvS4OT8C/WDSxr7/MBTDEtKGHPA8pGg==","signatures":[{"sig":"MEUCIHROHb5OPA879+sIHPgHxNa4pSoiL7iWCI+omXhV9KZWAiEAlMI1M4eyiTThwniWUzqClqGZZkUxCdmsGjZJEuLQ3Qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":501488},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"e9bf4d54142f99ac5743abeac3a609f123d700e5","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/validate-package-exports.mjs","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.1.6","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.0.8","vitest":"^4.1.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.0.0","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","tailwindcss":"^4.2.1","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.3.1_1773903798749_0.5812130964618394","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@anvilkit/puck-studio","version":"0.3.2","_id":"@anvilkit/puck-studio@0.3.2","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"328400fd6a5372b652e77de3f6847869cea73e5a","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.3.2.tgz","fileCount":15,"integrity":"sha512-RvPYOWNyKQm05sufVvWh6h76zdK3uyy8aDS1o+908+vh17lJAC3/Nso+NwgQ7/k2SJh0WIKBVMIBsmz7JzVmzw==","signatures":[{"sig":"MEYCIQDTh+l1+FPpVF0FSMGzLyrp3eQcbwPxOsLr34NDt+PY0wIhAMWphiS6MAUtAwMjY7nsChmr9roY4uou7XQvbo+Zzvak","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":584175},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"c635eef44485eb591b89b94a2d9ccc0b6d47bf0d","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/build-styles.mjs && node scripts/link-package-styles.mjs && node scripts/validate-package-exports.mjs","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.1.6","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.0.8","vitest":"^4.1.0","postcss":"^8.5.6","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","tailwindcss":"^4.2.1","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.0.0","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.3.2_1773906025592_0.041019268383234","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@anvilkit/puck-studio","version":"0.3.3","_id":"@anvilkit/puck-studio@0.3.3","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"b854976ecb26c55746601fe80200e85fa6e58b59","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.3.3.tgz","fileCount":15,"integrity":"sha512-5zpH6mhWJC4bYMUabcNKJvxQGFRMcDej3Ii20p1jX8UHm1VAbaqmupZRFHaKaG+nv1o7vftrNtl9ZcXq5JJ1ZQ==","signatures":[{"sig":"MEYCIQDK2ed/Fv1xjgxjl1JxaEBTsc0VEVBe1+ZGGqxeIOkg/AIhANGX1AKCDceDr9DzvyH1XllclaZnEhfg0O6Yku+QxfYl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":580222},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"61c80b736cdfdf24ce0234a621a117ce23699542","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/build-styles.mjs && node scripts/link-package-styles.mjs && node scripts/validate-package-exports.mjs","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.1.6","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.0.8","vitest":"^4.1.0","postcss":"^8.5.6","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","tailwindcss":"^4.2.1","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.0.0","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.3.3_1773906869484_0.9612293842955526","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@anvilkit/puck-studio","version":"0.3.4","_id":"@anvilkit/puck-studio@0.3.4","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"1df1d56f1c2ff1cf2582cc0644a9c7c7e9636f56","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.3.4.tgz","fileCount":15,"integrity":"sha512-Bsn40X4zotqLhvVSZVQ6KzNGVAgcPE9feAJj4t9begdLuYaw0WC0qHaLnVaxxoTBwdfwiNozwP5urGxv6mx/NQ==","signatures":[{"sig":"MEYCIQDTYKeFYbmzQ+30AAJzA/o7nFCTfoAleJd6Ci5qE0YfjwIhAPevJm29z11xmHU9K71AYp8qMcQoFx3H6JWSH2Wgl4ag","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":580278},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"c52ce5d90e9af7752b11c663a6fd453662ec35db","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/build-styles.mjs && node scripts/link-package-styles.mjs && node scripts/validate-package-exports.mjs","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.1.6","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.0.8","vitest":"^4.1.0","postcss":"^8.5.6","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","tailwindcss":"^4.2.1","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.0.0","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.3.4_1773907242440_0.3206117397688204","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@anvilkit/puck-studio","version":"0.4.0","_id":"@anvilkit/puck-studio@0.4.0","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"5a6ee72caf6dd0f32e64e881de3391208efbcd5f","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.4.0.tgz","fileCount":15,"integrity":"sha512-S2nnX4eY2RxPJlEOZ7JM8t10kDbIe1r8DhXsiYpK7jiIB6K2bLQLOR4jCguTVuviKyKGBSRgEA424LBBlyE8Dw==","signatures":[{"sig":"MEQCIGZeegIBko7myoeRPiVsBDcCRIScP+LJcSCS/Bp98KMMAiAH/JApOfc3PGjxu4QO3NVjLPJUW8D0wbRzN9OXmvD6tA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":616042},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"1c1b4a5107a642d2baa0f4449fd11b062a74d699","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/build-styles.mjs && node scripts/link-package-styles.mjs && node scripts/validate-package-exports.mjs","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","@tanstack/react-virtual":"^3.13.23","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.2.0","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.1.0","vitest":"^4.1.0","postcss":"^8.5.8","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","tailwindcss":"^4.2.2","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.57.1","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.4.0_1773977499168_0.49044940804540027","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@anvilkit/puck-studio","version":"0.4.1","_id":"@anvilkit/puck-studio@0.4.1","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"8e5cc8ef5c4078f5f93cb2b0cadcbd25f943da92","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.4.1.tgz","fileCount":15,"integrity":"sha512-eda1BEytlm1VStFck0Gw5vFk8hUxFKsv2v67ZmihUUfaBc9u2v/thSpdXj33mI/pTh1rAnL4rXHfZnrF3mkH9Q==","signatures":[{"sig":"MEUCIA5PZ7x8tBp7n7HRQY/lb2hYT/qCLLlNhYLwqKQZDpGjAiEA+p4T4gjiIiVzZzw87jC8RuQpkGzlZwy9jGgXZsI95u4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648734},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"c797ad9f584e95fb7489e69077aed75e6e90dd50","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/build-styles.mjs && node scripts/link-package-styles.mjs && node scripts/validate-package-exports.mjs","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","@tanstack/react-virtual":"^3.13.23","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.2.0","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.1.0","vitest":"^4.1.0","postcss":"^8.5.8","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","tailwindcss":"^4.2.2","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.57.1","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.4.1_1773991801199_0.18164697575966127","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@anvilkit/puck-studio","version":"0.4.2","_id":"@anvilkit/puck-studio@0.4.2","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"349043465868d1f7e486c864654abf26f08c35fb","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.4.2.tgz","fileCount":15,"integrity":"sha512-PHDXc/hFqVa0hH1JBjygqIxOeuMKYrd957Pw/bEN1Ni/moETf1OerXAgMFa3i1ixP6z53xu+J8E/ome6/NJVmA==","signatures":[{"sig":"MEQCIGAHKamfpsdInkVgTzDMjDakDXshfAmtVCThcudVkmw/AiA9Tq9+MO+y3/wMf642Ly8b8ZM6C2GokP+c6VD500tRsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":721704},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"dad378556f1cc05091909eda3c48f5834a1022ea","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/build-styles.mjs && node scripts/link-package-styles.mjs && node scripts/validate-package-exports.mjs","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","@tanstack/react-virtual":"^3.13.23","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.2.0","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.1.0","vitest":"^4.1.0","postcss":"^8.5.8","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","tailwindcss":"^4.2.2","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.57.1","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.4.2_1774035161402_0.40114903500697396","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@anvilkit/puck-studio","version":"0.4.3","_id":"@anvilkit/puck-studio@0.4.3","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"tsd":{"directory":"src/types","compilerOptions":{"paths":{"@/*":["./src/*"],"@anvilkit/puck-studio":["./index.ts"]},"strict":true}},"dist":{"shasum":"d37818da69389455308c6ca432d850352e91918d","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.4.3.tgz","fileCount":15,"integrity":"sha512-bIXNQATNBcWi1RoG7uDXXuTLqfPWtA3PkFvc+0ox9N72uFQorGzkTc5pX5z/bOysl6AqSOrvyi1r6M6GncHcjw==","signatures":[{"sig":"MEQCICL6I6ZihBCUdL3UeFvFyqqR88bxpPd427KHJ6olPQ3yAiBAPzQUg/aca9Ak5pRadDlX1RrompvId+GQFQGmbYyUIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":723264},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"7444b721d7eb12af0694c24d4e0eb6371ba8626b","scripts":{"dev":"next dev","lint":"tsc --noEmit && eslint src","test":"vitest --run","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/build-styles.mjs && node scripts/link-package-styles.mjs && node scripts/validate-package-exports.mjs","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","lint:types":"tsc --noEmit","test:types":"tsd","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'"},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"_npmVersion":"11.6.1","description":"Shadcn UI replacement for all Puck Editor override surfaces","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"24.10.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","motion":"^12.38.0","zustand":"^5.0.12","lucide-react":"^0.577.0","@dnd-kit/core":"^6.3.1","tailwind-merge":"^3.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","@tanstack/react-virtual":"^3.13.23","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","next":"^16.2.0","tsup":"^8.5.1","react":"^19.2.4","eslint":"^9.0.0","shadcn":"^4.1.0","vitest":"^4.1.0","postcss":"^8.5.8","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.19.15","tailwindcss":"^4.2.2","@types/react":"^19.2.14","tw-animate-css":"^1.4.0","@puckeditor/core":"0.21.1","@types/react-dom":"^19.2.3","semantic-release":"^25.0.3","typescript-eslint":"^8.57.1","@tailwindcss/postcss":"^4.2.1","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","javascript-obfuscator":"^5.3.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.0"},"peerDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1"},"_npmOperationalInternal":{"tmp":"tmp/puck-studio_0.4.3_1774036240974_0.15307662144709755","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@anvilkit/puck-studio","version":"0.4.4","description":"Shadcn UI replacement for all Puck Editor override surfaces","publishConfig":{"access":"public"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./legacy":{"types":"./dist/legacy.d.ts","import":"./dist/legacy.js","require":"./dist/legacy.cjs"},"./overrides":{"types":"./dist/overrides.d.ts","import":"./dist/overrides.js","require":"./dist/overrides.cjs"},"./styles.css":"./dist/styles.css"},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":["./dist/styles.css"],"scripts":{"build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsup && node scripts/build-styles.mjs && node scripts/link-package-styles.mjs && node scripts/validate-package-exports.mjs","dev":"next dev","lint":"tsc --noEmit && eslint src","lint:types":"tsc --noEmit","release":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js'","release:dry":"npx -y -p node@24.10.0 -c 'node ./node_modules/semantic-release/bin/semantic-release.js --dry-run --no-ci'","test":"vitest --run","test:types":"tsd"},"peerDependencies":{"@base-ui/react":"^1.3.0","@puckeditor/core":"^0.21.1","react":"^19.2.4","react-dom":"^19.2.4"},"dependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@floating-ui/react":"^0.27.19","@puckeditor/plugin-ai":"^0.6.0","@tanstack/react-virtual":"^3.13.23","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cmdk":"^1.1.1","lucide-react":"^0.577.0","motion":"^12.38.0","tailwind-merge":"^3.5.0","zustand":"^5.0.12"},"devDependencies":{"@eslint/js":"^10.0.1","@puckeditor/core":"0.21.1","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/npm":"^13.1.5","@semantic-release/release-notes-generator":"^14.1.0","@tailwindcss/postcss":"^4.2.1","@types/node":"^22.19.15","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","conventional-changelog-conventionalcommits":"^9.3.0","eslint":"^9.0.0","javascript-obfuscator":"^5.3.0","next":"^16.2.0","postcss":"^8.5.8","react":"^19.2.4","react-dom":"^19.2.4","semantic-release":"^25.0.3","shadcn":"^4.1.0","tailwindcss":"^4.2.2","tsd":"^0.33.0","tsup":"^8.5.1","tw-animate-css":"^1.4.0","typescript":"^5.9.3","typescript-eslint":"^8.57.1","vitest":"^4.1.0"},"tsd":{"directory":"src/types","compilerOptions":{"strict":true,"paths":{"@anvilkit/puck-studio":["./index.ts"],"@/*":["./src/*"]}}},"gitHead":"5943c2979c9b8cd22e0b900262378fe2111d2163","_id":"@anvilkit/puck-studio@0.4.4","_nodeVersion":"24.10.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-w1764ojzlyBN+QF3T1mGXDxnTRtotnnAGkQlxJg3XU4CH6KkGNrQakCqkW0Q9a5TShXQ2r6r9MJVvFlCCGyFUg==","shasum":"438a15d5d25ff1b3ba708336453c0d2e227fa959","tarball":"https://registry.npmjs.org/@anvilkit/puck-studio/-/puck-studio-0.4.4.tgz","fileCount":23,"unpackedSize":408428,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAIz+RCVf9AZAkTepwNoaN3nwukp/aOjV5cDWURm7CPIAiEAlyRAWVrAAfj9soDPgNrfDDFgCIrmB28sQSJKNPiwGnE="}]},"_npmUser":{"name":"anvilkit","email":"ancyloce@gmail.com"},"directories":{},"maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/puck-studio_0.4.4_1774036762361_0.919276009234155"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-17T02:28:42.695Z","modified":"2026-03-20T19:59:22.630Z","0.0.1":"2026-03-17T02:28:42.892Z","0.1.0":"2026-03-18T18:37:57.731Z","0.2.0":"2026-03-19T02:38:56.084Z","0.3.0":"2026-03-19T06:43:35.100Z","0.3.1":"2026-03-19T07:03:18.935Z","0.3.2":"2026-03-19T07:40:25.759Z","0.3.3":"2026-03-19T07:54:29.643Z","0.3.4":"2026-03-19T08:00:42.813Z","0.4.0":"2026-03-20T03:31:39.355Z","0.4.1":"2026-03-20T07:30:01.360Z","0.4.2":"2026-03-20T19:32:41.580Z","0.4.3":"2026-03-20T19:50:41.202Z","0.4.4":"2026-03-20T19:59:22.498Z"},"description":"Shadcn UI replacement for all Puck Editor override surfaces","maintainers":[{"name":"anvilkit","email":"ancyloce@gmail.com"}],"readme":"# @anvilkit/puck-studio\n\n[![npm](https://img.shields.io/npm/v/@anvilkit/puck-studio)](https://www.npmjs.com/package/@anvilkit/puck-studio)\n[![license](https://img.shields.io/npm/l/@anvilkit/puck-studio)](https://www.npmjs.com/package/@anvilkit/puck-studio)\n[![react](https://img.shields.io/badge/react-19-blue)](https://react.dev)\n[![puck](https://img.shields.io/badge/puck-%5E0.21.1-purple)](https://puckeditor.com)\n\nOpinionated Puck editor chrome and override pack built with React 19, `@base-ui/react`, and Tailwind v4.\n\n> Chinese reference: [docs/README.zh.md](./docs/README.zh.md). This README is the canonical, up-to-date guide for the current implementation.\n\n## What This Package Gives You\n\n- `Studio`: a desktop editor shell around `<Puck />` with a custom header, left sidebar, preview area, and fields panel\n- `puckOverrides`: a packaged set of Puck overrides for drawer, outline, preview, canvas, and fields surfaces\n- Virtualized image and copy libraries with ghost-drag into the canvas\n- Per-instance persisted UI state via `storeId`\n- Persisted locale state plus message overrides\n- Light/dark theme sync between the host document and the Puck iframe\n- Optional AI copilot panel when `aiHost` is provided\n- Exported compiled stylesheet in `@anvilkit/puck-studio/styles.css`\n\n## Requirements\n\n| Package | Version |\n|---|---|\n| `react` | `^19.2.4` |\n| `react-dom` | `^19.2.4` |\n| `@puckeditor/core` | `^0.21.1` |\n| `@base-ui/react` | `^1.3.0` |\n\n`next` is used only by the local demo app in [`app/`](./app) and is not imported from the publishable library code in [`src/`](./src).\n\nStyles note:\nThe root runtime entrypoints now auto-load the compiled package stylesheet. `import \"@anvilkit/puck-studio/styles.css\"` is still available if you want to load the CSS explicitly, but `import { Studio } from \"@anvilkit/puck-studio\"` and `import { puckOverrides } from \"@anvilkit/puck-studio/overrides\"` already bring the package styles with them.\n\n## Installation\n\n```bash\npnpm add @anvilkit/puck-studio\n```\n\nThe package publishes:\n\n- root exports from `@anvilkit/puck-studio`\n- overrides-only exports from `@anvilkit/puck-studio/overrides`\n- deprecated compatibility exports from `@anvilkit/puck-studio/legacy`\n- compiled package styles from `@anvilkit/puck-studio/styles.css`\n\n## Recommended Usage: `Studio`\n\n`Studio` is the higher-level entry point. It mounts `Puck`, injects Puck base CSS, creates the UI and i18n stores, merges the default overrides, and renders the custom shell.\n\n```tsx\nimport { Studio } from \"@anvilkit/puck-studio\";\n\nexport function Editor({\n  config,\n  data,\n  setData,\n  publishPage,\n  saveDraft,\n  savingDraft,\n  lastSavedAt,\n  openShare,\n}) {\n  return (\n    <Studio\n      config={config}\n      data={data}\n      onChange={setData}\n      onSaveDraft={saveDraft}\n      isSavingDraft={savingDraft}\n      lastSavedAt={lastSavedAt}\n      onPublish={publishPage}\n      onOpenShare={openShare}\n      className=\"h-screen\"\n      storeId=\"marketing-home\"\n    />\n  );\n}\n```\n\n### `Studio` Props That Matter Most\n\n| Prop | What it does |\n|---|---|\n| `config`, `data`, `onPublish` | Standard Puck inputs |\n| `onChange` | Optional Puck `onChange` passthrough |\n| `onBack` | Optional header back-button click handler; when provided, the back button is rendered |\n| `onSaveDraft`, `isSavingDraft`, `lastSavedAt` | Wires the header draft action to your persistence flow and lets the host control lightweight save status |\n| `onOpenShare`, `onOpenCollaborators`, `onExportJson` | Lets host apps replace secondary header actions with real share, collaborator, or export workflows |\n| `onHeaderAction` | Optional unified callback for studio chrome action reporting (`undo`, `redo`, `save-draft`, `publish`, `open-share`, `open-collaborators`, `export-json`, `toggle-theme`) |\n| `isPublishing` | Optional loading state for the publish button |\n| `overrideExtensions` | Merged last, so your overrides win over the packaged defaults |\n| `images` | Configures image library `items`, `seeds`, or paged loading |\n| `copywritings` | Configures copy library `items` or paged loading |\n| `aiHost` | Lazily loads `@puckeditor/plugin-ai` and renders its panel in the copilot tab |\n| `storeId` | Namespaces persisted UI state under `anvilkit-ui-${storeId}` |\n| `locale` | Current locale string; defaults to `\"zh\"` |\n| `messages` | Plain key/value message map used by the shell |\n| `className` | Applied to the outer wrapper around `Puck` |\n\nMerge order for overrides is:\n\n```ts\n{ ...(aiPlugin?.overrides ?? {}), ...puckOverrides, ...overrideExtensions }\n```\n\nThat means consumer overrides take precedence.\n\n### Studio Chrome\n\nThe studio keeps viewport switching plus undo/redo in a canvas action bar above the preview. The header now keeps theme toggle, collaborators, save/publish, and `More`. Every action still uses the current Puck data from the editor state, and `onHeaderAction` continues to report undo/redo even though those controls now live in the canvas chrome.\n\n```tsx\n<Studio\n  config={config}\n  data={data}\n  onPublish={publishPage}\n  onSaveDraft={saveDraft}\n  isSavingDraft={savingDraft}\n  lastSavedAt={draftSavedAt}\n  onOpenShare={(currentData) => openShareModal(currentData)}\n  onOpenCollaborators={(currentData) => openCollaboratorsPanel(currentData)}\n  onExportJson={(currentData) => exportDocument(currentData)}\n  onHeaderAction={(action) => {\n    console.log(action.type, action.data);\n  }}\n/>\n```\n\nBy default:\n\n- `Save Draft` calls `onSaveDraft` when provided\n- `Publish` calls `onPublish`\n- `Share` opens the built-in share dialog unless `onOpenShare` is provided\n- `Collaborators` opens the built-in popover unless `onOpenCollaborators` is provided\n- `Export JSON` uses the built-in JSON export unless `onExportJson` is provided\n\n### Demo App Coverage\n\n[`app/page.tsx`](./app/page.tsx) is the live showcase for the current `Studio` integration. It now wires `seededImageDemo`, `pagedImageDemo`, and `pagedCopyDemo` into `Studio`, plus demo `onSaveDraft` and `onPublish` handlers, so the local page exercises both sidebar libraries and the shell actions together.\n\nUse `pnpm dev` and the sidebar tabs to verify:\n\n- switching between seeded and paged image modes\n- search behavior in both libraries\n- image ghost-drag from `ImageLibrary`\n- text ghost-drag from `CopyLibrary`\n- grouped category presentation in `CopyLibrary`\n- the recommended `images` and `copywritings` integration pattern inside `Studio`\n- draft save and publish wiring from the header shell\n\n## Library Customization\n\n### Image Library\n\n`ImageLibrary` uses `@tanstack/react-virtual` with row-based virtualization over the existing two-column grid. Infinite loading is unified behind `loadPage(query, page, pageSize)`, while backward-compatible fixed-data inputs remain supported.\n\n```tsx\nimport type { ImageItem, ImagesProps } from \"@anvilkit/puck-studio\";\n\nconst brandImages: ImageItem[] = [\n  { id: \"hero-1\", src: \"https://cdn.example.com/hero.jpg\", alt: \"Hero\" },\n  { id: \"logo-1\", src: \"https://cdn.example.com/logo.png\", alt: \"Logo\" },\n];\n\nconst images: ImagesProps = { items: brandImages };\n\n<Studio\n  config={config}\n  data={data}\n  onPublish={save}\n  images={images}\n/>\n```\n\nSupported modes:\n\n- `items`: fixed images; bypasses internal paging and remains the simplest integration\n- `seeds`: placeholder-image fallback for local demos and lightweight setups\n- `loadPage`: paged loading via `loadPage(query, page, pageSize)`\n- `pageSize`: optional page size for internal infinite loading\n\nIf you only want placeholder images, provide `seeds` instead of `items`:\n\n```tsx\n<Studio\n  config={config}\n  data={data}\n  onPublish={save}\n  images={{ seeds: [\"brand\", \"product\", \"team\", \"office\"] }}\n/>\n```\n\nFor paged loading, keep the loader focused on returning the next page of images for the current search query. In production, it is usually worth normalizing the API response shape and throwing on non-OK responses so the library can surface its inline error state cleanly:\n\n```tsx\ntype ImageApiResponse = {\n  items: Array<{\n    id: string;\n    src: string;\n    alt?: string;\n  }>;\n  nextPage?: number | null;\n};\n\nconst remoteImages: ImagesProps = {\n  pageSize: 24,\n  loadPage: async (query, page, pageSize) => {\n    const params = new URLSearchParams({\n      q: query,\n      page: String(page),\n      pageSize: String(pageSize),\n    });\n    const res = await fetch(`/api/images?${params.toString()}`);\n\n    if (!res.ok) {\n      throw new Error(`Image request failed: ${res.status}`);\n    }\n\n    const json = (await res.json()) as ImageApiResponse;\n\n    return {\n      items: json.items.map((item) => ({\n        id: item.id,\n        src: item.src,\n        alt: item.alt ?? \"Image\",\n      })),\n      hasMore: json.nextPage !== null && json.nextPage !== undefined,\n    };\n  },\n};\n```\n\n`loadPage` may return either an array of `ImageItem` values or `{ items, hasMore }`. If `hasMore` is omitted, it is inferred from the returned page length.\n\n### Copy Library\n\n`CopyLibrary` uses `@tanstack/react-virtual` with single-column virtualization. Search mode virtualizes the flattened filtered snippets directly. Non-search mode preserves grouped category presentation by flattening category headers and snippet cards into one virtualized render list.\n\n```tsx\nimport type { CopywritingItem, CopywritingProps } from \"@anvilkit/puck-studio\";\n\nconst snippets: CopywritingItem[] = [\n  { category: \"Headlines\", label: \"Promise\", text: \"Built for builders.\" },\n  { category: \"CTAs\", label: \"Primary\", text: \"Start for free\" },\n];\n\nconst copywritings: CopywritingProps = { items: snippets };\n\n<Studio\n  config={config}\n  data={data}\n  onPublish={save}\n  copywritings={copywritings}\n/>\n```\n\nSupported modes:\n\n- `items`: fixed snippets; remains fully supported\n- `loadPage`: paged loading via `loadPage(query, page, pageSize)`\n- `pageSize`: optional page size for internal infinite loading\n\nIf you omit `copywritings`, the built-in snippet library is used.\n\n```tsx\ntype CopyApiResponse = {\n  items: Array<{\n    category: string;\n    label: string;\n    text: string;\n  }>;\n  total?: number;\n};\n\nconst remoteCopy: CopywritingProps = {\n  pageSize: 24,\n  loadPage: async (query, page, pageSize) => {\n    const params = new URLSearchParams({\n      q: query,\n      page: String(page),\n      pageSize: String(pageSize),\n    });\n    const res = await fetch(`/api/copy?${params.toString()}`);\n\n    if (!res.ok) {\n      throw new Error(`Copy request failed: ${res.status}`);\n    }\n\n    const json = (await res.json()) as CopyApiResponse;\n    const consumed = (page + 1) * pageSize;\n\n    return {\n      items: json.items.map((item) => ({\n        category: item.category,\n        label: item.label,\n        text: item.text,\n      })),\n      hasMore: json.total !== undefined ? consumed < json.total : json.items.length >= pageSize,\n    };\n  },\n};\n```\n\n`loadPage` may return either an array of `CopywritingItem` values or `{ items, hasMore }`. If `hasMore` is omitted, it is inferred from the returned page length.\n\n### Shared Scroll Infrastructure\n\n[`ScrollArea`](./src/components/ui/scroll-area.tsx) now exposes a `viewportRef` prop so virtualized panels can bind `@tanstack/react-virtual` to the real scroll container instead of the outer wrapper. This viewport ref is the required shared foundation for both sidebar libraries, because their measurements, overscan, and load-more checks all depend on the actual scroll container.\n\n## Localization\n\n`Studio` defaults to Chinese UI messages because [`defaultMessages`](./src/store/i18n-defaults.ts) re-exports the Chinese catalog.\n\nYou can switch locale and provide your own message map:\n\n```tsx\n<Studio\n  config={config}\n  data={data}\n  onPublish={save}\n  locale=\"en\"\n  messages={{\n    \"header.publish\": \"Publish\",\n    \"header.undo\": \"Undo\",\n    \"header.redo\": \"Redo\",\n  }}\n/>\n```\n\nAny missing message falls back to its key string at runtime.\n\n## Using the Raw Overrides\n\nUse `puckOverrides` when you want the styled Puck surfaces without the full `Studio` shell.\n\n```tsx\nimport \"@puckeditor/core/puck.css\";\n\nimport { Puck } from \"@puckeditor/core\";\nimport { puckOverrides } from \"@anvilkit/puck-studio\";\n\nexport function Editor({ config, data, onPublish }) {\n  return (\n    <Puck\n      config={config}\n      data={data}\n      onPublish={onPublish}\n      overrides={puckOverrides}\n    />\n  );\n}\n```\n\nThe packaged override object currently wires these Puck keys:\n\n- `drawer`\n- `drawerItem`\n- `outline`\n- `iframe`\n- `preview`\n- `componentOverlay`\n- `actionBar`\n- `fields`\n- `fieldTypes`\n- `puck`\n\n`Studio` adds the surrounding header, sidebar, image library, copy library, and fields layout on top of that.\n\n## Architecture At A Glance\n\n```text\nStudio\n  -> EditorUiStoreProvider\n  -> EditorI18nStoreProvider\n  -> Puck\n     -> merged overrides\n     -> optional AI plugin\n     -> EditorLayout\n        -> Header\n        -> Aside\n        -> Puck.Components / Puck.Outline / ImageLibrary / CopyLibrary / aiPanel\n        -> Puck.Preview\n        -> Puck.Fields\n```\n\nThe drag-drop libraries communicate with the canvas through typed `window` events defined in [`src/features/library-dnd/drop-contract.ts`](./src/features/library-dnd/drop-contract.ts). The iframe bridge listens for those events, hit-tests the hovered component, and dispatches Puck `replace` actions with updated props.\n\n## Public API Summary\n\n### Runtime exports\n\n- `Studio`\n- `puckOverrides`\n- `createEditorUiStore`\n- `createEditorI18nStore`\n- `EditorUiStoreProvider`\n- `EditorI18nStoreProvider`\n- `useEditorUiStoreApi`\n- `useEditorI18nStoreApi`\n- `defaultMessages`\n\n### Public types\n\n- `StudioProps`\n- `StudioActionHandler`\n- `StudioHeaderAction`\n- `ImagesProps`\n- `ImageItem`\n- `CopywritingProps`\n- `CopywritingItem`\n- `EditorUiStore`\n- `EditorUiStoreApi`\n- `ActiveTab`\n- `EditorI18nStoreApi`\n- `Locale`\n- `Messages`\n\n### Deprecated compatibility exports\n\n`@anvilkit/puck-studio/legacy` exists only for the deprecated singleton `uiStore` and `UIStore` type alias.\n\n## Current Scope\n\n- `Studio` is desktop-first today; [`EditorLayout`](./src/core/studio/layout/Layout.tsx) is hidden on very small screens\n- The image and copy libraries are local editor tooling, not asset management backends\n- The built-in share dialog and collaborators popover are shell-level conveniences; they can be replaced with host callbacks, but they are not real-time collaboration features\n- If you need fully custom publish, share, or shell-level workflows, build on `puckOverrides` directly or fork `Studio`\n\n## Development\n\n```bash\npnpm install\npnpm dev\npnpm lint\npnpm test\npnpm test:types\npnpm build\n```\n\nUseful directories:\n\n- [`src/core/studio`](./src/core/studio): `Studio` and the shell layout\n- [`src/core/overrides`](./src/core/overrides): packaged Puck overrides\n- [`src/features/library-dnd`](./src/features/library-dnd): drag/drop protocol and prop replacement helpers\n- [`src/store`](./src/store): UI and i18n stores, providers, hooks\n- [`app`](./app): local Next.js demo only\n\nBuild output is generated in [`dist/`](./dist) as ESM `.js`, CJS `.cjs`, CSS, and type declaration files.\n","readmeFilename":"README.md"}