{"_id":"@bambamboole/pdf-ua-template-builder","_rev":"9-5e58bbfd999095b70edbf1ad39b54806","name":"@bambamboole/pdf-ua-template-builder","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.1":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.1.1","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"author":{"name":"Manuel Christlieb"},"license":"MIT","_id":"@bambamboole/pdf-ua-template-builder@0.1.1","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"dist":{"shasum":"e0d650e3abb8bfadb3c2f7ad87070eb5e34a86c6","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.1.1.tgz","fileCount":26,"integrity":"sha512-m9qsU277GA193TZeRbcp/WAw5oX37IdyphI0i/215SwmzxEgqwKamjrMro5HUb25Fb3tZT0YcpmhYNQeCMUufQ==","signatures":[{"sig":"MEUCIE7pUgcJS5/x9dnnGkJzJ5aqFQq6UB8YFiyKrzsIIA4TAiEAlC+GCjKg3QlrG+FXNr2h4iK6QXtPGh2HF92M82SF/oE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":553915},"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"},"./style.css":"./dist/style.css"},"gitHead":"9ac8f03895a4191c54bb894a2b7b25cb31fff0db","private":false,"scripts":{"dev":"vite","fmt":"oxfmt","lint":"oxlint","test":"vitest run","build":"tsc --noEmit && vite build --mode lib","preview":"vite preview","lint:fix":"oxlint --fix","build:app":"tsc --noEmit && vite build","fmt:check":"oxfmt --check","typecheck":"tsc --noEmit","lint:github":"oxlint --format=github","sync:schema":"curl -fsS ${PDF_UA_SCHEMA_URL:-http://localhost:8080/schema} -o schemas/template.schema.json","generate:types":"json2ts --input schemas/template.schema.json --output src/types/generated/template.d.ts --unreachableDefinitions","prepublishOnly":"npm run build"},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"repository":{"url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git","type":"git"},"_npmVersion":"10.8.2","description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.20.0","@rjsf/core":"^6.5.3","@rjsf/utils":"^6.5.3","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@rjsf/validator-ajv8":"^6.5.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.0","oxfmt":"^0.51.0","react":"^19.0.0","oxlint":"^1.66.0","vitest":"^4.1.7","react-dom":"^19.0.0","typescript":"^5.9.3","@types/react":"^19.2.15","vite-plugin-dts":"^5.0.1","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.0","json-schema-to-typescript":"^15.0.4"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-ua-template-builder_0.1.1_1779960464588_0.33004923542124875","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.2.0","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"author":{"name":"Manuel Christlieb"},"license":"MIT","_id":"@bambamboole/pdf-ua-template-builder@0.2.0","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"dist":{"shasum":"d6398b1beb43e7d0db8c338359246dd95afec07f","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.2.0.tgz","fileCount":26,"integrity":"sha512-OUM4ys0i6o9jZ1rP1COIpZWWcCVOewtTOdhIx7uEkRgGTNeo/41DkuueYhz9k5fa+MZReRiVl8r91p/4QikbTQ==","signatures":[{"sig":"MEUCIQDeKqULt1pjy7zj6c3awpt2Oj8Q25SZIgNmrme1jlC7XAIgcLWM20psnp6TAb6vyZKRzHZl03PIF51NrIKAHLCJdBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":558106},"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"},"./style.css":"./dist/style.css"},"gitHead":"9ce5fc95b40df9b86f487bd6a3f25cfa294d9a32","private":false,"scripts":{"dev":"vite","fmt":"oxfmt","lint":"oxlint","test":"vitest run","build":"tsc --noEmit && vite build --mode lib","preview":"vite preview","lint:fix":"oxlint --fix","build:app":"tsc --noEmit && vite build","fmt:check":"oxfmt --check","typecheck":"tsc --noEmit","lint:github":"oxlint --format=github","sync:schema":"curl -fsS ${PDF_UA_SCHEMA_URL:-http://localhost:8080/schema} -o schemas/template.schema.json","generate:types":"json2ts --input schemas/template.schema.json --output src/types/generated/template.d.ts --unreachableDefinitions","prepublishOnly":"npm run build"},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"repository":{"url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git","type":"git"},"_npmVersion":"11.13.0","description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.16.0","dependencies":{"ajv":"^8.20.0","@rjsf/core":"^6.5.3","@rjsf/utils":"^6.5.3","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@rjsf/validator-ajv8":"^6.5.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.0","oxfmt":"^0.51.0","react":"^19.0.0","oxlint":"^1.66.0","vitest":"^4.1.7","react-dom":"^19.0.0","typescript":"^5.9.3","@types/react":"^19.2.15","vite-plugin-dts":"^5.0.1","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.0","json-schema-to-typescript":"^15.0.4"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-ua-template-builder_0.2.0_1779962908578_0.9920017403997792","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.3.0","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"author":{"name":"Manuel Christlieb"},"license":"MIT","_id":"@bambamboole/pdf-ua-template-builder@0.3.0","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"dist":{"shasum":"5b53a58f35ebfe041049855983e3b4c1aa53bb9b","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.3.0.tgz","fileCount":68,"integrity":"sha512-he0n+tts8nh1ZegbJmExF1OCIFYtRw7J1xiAaw9Pf2vkMMSvT8FeLlwAbXegpEyCEytyAHpBkQQFAnlLaEIgcg==","signatures":[{"sig":"MEUCIQDpgWJ8Ivu+GjLhNvWTTSmbFv16+i1rdkE8zvMbvg/MUQIgfEoohzBFUQKPgt2wIEgDfSfN5FkEsxh9atvSvsM5/aE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":770063},"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"},"./style.css":"./dist/style.css"},"gitHead":"d3d5688a01ae90e24fc640652d30b3db76932305","private":false,"scripts":{"dev":"docker compose up -d --force-recreate && vite","fmt":"oxfmt","lint":"oxlint","test":"vitest run","build":"tsc --noEmit && vite build --mode lib","preview":"vite preview","lint:fix":"oxlint --fix","test:e2e":"playwright test","build:app":"tsc --noEmit && vite build","fmt:check":"oxfmt --check","typecheck":"tsc --noEmit","lint:github":"oxlint --format=github","sync:schema":"curl -fsS ${PDF_UA_SCHEMA_URL:-http://localhost:9999/schema} -o schemas/template.schema.json","test:e2e:ui":"playwright test --ui","generate:types":"json2ts --input schemas/template.schema.json --output src/types/generated/template.d.ts --unreachableDefinitions","prepublishOnly":"npm run build"},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"repository":{"url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git","type":"git"},"_npmVersion":"11.13.0","description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.16.0","dependencies":{"@dnd-kit/core":"^6.3.1","@codemirror/lint":"^6.9.6","@codemirror/view":"^6.43.0","@lezer/highlight":"^1.2.3","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@codemirror/language":"^6.12.3","@codemirror/lang-json":"^6.0.2","@uiw/react-codemirror":"^4.25.10","codemirror-json-schema":"^0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.14","jsdom":"^29.1.1","oxfmt":"^0.51.0","react":"^19.0.0","oxlint":"^1.66.0","vitest":"^4.1.7","react-dom":"^19.0.0","typescript":"^5.9.3","tailwindcss":"^4.3.0","@types/react":"^19.2.15","vite-plugin-dts":"^5.0.1","@playwright/test":"^1.60.0","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.3.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.2","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","json-schema-to-typescript":"^15.0.4","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-ua-template-builder_0.3.0_1780237547842_0.6995523205395895","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.3.1","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"author":{"name":"Manuel Christlieb"},"license":"MIT","_id":"@bambamboole/pdf-ua-template-builder@0.3.1","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"dist":{"shasum":"12d256fc686458df9edf6bc202551c57dbc8594d","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.3.1.tgz","fileCount":68,"integrity":"sha512-ZgA1igg0pRdrjdWAnz/vyCfKeQ13OG3WN2PYgCANYI5EJt42/fwhj+309rN8QsOgQdtTLhT4GdpzipgLXS0rHQ==","signatures":[{"sig":"MEYCIQDH45tJrUQe4/IKv4/taHqWSJCJvAtxKtAG1lAypjRDEgIhANaT6JhXzW//I1Vk8pQyo/41HEcIYaw4exibC9ZC9tl8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":512602},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./style.css":"./dist/style.css"},"gitHead":"af315a76932022cfde6675b90ccd48cc3675f624","private":false,"scripts":{"dev":"docker compose up -d && vite","fmt":"oxfmt","lint":"oxlint","test":"vitest run","build":"tsc --noEmit && vite build --mode lib","preview":"vite preview","lint:fix":"oxlint --fix","test:e2e":"playwright test","build:app":"tsc --noEmit && vite build","fmt:check":"oxfmt --check","typecheck":"tsc --noEmit","lint:github":"oxlint --format=github","sync:schema":"curl -fsS ${PDF_UA_SCHEMA_URL:-http://localhost:9999/schema} -o schemas/template.schema.json","test:e2e:ui":"playwright test --ui","generate:types":"json2ts --input schemas/template.schema.json --output src/types/generated/template.d.ts --unreachableDefinitions","prepublishOnly":"npm run build"},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"repository":{"url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git","type":"git"},"_npmVersion":"11.13.0","description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.16.0","dependencies":{"@dnd-kit/core":"^6.3.1","@codemirror/lint":"^6.9.6","@codemirror/view":"^6.43.0","@lezer/highlight":"^1.2.3","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@codemirror/language":"^6.12.3","@codemirror/lang-json":"^6.0.2","@uiw/react-codemirror":"^4.25.10","codemirror-json-schema":"^0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.14","jsdom":"^29.1.1","oxfmt":"^0.51.0","react":"^19.0.0","oxlint":"^1.66.0","vitest":"^4.1.7","react-dom":"^19.0.0","typescript":"^5.9.3","tailwindcss":"^4.3.0","@types/react":"^19.2.15","vite-plugin-dts":"^5.0.1","@playwright/test":"^1.60.0","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.3.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.2","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","json-schema-to-typescript":"^15.0.4","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-ua-template-builder_0.3.1_1780249156158_0.838659331028941","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.4.0","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"author":{"name":"Manuel Christlieb"},"license":"MIT","_id":"@bambamboole/pdf-ua-template-builder@0.4.0","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"dist":{"shasum":"a30c3db0132c9f01084284986268371ada5e4f5a","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.4.0.tgz","fileCount":75,"integrity":"sha512-KK6JyyPcbcVudYDTxGy6dRizJ7knSCyToSh0VuBuE7W0WIDZC1Xahf/tkG3rM5D+b75yWhITbSBRU/nu+oZ0Jw==","signatures":[{"sig":"MEQCIHmCKr7tChXi3yPP+yPyWmX/pp2cLP32FQp32IgKcCuKAiBcbJ4dcQn3hZ7qMYG+PvaDmRkNS/fTrkaiMjmY4J3QJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":540053},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./style.css":"./dist/style.css"},"gitHead":"dc7bd8b0245d35e9bbfdb63afb8faf7ad0073601","private":false,"scripts":{"dev":"docker compose up -d && vite","fmt":"oxfmt","lint":"oxlint","test":"vitest run","build":"tsc --noEmit && vite build --mode lib","preview":"vite preview","lint:fix":"oxlint --fix","test:e2e":"playwright test","build:app":"tsc --noEmit && vite build","fmt:check":"oxfmt --check","typecheck":"tsc --noEmit","lint:github":"oxlint --format=github","sync:schema":"curl -fsS ${PDF_UA_SCHEMA_URL:-http://localhost:9999/schema} -o schemas/template.schema.json","test:e2e:ui":"playwright test --ui","generate:types":"json2ts --input schemas/template.schema.json --output src/types/generated/template.d.ts --unreachableDefinitions","prepublishOnly":"npm run build"},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"repository":{"url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git","type":"git"},"_npmVersion":"11.13.0","description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.16.0","dependencies":{"@dnd-kit/core":"^6.3.1","@codemirror/lint":"^6.9.6","@codemirror/view":"^6.43.0","@lezer/highlight":"^1.2.3","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-json":"^6.0.2","@uiw/react-codemirror":"^4.25.10","codemirror-json-schema":"^0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.14","jsdom":"^29.1.1","oxfmt":"^0.51.0","react":"^19.0.0","oxlint":"^1.66.0","vitest":"^4.1.7","react-dom":"^19.0.0","typescript":"^5.9.3","tailwindcss":"^4.3.0","@types/react":"^19.2.15","vite-plugin-dts":"^5.0.1","@playwright/test":"^1.60.0","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.3.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.2","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","json-schema-to-typescript":"^15.0.4","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-ua-template-builder_0.4.0_1780305008310_0.2632028082016271","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.4.1","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"author":{"name":"Manuel Christlieb"},"license":"MIT","_id":"@bambamboole/pdf-ua-template-builder@0.4.1","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"dist":{"shasum":"ece322ea1e7280f4f44f70c41ed39617f87da3bf","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.4.1.tgz","fileCount":91,"integrity":"sha512-WQOdGSuucUsEFLN07THbi0fD96gR5bbpJx9E8bFqst/yyU3wbwmSISI0OVEGj/ASPumB6+SVhexyDsCVNPaQQw==","signatures":[{"sig":"MEMCIE/0t2qt3f4Kx0iONKCViD95iLcujZTlm5fLRfO/Sv37Ah8s3e/yrP0gTIoik3fbIU2vLjiC6I6VHygJUAr1FMJU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":487327},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./style.css":"./dist/style.css","./html-editor":{"types":"./dist/html-editor/index.d.ts","import":"./dist/html-editor/index.js"}},"gitHead":"c39f5225a7d07001a1cc823e1a552424094d6049","private":false,"scripts":{"dev":"docker compose up -d && vite","fmt":"oxfmt","lint":"oxlint","test":"vitest run","build":"tsc --noEmit && vite build --mode lib","preview":"vite preview","lint:fix":"oxlint --fix","test:e2e":"playwright test","build:app":"tsc --noEmit && vite build","fmt:check":"oxfmt --check","typecheck":"tsc --noEmit","lint:github":"oxlint --format=github","sync:schema":"curl -fsS ${PDF_UA_SCHEMA_URL:-http://localhost:9999/schema} -o schemas/template.schema.json","test:e2e:ui":"playwright test --ui","generate:types":"json2ts --input schemas/template.schema.json --output src/types/generated/template.d.ts --unreachableDefinitions","prepublishOnly":"npm run build"},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"repository":{"url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git","type":"git"},"_npmVersion":"11.13.0","description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.16.0","dependencies":{"@dnd-kit/core":"^6.3.1","@codemirror/lint":"^6.9.6","@codemirror/view":"^6.43.0","@lezer/highlight":"^1.2.3","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-json":"^6.0.2","@uiw/react-codemirror":"^4.25.10","codemirror-json-schema":"^0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.14","jsdom":"^29.1.1","oxfmt":"^0.51.0","react":"^19.0.0","oxlint":"^1.66.0","vitest":"^4.1.7","react-dom":"^19.0.0","typescript":"^5.9.3","tailwindcss":"^4.3.0","@types/react":"^19.2.15","vite-plugin-dts":"^5.0.1","@playwright/test":"^1.60.0","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.3.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.2","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","json-schema-to-typescript":"^15.0.4","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-ua-template-builder_0.4.1_1780320067828_0.9390169856490727","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.4.2","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"author":{"name":"Manuel Christlieb"},"license":"MIT","_id":"@bambamboole/pdf-ua-template-builder@0.4.2","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"dist":{"shasum":"09f7d69809b2a5d9ebb35f98c358ae0fa02aab89","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.4.2.tgz","fileCount":91,"integrity":"sha512-d6tPBZ8xcKQncR592wUUIdfhr2PAbWxU6kHuXtvYiDHdScdoKnkM8H6ry/WhBN3DbOdMxIIjTiQSM0WAXyEnfA==","signatures":[{"sig":"MEUCIDB4e3yLdBjjSYnNrgXPY7AZnjY6GVICLjcrI85HChMUAiEAn0TvLDTztmmN2flcsPGqImHad8JOpuQMSzIINo/nK6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":488247},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./style.css":"./dist/style.css","./html-editor":{"types":"./dist/html-editor/index.d.ts","import":"./dist/html-editor/index.js"}},"gitHead":"2d26ca9fa273bba87e230a102e07917c1bb3f34e","private":false,"scripts":{"dev":"docker compose up -d && vite","fmt":"oxfmt","lint":"oxlint","test":"vitest run","build":"tsc --noEmit && vite build --mode lib","preview":"vite preview","lint:fix":"oxlint --fix","test:e2e":"playwright test","build:app":"tsc --noEmit && vite build","fmt:check":"oxfmt --check","typecheck":"tsc --noEmit","lint:github":"oxlint --format=github","sync:schema":"curl -fsS ${PDF_UA_SCHEMA_URL:-http://localhost:9999/schema} -o schemas/template.schema.json","test:e2e:ui":"playwright test --ui","generate:types":"json2ts --input schemas/template.schema.json --output src/types/generated/template.d.ts --unreachableDefinitions","prepublishOnly":"npm run build"},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"repository":{"url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git","type":"git"},"_npmVersion":"11.13.0","description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.16.0","dependencies":{"@dnd-kit/core":"^6.3.1","@codemirror/lint":"^6.9.6","@codemirror/view":"^6.43.0","@lezer/highlight":"^1.2.3","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-json":"^6.0.2","@uiw/react-codemirror":"^4.25.10","codemirror-json-schema":"^0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.14","jsdom":"^29.1.1","oxfmt":"^0.51.0","react":"^19.0.0","oxlint":"^1.66.0","vitest":"^4.1.7","react-dom":"^19.0.0","typescript":"^5.9.3","tailwindcss":"^4.3.0","@types/react":"^19.2.15","vite-plugin-dts":"^5.0.1","@playwright/test":"^1.60.0","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.3.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.2","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","json-schema-to-typescript":"^15.0.4","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-ua-template-builder_0.4.2_1780321192563_0.5305600070745462","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.5.0","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"author":{"name":"Manuel Christlieb"},"license":"MIT","_id":"@bambamboole/pdf-ua-template-builder@0.5.0","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"dist":{"shasum":"5df9bacbeb83d28be788e16c1a5643bf349f621a","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.5.0.tgz","fileCount":91,"integrity":"sha512-zAoiunZFSlpxKrc+d3DT/RwRVuVZpdN7lujkohqYfWpcs9D9mA+LL34RiIFxSy6eIkwdfx9ZkcgW0kAIbf6Jig==","signatures":[{"sig":"MEUCIQCFzN6ND9v4SiFir5J9awex0NFNCL5bbwu2TkoOpFciuAIgHZOvEJ8J7ZBb0VQjefehtcfaxR6d7qRA4W+miwf57Sk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":490324},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./style.css":"./dist/style.css","./html-editor":{"types":"./dist/html-editor/index.d.ts","import":"./dist/html-editor/index.js"}},"gitHead":"98c11f1115f092cef434a8e9980ea6e1335223cc","private":false,"scripts":{"dev":"docker compose up -d && node scripts/wait-for-api.mjs && vite","fmt":"oxfmt","lint":"oxlint","test":"vitest run","build":"tsc --noEmit && vite build --mode lib","preview":"vite preview","lint:fix":"oxlint --fix","test:e2e":"playwright test","build:app":"tsc --noEmit && vite build","fmt:check":"oxfmt --check","typecheck":"tsc --noEmit","lint:github":"oxlint --format=github","sync:schema":"node scripts/sync-template-schema.mjs","test:e2e:ui":"playwright test --ui","generate:types":"node scripts/generate-template-types.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"repository":{"url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git","type":"git"},"_npmVersion":"11.13.0","description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.16.0","dependencies":{"@dnd-kit/core":"^6.3.1","@codemirror/lint":"^6.9.6","@codemirror/view":"^6.43.0","@lezer/highlight":"^1.2.3","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-json":"^6.0.2","@uiw/react-codemirror":"^4.25.10","codemirror-json-schema":"^0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.14","jsdom":"^29.1.1","oxfmt":"^0.51.0","react":"^19.0.0","oxlint":"^1.66.0","vitest":"^4.1.7","react-dom":"^19.0.0","typescript":"^5.9.3","tailwindcss":"^4.3.0","@types/react":"^19.2.15","vite-plugin-dts":"^5.0.1","@playwright/test":"^1.60.0","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.3.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.2","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","json-schema-to-typescript":"^15.0.4","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-ua-template-builder_0.5.0_1780412322143_0.37180720448795834","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bambamboole/pdf-ua-template-builder","version":"0.5.1","private":false,"description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","author":{"name":"Manuel Christlieb"},"license":"MIT","type":"module","sideEffects":["**/*.css"],"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./builder":{"types":"./dist/builder/index.d.ts","import":"./dist/builder/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","import":"./dist/editor/index.js"},"./html-editor":{"types":"./dist/html-editor/index.d.ts","import":"./dist/html-editor/index.js"},"./style.css":"./dist/style.css"},"repository":{"type":"git","url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git"},"homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"scripts":{"dev":"docker compose up -d && node scripts/wait-for-api.mjs && vite","build":"tsc --noEmit && vite build --mode lib","build:app":"tsc --noEmit && vite build","preview":"vite preview","sync:schema":"node scripts/sync-template-schema.mjs","generate:types":"node scripts/generate-template-types.mjs","typecheck":"tsc --noEmit","lint":"oxlint","lint:fix":"oxlint --fix","lint:github":"oxlint --format=github","fmt":"oxfmt","fmt:check":"oxfmt --check","test":"vitest run","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","prepublishOnly":"npm run build"},"engines":{"node":">=20"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"@codemirror/lang-html":"^6.4.11","@codemirror/lang-json":"^6.0.2","@codemirror/language":"^6.12.3","@codemirror/lint":"^6.9.6","@codemirror/view":"^6.43.0","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@lezer/highlight":"^1.2.3","@uiw/react-codemirror":"^4.25.10","codemirror-json-schema":"^0.8.1"},"devDependencies":{"@playwright/test":"^1.60.0","@tailwindcss/vite":"^4.3.0","@testing-library/dom":"^10.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2","jsdom":"^29.1.1","json-schema-to-typescript":"^15.0.4","oxfmt":"^0.51.0","oxlint":"^1.66.0","react":"^19.0.0","react-dom":"^19.0.0","tailwindcss":"^4.3.0","typescript":"^5.9.3","vite":"^8.0.14","vite-plugin-dts":"^5.0.1","vitest":"^4.1.7"},"gitHead":"2ea1faf36c570ec6c38e07caaeca37de3810129b","_id":"@bambamboole/pdf-ua-template-builder@0.5.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-OMfEu8RIZ5ao6NSVyDfSACetliym9B59QTz54M+ra/4kPXbq3iTxwzOloZcmJCOe3eppmrXPfzsRG6+toMP+kQ==","shasum":"351cd16ca61ab15714e6ef4de3439aebfe79c909","tarball":"https://registry.npmjs.org/@bambamboole/pdf-ua-template-builder/-/pdf-ua-template-builder-0.5.1.tgz","fileCount":92,"unpackedSize":507588,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bambamboole%2fpdf-ua-template-builder@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDyjrC15/HDaNvXtWyLxhFfXXh62lPPpxpwV64NvbDvXAiBGj9ORAYbSE2/V5L15SZhk47BHBwaBASpxIdskFf+Odg=="}]},"_npmUser":{"name":"bambamboole","email":"manuel@christlieb.eu"},"directories":{},"maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pdf-ua-template-builder_0.5.1_1780420449781_0.1466168168387263"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T09:27:44.464Z","modified":"2026-06-02T17:14:10.257Z","0.1.1":"2026-05-28T09:27:44.777Z","0.2.0":"2026-05-28T10:08:28.776Z","0.3.0":"2026-05-31T14:25:48.057Z","0.3.1":"2026-05-31T17:39:16.315Z","0.4.0":"2026-06-01T09:10:08.466Z","0.4.1":"2026-06-01T13:21:07.988Z","0.4.2":"2026-06-01T13:39:52.723Z","0.5.0":"2026-06-02T14:58:42.414Z","0.5.1":"2026-06-02T17:14:09.954Z"},"bugs":{"url":"https://github.com/bambamboole/pdf-ua-template-builder/issues"},"author":{"name":"Manuel Christlieb"},"license":"MIT","homepage":"https://github.com/bambamboole/pdf-ua-template-builder#readme","keywords":["pdf","pdf-ua","pdfua","accessibility","template","builder","react","drag-and-drop","wysiwyg"],"repository":{"type":"git","url":"git+https://github.com/bambamboole/pdf-ua-template-builder.git"},"description":"Embeddable React template builder for the pdf-ua-api PDF/UA renderer.","maintainers":[{"name":"bambamboole","email":"manuel@christlieb.eu"}],"readme":"# @bambamboole/pdf-ua-template-builder\n\nEmbeddable React components for authoring\n[pdf-ua-api](https://github.com/bambamboole/pdf-ua-api) PDF/UA templates — a\nvisual drag-and-drop **builder** and a schema-validated **JSON editor**, each\nwith a live rendered-PDF preview.\n\n- **Visual builder** — hybrid block cards that expand inline for editing\n- **JSON editor** — CodeMirror with schema-aware autocomplete, validation, and hover\n- Page-format aware canvas (A3/A4/A5/A6/Letter/Legal/Tabloid + orientation)\n- Repeated footer area and page-number controls\n- Animated drag-and-drop with full keyboard accessibility (powered by dnd-kit)\n- Light/dark theming and composable provider + parts, built on CSS custom properties\n\n## Install\n\n```bash\nnpm install @bambamboole/pdf-ua-template-builder\n```\n\nReact 18 or 19 is required as a peer dependency:\n\n```bash\nnpm install react react-dom\n```\n\n## Usage\n\n```tsx\nimport { TemplateBuilder, createInvoiceExample } from \"@bambamboole/pdf-ua-template-builder\";\nimport \"@bambamboole/pdf-ua-template-builder/style.css\";\n\nexport default function App() {\n  return (\n    <TemplateBuilder\n      apiUrl=\"http://localhost:8080\"\n      examples={{ Invoice: createInvoiceExample() }}\n      onChange={(template, data) => console.log(\"changed\", template, data)}\n      onRendered={(pdf) => console.log(\"rendered pdf blob\", pdf)}\n    />\n  );\n}\n```\n\n## Props\n\n| Prop              | Type                                                          | Description                                                                   |\n| ----------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------- |\n| `apiUrl`          | `string`                                                     | Base URL of a running `pdf-ua-api`. Defaults to `\"\"` (relative URL / proxy).  |\n| `initialTemplate` | `Template`                                                   | Template loaded on first render.                                              |\n| `initialData`     | `Record<string, unknown>`                                    | Runtime data keyed by block id (table rows, dynamic key-value overrides).     |\n| `examples`        | `Record<string, { template: Template; data?: TemplateData }>` | Loadable examples keyed by display name. The palette's Load control only appears when this is non-empty. |\n| `onChange`        | `(template: Template, data: Record<string, unknown>) => void` | Fires on every edit.                                                          |\n| `onRendered`      | `(pdf: Blob) => void`                                        | Fires after a successful render.                                              |\n| `className`       | `string`                                                     | Class appended to the root element.                                           |\n\n## Composable layout\n\n`<TemplateBuilder />` is a preset that places a `Builder` and a `Preview`\nside-by-side. When you need a different arrangement — for example the PDF\npreview **below** the builder inside a docs page — compose the parts yourself.\n`TemplateBuilderProvider` owns the shared state and drag-and-drop context; place\n`Builder` and `Preview` inside it however you like. Both accept a `className` for\npositioning and sizing:\n\n```tsx\nimport {\n  TemplateBuilderProvider,\n  Builder,\n  Preview,\n  createInvoiceExample,\n} from \"@bambamboole/pdf-ua-template-builder\";\nimport \"@bambamboole/pdf-ua-template-builder/style.css\";\n\nexport default function StackedBuilder() {\n  return (\n    <TemplateBuilderProvider apiUrl=\"http://localhost:8080\">\n      <div className=\"flex flex-col gap-3\">\n        <Builder examples={{ Invoice: createInvoiceExample() }} className=\"h-[36rem]\" />\n        <Preview className=\"h-[40rem]\" />\n      </div>\n    </TemplateBuilderProvider>\n  );\n}\n```\n\n`Builder` groups the palette, canvas, and inspector; `Preview` shows the rendered\nPDF and the Render button. `TemplateBuilderProvider` accepts the same props as\n`<TemplateBuilder />` except `examples` and `className` (`apiUrl`,\n`initialTemplate`, `initialData`, `onChange`, `onRendered`). Because the provider\ndoes not impose a height, give `Builder` and `Preview` explicit sizes when you\nare not filling the viewport. For fully custom parts, the `useTemplateBuilder()`\nhook exposes the underlying state and actions.\n\n## JSON editor\n\nPrefer raw JSON? `TemplateEditor` is a drop-in alternative to `TemplateBuilder`:\na CodeMirror editor with schema-aware autocomplete, validation, and hover (driven\nby the bundled template JSON Schema), paired with the same rendered-PDF preview.\n\n```tsx\nimport { TemplateEditor, createInvoiceExample } from \"@bambamboole/pdf-ua-template-builder\";\nimport \"@bambamboole/pdf-ua-template-builder/style.css\";\n\nconst example = createInvoiceExample();\n\nexport default function App() {\n  return (\n    <TemplateEditor\n      apiUrl=\"http://localhost:8080\"\n      initialTemplate={example.template}\n      data={example.data}\n      onChange={(template, text) => console.log(\"edited\", template, text)}\n      onRendered={(pdf) => console.log(\"rendered pdf blob\", pdf)}\n    />\n  );\n}\n```\n\nThe editor owns the JSON text; `data` is passed straight through to render.\n`onChange(template, text)` fires on every edit — `template` is `null` while the\nJSON is invalid, and Render is disabled until it parses. Schema problems surface\nas inline editor diagnostics.\n\nIt composes exactly like the builder, and shares the same `Preview`:\n\n```tsx\nimport { TemplateEditorProvider, CodeEditor, Preview } from \"@bambamboole/pdf-ua-template-builder\";\n\n<TemplateEditorProvider apiUrl=\"http://localhost:8080\" initialTemplate={example.template}>\n  <div className=\"flex flex-col gap-3\">\n    <CodeEditor className=\"h-[36rem]\" />\n    <Preview className=\"h-[40rem]\" />\n  </div>\n</TemplateEditorProvider>\n```\n\n`useTemplateEditor()` exposes the text and parsed state (`{ text, setText,\ntemplate, error, data }`) for custom UIs.\n\n## Dark mode\n\nThe builder and editor ship a dark theme built from the same semantic tokens. It\nturns on automatically when the OS prefers dark (`prefers-color-scheme: dark`) and\nwhenever an ancestor element carries `data-theme=\"dark\"` (or a `.dark` class) — so\nit syncs with hosts like Starlight out of the box. Force a mode explicitly with\n`data-theme=\"light\"` or `data-theme=\"dark\"` on a wrapper element:\n\n```tsx\n<div data-theme=\"dark\">\n  <TemplateBuilder apiUrl=\"http://localhost:8080\" />\n</div>\n```\n\nThe on-canvas page and the rendered-PDF preview stay light (\"paper\") in both\nthemes, matching the white PDF the backend produces.\n\n## Backend\n\nThe component talks to a `pdf-ua-api` instance via:\n\n- `GET {apiUrl}/openapi.json` — the builder extracts `components.schemas.Template`\n  for block metadata used by the palette and forms.\n- `POST {apiUrl}/render/template` — to render the current template + data into a PDF blob.\n- `POST {apiUrl}/render/html` — to render raw HTML into a PDF blob.\n\nSee the [pdf-ua-api](https://github.com/bambamboole/pdf-ua-api) repository for\ninstallation and configuration. The component does **not** render PDFs in the\nbrowser — the backend owns the PDF/UA-accurate rendering pipeline.\n\n## Helpers\n\nThe package also exports framework-agnostic utilities:\n\n```ts\nimport {\n  pageSizeForFormat,   // [widthMm, heightMm] for a PageFormat + Orientation\n  mmToPx,              // mm → CSS px at 96 DPI\n  createEditorModel,   // ingest a Template into an editor model\n  serializeTemplate,   // emit a Template from an editor model\n  getPageSize, setPageSize,\n  getFooterRepeat, setFooterRepeat,\n  getPageNumbers, setPageNumbers,\n} from \"@bambamboole/pdf-ua-template-builder\";\n```\n\n## Local development\n\n```bash\nnpm install\nnpm run dev          # runs the playground app on http://localhost:5174\nnpm run build        # produces the npm package in dist/\nnpm run build:app    # produces the playground build\nnpm run test         # vitest\nnpm run typecheck    # tsc --noEmit\nnpm run lint         # oxlint\n```\n\n`npm run dev` starts the Compose backend and serves the Vite app. Set\n`VITE_PDF_UA_API_URL` to point the app at a different `pdf-ua-api`\n(default: `http://localhost:9999`; proxy fallback override: `PDF_UA_API_PROXY_URL`).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}