{"_id":"@adamarant/ds-builder","_rev":"11-36fae5fc0a5e4a1bac6fd330fc94f53f","name":"@adamarant/ds-builder","dist-tags":{"latest":"0.9.0"},"versions":{"0.1.0":{"name":"@adamarant/ds-builder","version":"0.1.0","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.1.0","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"da477d8ae312c588d629116bfde7cec00df2e443","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.1.0.tgz","fileCount":149,"integrity":"sha512-poxM+8cd6ODmUO8BQdykygtK3vUB++FwcRPe7G4kqDpgxKWDPSYmlhc2eJN8H1t3ssBgi7Im07uD68t1hXdCag==","signatures":[{"sig":"MEUCIBZBgItPIrynbuo3CazjVnjBpnngMeMv2n18Ry7f5C4MAiEAvZk+SXzKnKiZC3u3DurKyGdntHVVho1zAT4v3E1bTvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211200},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/editor":"./src/styles/editor.css"},"gitHead":"e7f5abefc23765c1d22b23936978a315f1763d66","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"digiko-npm","email":"riccardo@digiko.io"},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"25.2.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.1.0_1784129762737_0.45827058738455984","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adamarant/ds-builder","version":"0.2.0","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.2.0","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"398b51c3e2ffcd80729900e77415f5f5d2931a27","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.2.0.tgz","fileCount":174,"integrity":"sha512-+tiSaWA9FMz1n9HC1BmgeAgGH7pX1TrvzP+kEQnvRmtqqX62omz9jkpvgPRwuL5Th4PJJWuvw5V0YFF57RRQaA==","signatures":[{"sig":"MEUCIGlENAF6vjtbfAtrUTZaHOaZ715aqFr5e4YXF1qV+eL3AiEAuPVcXUVNboRf/I1PnuPAEmwLUfSPPzcDZSRyCp2+xbY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":234514},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/editor":"./src/styles/editor.css"},"gitHead":"a415e79bc3a364270985346a27840612ef8ccb66","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.2.0_1784133352059_0.46399255587907895","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adamarant/ds-builder","version":"0.3.0","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.3.0","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"c29efeced81a91f951d49aa538af727625183542","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.3.0.tgz","fileCount":175,"integrity":"sha512-gqXenpqaqrG+o/t5W6XeHRl7JWZKTYJZCMBT2ZHo+qMV/82CtOfQjAUgWQKWuMq+jbpD0DONuvhpwZigEc1Q6Q==","signatures":[{"sig":"MEYCIQCIwsxTRM4WeucVqK9F7J/aUicZLWkjhyK7ax5D1ewIzgIhALnB95V8d+ITewuxi638bzWilU4u9bqncd3o1+llnHr5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":256549},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/editor":"./src/styles/editor.css"},"gitHead":"3f7c9da4831b859fa846331275e1cc8fcb318788","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.3.0_1784271403507_0.771303685254243","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@adamarant/ds-builder","version":"0.4.0","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.4.0","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"577e9d60eaae63fc3b058e55c4144c04719e05f0","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.4.0.tgz","fileCount":175,"integrity":"sha512-KsEOAr+FUirijJFWSdpxldMxZWOZ+bXKzzCKcUxhvAhcGxdK49b7FHT3tTU9tnlnp7mqyV1NQtpPIZgXdSkKxw==","signatures":[{"sig":"MEUCIQDkkmss1oq7eY8GvX7QIFdVMpGMB4+/enOB6/YeOlDdhAIgZT6OO7m+lH/bNids0wbhmHSlOUBJ1JUnkKDbJQCA0Z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":259328},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/editor":"./src/styles/editor.css"},"gitHead":"f6e8a6457b9838b02bc9bdc1a1e793dbf9cf2f75","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.4.0_1784276051437_0.7821699453825792","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@adamarant/ds-builder","version":"0.5.0","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.5.0","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"5f59f0499f32b1dbdf562e93546c8857d2e44e34","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.5.0.tgz","fileCount":195,"integrity":"sha512-xej+RwlF8rBxoscN6EfhfeIPDNgq444gYccmzneuNvAyldYM0HtcBbRyJPMMENPUgbArr9ojVYi174BI9Ky0CA==","signatures":[{"sig":"MEYCIQDrQ7izhPDcnQadV4peGI3vHpT3/jey3jgbVUlQSYfBvwIhAJcl0CpdzuSUFHCDBHnV0BqSAWatfF5xPn0lhSPyUF8w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":324058},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/editor":"./src/styles/editor.css"},"gitHead":"c55551da37314a2c6cbadddacb41958e5f5b6d85","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.5.0_1785151248831_0.12767535453444978","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@adamarant/ds-builder","version":"0.6.0","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.6.0","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"0c5231f5bdebfdd3772c61c75a2510fc5c2c5815","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.6.0.tgz","fileCount":196,"integrity":"sha512-HgvMipjOj0XdxSMfymaksDfWMbdjlI2GxWyspi8ZTYwtZlGNB3agfqesvvzDbXOf0S4UmsZuuX6Vs1R4fQLyJw==","signatures":[{"sig":"MEQCIFp4q8qym0bBLPNQ6L60zx/f7Fc9C3CMd97n2JLCyHIoAiABNEqhDN1zzBlGuaoqRNLZaOT0SO31WYEygFQQ2OjBCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":343728},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/editor":"./src/styles/editor.css"},"gitHead":"fe86eeb182b10bc0567f956e0df43fccfe5f4e5a","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.6.0_1785152255777_0.16684939976111623","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@adamarant/ds-builder","version":"0.6.1","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.6.1","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"ea9aa9d84517d4aa49d2b0b60bc8a24c896a841a","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.6.1.tgz","fileCount":196,"integrity":"sha512-RoPwR1HDLyfC/u9C6f1jqkwlPN9X+fFT8DUkb6E8A2mRXL0VTKD5jhRGXnuSl5k5XeZput8Bqhm7nUM3GLQ5Ww==","signatures":[{"sig":"MEUCIA7unsfD+5BctVe9ip0nbfZkVty/YQvl+UuDMfiAj7fDAiEA0P18kzmFseh+ktNDjEOUKMyMuFiEK5lI/Rz9BWl9doo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":343869},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/editor":"./src/styles/editor.css"},"gitHead":"340519848f48f7b9bb252b8b62e4b1f2369c3577","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.6.1_1785162515770_0.7657632973515502","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@adamarant/ds-builder","version":"0.7.0","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.7.0","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"aa791488a1b726572e771c402976b0d6d735e573","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.7.0.tgz","fileCount":202,"integrity":"sha512-tuTgkI2omSIbbTvXIn2m1cipP0BemomlNvNamqBaLGTPdgnFNlvPEDPxldXeu51sKXjiNJvI1rk+HLg1APwZ5Q==","signatures":[{"sig":"MEUCIEXwv8aDORM8EBjSMInHuBy88gndKSPLG+r/HOWOdhhEAiEAkOPywiTpxxId+n2oiGn8jzNBAJShXE4vVAnmIbIpsq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":357822},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/blocks":"./src/styles/blocks.css","./styles/editor":"./src/styles/editor.css"},"gitHead":"52ed7458ffd6d6b368e1a769c1e5f5d29e8c396a","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.7.0_1785163017320_0.2875884226363026","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@adamarant/ds-builder","version":"0.7.1","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.7.1","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"ba57c93d7b8c0468e7f344ef90a1fbb04c31d128","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.7.1.tgz","fileCount":202,"integrity":"sha512-e3loanvxdNdbXJ4lw0CRfHVYDUmdbYIh+LwyTLegu0HEEbwGCVcH8xnOGOizTx6oUJ3G0EShRzuyXeEmp/bNCg==","signatures":[{"sig":"MEUCIQCntoGDCTHUe2cTcbDesNY6Yq91c4RTXTM/aRGC4qIJTgIgIaXHfxeQAuQ+jTeg3f6HLfl5q7XI//5eni71AKjcetk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":357994},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/blocks":"./src/styles/blocks.css","./styles/editor":"./src/styles/editor.css"},"gitHead":"120b0b3d2edf8591ede9a11badfc0f70cbe4c9f6","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.18.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.7.1_1785163292836_0.618407676667668","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@adamarant/ds-builder","version":"0.8.0","keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","_id":"@adamarant/ds-builder@0.8.0","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"homepage":"https://github.com/adamarant/designsystem#readme","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"dist":{"shasum":"925d5d9b7ef80ae88f4fe40dd7f6daa870c896bd","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.8.0.tgz","fileCount":202,"integrity":"sha512-4jfpQ65mw3YKl3PtY2mqpwIJvJIdeG87kPYHi2mkKboskEwNX8MgFzEe7brg+E1dTKGJiuthBoEONIX7CiZN0w==","signatures":[{"sig":"MEUCIAGXb18tV1LvLySd3EcEvW44enLQ1LCHAf24vxfTEqpPAiEAxmzHBmNctyXS9PX1q6ilV67s/47ULcbmMqSf31ENQbY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":357815},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./styles/blocks":"./src/styles/blocks.css","./styles/editor":"./src/styles/editor.css"},"gitHead":"9204d3bc3f919438ccf7df37d83ea3d7d19a0533","scripts":{"dev":"tsc --watch","build":"tsc","smoke":"node smoke.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"repository":{"url":"git+https://github.com/adamarant/designsystem.git","type":"git","directory":"packages/ds-builder"},"_npmVersion":"11.19.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0"},"peerDependencies":{"next":">=14.0.0","react":">=18.0.0","@adamarant/ds-react":">=0.8.0","@supabase/supabase-js":">=2.0.0"},"peerDependenciesMeta":{"next":{"optional":true},"@adamarant/ds-react":{"optional":true},"@supabase/supabase-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ds-builder_0.8.0_1785924413326_0.5152196682008865","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@adamarant/ds-builder","version":"0.9.0","description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./render":{"types":"./dist/render/index.d.ts","import":"./dist/render/index.js","default":"./dist/render/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./blocks":{"types":"./dist/blocks/index.d.ts","import":"./dist/blocks/index.js","default":"./dist/blocks/index.js"},"./styles/editor":"./src/styles/editor.css","./styles/blocks":"./src/styles/blocks.css"},"scripts":{"build":"tsc","dev":"tsc --watch","smoke":"node smoke.mjs"},"peerDependencies":{"react":">=18.0.0","next":">=14.0.0","@supabase/supabase-js":">=2.0.0","@adamarant/ds-react":">=0.8.0"},"peerDependenciesMeta":{"next":{"optional":true},"@supabase/supabase-js":{"optional":true},"@adamarant/ds-react":{"optional":true}},"devDependencies":{"@adamarant/ds-react":"^0.8.0","@supabase/supabase-js":"^2.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.7.0"},"keywords":["page-builder","cms","design-system","blocks","editor"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/adamarant/designsystem.git","directory":"packages/ds-builder"},"publishConfig":{"access":"public"},"gitHead":"7c1ad3586d8890c81c881426c7e5db813cfcb38e","_id":"@adamarant/ds-builder@0.9.0","bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"homepage":"https://github.com/adamarant/designsystem#readme","_nodeVersion":"24.18.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-suuBpLv9fKV0QjzN8GmDd2ipzd1bw1l8Hs/1YPqwHyk5zcCuLDMVJRfLgXlJCk70BBuYKmCk3S4VmqLMbMJ4fw==","shasum":"d3d1691d6d5c4427dc585b48edee841656e6d44d","tarball":"https://registry.npmjs.org/@adamarant/ds-builder/-/ds-builder-0.9.0.tgz","fileCount":202,"unpackedSize":357829,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamarant%2fds-builder@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCzmY0x2xHRnHlDWIlYxGi2MOX8UHqoNRiOCNoxvon6hAIhAK2jWeRlTKyR8pxdPXSS0m0Qx87JOu9m/wcgdo+SPKu7"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7f62d01-4990-4cab-ac87-7e9c594283f8"}},"directories":{},"maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ds-builder_0.9.0_1786355131558_0.6574039457383274"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-15T15:36:02.567Z","modified":"2026-08-10T09:45:32.275Z","0.1.0":"2026-07-15T15:36:02.873Z","0.2.0":"2026-07-15T16:35:52.199Z","0.3.0":"2026-07-17T06:56:43.622Z","0.4.0":"2026-07-17T08:14:11.591Z","0.5.0":"2026-07-27T11:20:48.996Z","0.6.0":"2026-07-27T11:37:35.922Z","0.6.1":"2026-07-27T14:28:35.965Z","0.7.0":"2026-07-27T14:36:57.453Z","0.7.1":"2026-07-27T14:41:32.987Z","0.8.0":"2026-08-05T10:06:53.474Z","0.9.0":"2026-08-10T09:45:31.693Z"},"bugs":{"url":"https://github.com/adamarant/designsystem/issues"},"license":"MIT","homepage":"https://github.com/adamarant/designsystem#readme","keywords":["page-builder","cms","design-system","blocks","editor"],"repository":{"type":"git","url":"git+https://github.com/adamarant/designsystem.git","directory":"packages/ds-builder"},"description":"Block-based visual page builder for @adamarant/designsystem consumers — typed section registry, crash-safe renderer, admin editor.","maintainers":[{"name":"digiko-npm","email":"riccardo@digiko.io"}],"readme":"# @adamarant/ds-builder\n\nBlock-based visual page builder for `@adamarant/designsystem` consumers. Lets a\nnon-technical admin edit pages — change text and images, reorder sections — while\nevery output stays DS-compliant, because blocks are typed sections that developers\nauthor once and the admin only fills in.\n\n> **Status: 0.7.0 — Phases 0–3 done, first pilot live.** Core model, content\n> store, the editor MVP, and composition (palette, reorder, undo/redo) are in. See the roadmap.\n\n## Why block-based (not free-form)\n\nA free-form canvas (Webflow-style) would emit arbitrary classes/styles and break\nthe design system's controlled-mode governance. A **block registry** keeps the\nadmin inside typed, DS-composed sections: preview and production render from the\n**same component**, so they can never diverge.\n\n## Model\n\n- **`defineBlock`** — author a block: a typed `fields` schema + one render\n  component (used by both editor and public site). `data` is inferred from the schema.\n- **`createRegistry`** — the consumer's list of blocks. The consumer owns which\n  blocks exist.\n- **`PageDocument`** — a page's content as JSON (stored in Supabase). Ordered\n  `blocks`, each with `data`. Localized fields hold `{ [locale]: value }` maps.\n- **`PageRenderer`** (from `@adamarant/ds-builder/render`) — renders a document to\n  React. Server-safe and lightweight; the only piece a public site ships.\n- **`validateDocument(registry, doc)`** — validates content against the registry\n  (unknown blocks, per-field type/required/select/localized checks). Run it before\n  saving so blocks only ever receive well-formed data.\n- **Page store** (from `@adamarant/ds-builder/server`) — service-role Supabase CRUD:\n  `listPages`, `reorderPages`, `getDraft`, `getPublished`, `createPage`, `saveDraft`,\n  `publishPage`, `deletePage`. Draft and published content live side by side; publishing\n  snapshots the draft into a versions table and bumps the counter. Schema in\n  [`sql/schema.sql`](sql/schema.sql); upgrades in [`sql/migrations/`](sql/migrations)\n  (**0.6.0 needs `0001_pages_position.sql`** — the page switcher's order column).\n\n### i18n\n\nLocale-agnostic by design. A field marked `localized` stores a per-locale map; the\nrenderer collapses it to the active locale (falling back to the document's default\nlocale, then the field default). Adding a language — Japanese included — is **data\nin the consumer's config, not a package change**.\n\n### Shared blocks\n\n`@adamarant/ds-builder/blocks` exports `sharedBlocks` — the sections every site\nneeds — to spread into your registry alongside your own:\n\n```ts\nexport const registry = createRegistry([...sharedBlocks, MyCustomBlock])\n```\n\n| Block | What it is |\n|---|---|\n| `HeroBlock` | Centered overline, title, lede, optional CTA. |\n| `ProseBlock` | Long-form text with an optional heading; blank lines split paragraphs. |\n| `CtaBlock` | Centered band with up to two buttons. |\n| `ImageBlock` | Full-width image with an optional caption. |\n| `ContactsBlock` | A contact page in one block: details on the left, an optional message form on the right, side by side from `lg` up. |\n| `MarqueeBlock` | A line of words scrolling forever, separated by a glyph. Speed and direction are fields. |\n\n`MarqueeBlock` is the one block that needs CSS of its own — overflow, a\ncontinuous animation and a second rail so the loop has no gap. Import the block\nstylesheet next to the design system:\n\n```css\n@import \"@adamarant/designsystem\" layer(ds);\n@import \"@adamarant/ds-builder/styles/blocks\";\n```\n\nWithout it the words render as a plain static row: readable, not broken. The\nrail is duplicated and the copy is `aria-hidden`, so a screen reader hears the\nwords once. Reduced motion stops the scroll.\n\n`ContactsBlock` carries the only interactive markup in the set. Its form POSTs\n`{nome, cognome, email, messaggio}` as JSON to the `endpoint` field's URL and\nreads success from the HTTP status, so delivery (Resend, a queue, a CRM) stays a\nroute in your app and the block holds no secrets. Leave `endpoint` empty and the\nfields render but submitting does nothing — lay the page out before the route\nexists. Its `titleStyle` field picks `h1` (the block *is* the page) or `h2` (a\nband inside another page), so a section instance never emits a second `h1`.\n\n## Resilience (\"non si rompe\")\n\n- **Unknown block type** → `renderUnknown` fallback; the page still renders.\n- **A block throws** → isolated per-block and the rest of the page survives.\n  - *Spike finding:* under streaming SSR (Next App Router), a thrown error only\n    stays contained if the block is wrapped in a `<Suspense>` boundary — an\n    unwrapped throw errors the whole shell. `PageRenderer` therefore wraps every\n    block in `Suspense` + an error boundary. Phase 1 adds data validation so\n    blocks rarely throw in the first place (prevention over recovery).\n- **Schema evolution** → each block carries a `version`; `migrate()` upgrades old\n  stored data, and unknown stored keys are dropped on resolve.\n\n## Editor\n\n`@adamarant/ds-builder/editor` ships `PageEditor` — a live canvas plus a\nproperty panel **auto-generated from each block's schema**, with debounced draft\nautosave and a validated publish. It's decoupled from transport and storage:\npersistence is injected, so the editor never touches Supabase or auth directly.\n\n```tsx\n'use client'\nimport { PageEditor } from '@adamarant/ds-builder/editor'\nimport '@adamarant/ds-builder/styles/editor'\nimport { registry } from '@/blocks' // your createRegistry([...])\n\nexport function AdminPageEditor({ slug, initialDoc, pages }) {\n  return (\n    <PageEditor\n      registry={registry}\n      document={initialDoc}\n      // optional: the page switcher. A rail beside the canvas from 1024px up,\n      // a select in the toolbar below it. Feed it from `listPages`.\n      pages={pages.map((p) => ({ slug: p.slug, label: p.title, href: `/admin/pages/${p.slug}/edit` }))}\n      currentSlug={slug}\n      // optional: passing this makes the rail draggable (grip handle, arrow\n      // keys). Wire it to a route that calls `reorderPages` server-side.\n      onReorderPages={(slugs) => fetch('/api/admin/pages/order', {\n        method: 'PUT', body: JSON.stringify({ slugs }),\n      }).then(() => undefined)}\n      onSaveDraft={(doc) => fetch(`/api/admin/pages/${slug}/draft`, {\n        method: 'PUT', body: JSON.stringify(doc),\n      }).then(() => undefined)}\n      onPublish={(doc) => fetch(`/api/admin/pages/${slug}/publish`, {\n        method: 'POST', body: JSON.stringify(doc),\n      }).then(() => undefined)}\n      // optional: wire the CMS MediaPicker; falls back to a URL input if omitted\n      renderImagePicker={({ onSelect, onClose }) => (\n        <MediaPicker onSelect={(m) => onSelect({ mediaId: m.id, url: m.url, alt: m.alt_text ?? '' })} onClose={onClose} />\n      )}\n    />\n  )\n}\n```\n\nThe matching API routes call `validateDocument(registry, doc)` then the page\nstore (`saveDraft` / `publishPage`) from `@adamarant/ds-builder/server`.\n\nField types map to controls automatically: text→input, `multiline`→textarea,\nrichtext→textarea, number→number input, boolean→toggle, select→dropdown,\ncolorToken→token dropdown, link→url+label, image→picker/URL, list→repeater.\nLocalized fields edit one locale at a time via the toolbar language switch.\n\n## Verify the spike\n\n```bash\nnpm run build --workspace=packages/ds-builder\nnpm run smoke --workspace=packages/ds-builder   # JSON → HTML, i18n, fallback, crash isolation\n```\n\n## Roadmap\n\n| Phase | Scope |\n|---|---|\n| 0 ✅ | Core primitives, crash-safe renderer, i18n, Hero spike |\n| 1 ✅ | Supabase content model (`<prefix>_pages` + versions, RLS), server CRUD, data validation |\n| 2 ✅ | Editor MVP: canvas + auto-generated property panels + injected media picker + draft autosave + validated publish |\n| 3 ✅ | Composition: block palette (add), per-block reorder + delete controls, undo/redo (coalesced field edits). Reorder ships button/keyboard-first — drag (dnd-kit) deferred to keep the package dependency-free |\n| 4 | Pilot: migrate a real consumer page (esys home) |\n| 5 | Docs, authoring guide, versioning guide, snapshot tests |\n","readmeFilename":"README.md"}