{"_id":"@amitdhoju/tiptap-ui","_rev":"7-ab7c6fbc478887386f46f6ecd168a1f0","name":"@amitdhoju/tiptap-ui","dist-tags":{"latest":"1.5.0"},"versions":{"1.0.0":{"name":"@amitdhoju/tiptap-ui","version":"1.0.0","keywords":["tiptap","rich-text-editor","wysiwyg","react","react-hook-form","typescript"],"author":"amitdhoju","license":"MIT","_id":"@amitdhoju/tiptap-ui@1.0.0","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"dist":{"shasum":"4249702cd24d4a5091a9a98ba8014e2af6121d8f","tarball":"https://registry.npmjs.org/@amitdhoju/tiptap-ui/-/tiptap-ui-1.0.0.tgz","fileCount":5,"integrity":"sha512-g5YoSuXy5YpMIkJVnNld4CD8pl5u/DvqsqZYmi//tYNJwS/lUw9Dt92FsdMXmXkXEEJfsTjevuv2g0zbZtppMA==","signatures":[{"sig":"MEQCIGtRKSr0fbuCYI0R6B9+cmEpEol74d1i7RvNCNL10q4aAiA5YVQHamuygiG/i2KW7zap+ZiuVNTWAu39JVRAtnMp+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141880},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"npm run build:css && tsup --watch","lint":"biome check .","build":"npm run build:css && tsup","format":"biome format --write .","example":"npm run build && npx tsx examples/demo.ts","preview":"npm run build:css && node scripts/build-preview.mjs && open examples/preview.html","release":"npm run build && changeset publish","version":"changeset version","build:css":"tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --minify","changeset":"changeset","typecheck":"tsc --noEmit","clean:peers":"rm -rf node_modules/react node_modules/react-dom"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"description":"A pre-styled, self-contained React rich text editor built on Tiptap — controlled value/onChange API, works with any form library (react-hook-form, Formik, plain React state), no consumer Tailwind/shadcn setup required.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"clsx":"^2.1.1","dompurify":"^3.4.14","@tiptap/pm":"^3.30.2","@tiptap/core":"^3.30.2","lucide-react":"^1.33.0","@tiptap/react":"^3.30.2","tailwind-merge":"^3.6.0","html-react-parser":"^6.1.7","@tiptap/starter-kit":"^3.30.2","@radix-ui/react-select":"^2.3.7","@radix-ui/react-toggle":"^1.1.18","@radix-ui/react-tooltip":"^1.2.16","@tiptap/extension-image":"^3.30.2","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.15","@tiptap/extension-highlight":"^3.30.2","@tiptap/extension-subscript":"^3.30.2","@radix-ui/react-toggle-group":"^1.1.19","@tiptap/extension-text-align":"^3.30.2","@tiptap/extension-text-style":"^3.30.2","@tiptap/extension-placeholder":"^3.30.2","@tiptap/extension-superscript":"^3.30.2","tiptap-extension-resize-image":"^1.4.6","@tiptap/extension-file-handler":"^3.30.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.8","esbuild":"^0.27.7","react-dom":"^19.2.8","typescript":"^5.9.3","@types/node":"^22.10.5","tailwindcss":"^4.3.3","@types/react":"^19.2.18","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^19.2.4"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tiptap-ui_1.0.0_1787500116876_0.2840595039205718","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@amitdhoju/tiptap-ui","version":"1.1.0","keywords":["tiptap","rich-text-editor","wysiwyg","react","react-hook-form","typescript"],"author":{"name":"amitdhoju"},"license":"MIT","_id":"@amitdhoju/tiptap-ui@1.1.0","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"dist":{"shasum":"4000345fd07a17f17bdbacd257d519703dd7712b","tarball":"https://registry.npmjs.org/@amitdhoju/tiptap-ui/-/tiptap-ui-1.1.0.tgz","fileCount":5,"integrity":"sha512-UYmsULT7pDUzyEY05ZCUjwj0HhSvEW/lbHrDXMevAUuN+kGsg0JxJuyvhJD74yp22YRwXkvtdQinhqZeVgSn2A==","signatures":[{"sig":"MEQCICByhx6ncMGXeJz1rD0IhQYhQS1J6IgMNS+/n9h5b6+BAiAH6lUHn5PV9t1wA8CM6jnCoCOur1a5LCpLmv8k5j6+7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141881},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"4deff946653fd8535ef300b99e3d899ff0d86ae0","scripts":{"dev":"npm run build:css && tsup --watch","lint":"biome check .","build":"npm run build:css && tsup","format":"biome format --write .","example":"npm run build && npx tsx examples/demo.ts","preview":"npm run build:css && node scripts/build-preview.mjs && open examples/preview.html","release":"npm run build && changeset publish","version":"changeset version","build:css":"tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --minify","changeset":"changeset","typecheck":"tsc --noEmit","clean:peers":"rm -rf node_modules/react node_modules/react-dom"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"_npmVersion":"10.9.4","description":"A pre-styled, self-contained React rich text editor built on Tiptap — controlled value/onChange API, works with any form library (react-hook-form, Formik, plain React state), no consumer Tailwind/shadcn setup required.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"clsx":"^2.1.1","dompurify":"^3.4.14","@tiptap/pm":"^3.30.2","@tiptap/core":"^3.30.2","lucide-react":"^1.33.0","@tiptap/react":"^3.30.2","tailwind-merge":"^3.6.0","html-react-parser":"^6.1.7","@tiptap/starter-kit":"^3.30.2","@radix-ui/react-select":"^2.3.7","@radix-ui/react-toggle":"^1.1.18","@radix-ui/react-tooltip":"^1.2.16","@tiptap/extension-image":"^3.30.2","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.15","@tiptap/extension-highlight":"^3.30.2","@tiptap/extension-subscript":"^3.30.2","@radix-ui/react-toggle-group":"^1.1.19","@tiptap/extension-text-align":"^3.30.2","@tiptap/extension-text-style":"^3.30.2","@tiptap/extension-placeholder":"^3.30.2","@tiptap/extension-superscript":"^3.30.2","tiptap-extension-resize-image":"^1.4.6","@tiptap/extension-file-handler":"^3.30.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.8","esbuild":"^0.27.7","react-dom":"^19.2.8","typescript":"^5.9.3","@types/node":"^22.10.5","tailwindcss":"^4.3.3","@types/react":"^19.2.18","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^19.2.4"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tiptap-ui_1.1.0_1787500548848_0.7313609026638372","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@amitdhoju/tiptap-ui","version":"1.2.0","keywords":["tiptap","rich-text-editor","wysiwyg","react","react-hook-form","typescript"],"author":"amitdhoju","license":"MIT","_id":"@amitdhoju/tiptap-ui@1.2.0","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"dist":{"shasum":"e94bda5a90dd37c16529c3785cf3daaef3a6bc3d","tarball":"https://registry.npmjs.org/@amitdhoju/tiptap-ui/-/tiptap-ui-1.2.0.tgz","fileCount":5,"integrity":"sha512-a9GyCKBnR9IK41iLwYHfjo8bkZvD4/ygvsrDgvwUTVaTSVU+FT/TfHEijlDMDZdnvYBe5RY7cLb8Wka9MXFVxg==","signatures":[{"sig":"MEQCID9fA5kDK52h1I+SsVu+Ie52EuRDWKixbDTAqsDdDRdgAiBMVMP3xv7DYFOj5EDENFjH/gwOUuMtsKnfLVBLm/iHVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147157},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"npm run build:css && tsup --watch","lint":"biome check .","build":"npm run build:css && tsup","format":"biome format --write .","example":"npm run build && npx tsx examples/demo.ts","preview":"npm run build:css && node scripts/build-preview.mjs && open examples/preview.html","release":"npm run build && changeset publish","version":"changeset version","build:css":"tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --minify","changeset":"changeset","typecheck":"tsc --noEmit","clean:peers":"rm -rf node_modules/react node_modules/react-dom"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"description":"A pre-styled, self-contained React rich text editor built on Tiptap — controlled value/onChange API, works with any form library (react-hook-form, Formik, plain React state), no consumer Tailwind/shadcn setup required.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"clsx":"^2.1.1","dompurify":"^3.4.14","@tiptap/pm":"^3.30.2","@tiptap/core":"^3.30.2","lucide-react":"^1.33.0","@tiptap/react":"^3.30.2","tailwind-merge":"^3.6.0","html-react-parser":"^6.1.7","@tiptap/starter-kit":"^3.30.2","@radix-ui/react-select":"^2.3.7","@radix-ui/react-toggle":"^1.1.18","@radix-ui/react-tooltip":"^1.2.16","@tiptap/extension-image":"^3.30.2","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.15","@tiptap/extension-highlight":"^3.30.2","@tiptap/extension-subscript":"^3.30.2","@radix-ui/react-toggle-group":"^1.1.19","@tiptap/extension-text-align":"^3.30.2","@tiptap/extension-text-style":"^3.30.2","@tiptap/extension-placeholder":"^3.30.2","@tiptap/extension-superscript":"^3.30.2","tiptap-extension-resize-image":"^1.4.6","@tiptap/extension-file-handler":"^3.30.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.8","esbuild":"^0.27.7","react-dom":"^19.2.8","typescript":"^5.9.3","@types/node":"^22.10.5","tailwindcss":"^4.3.3","@types/react":"^19.2.18","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^19.2.4"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tiptap-ui_1.2.0_1787565901947_0.3475242477746485","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@amitdhoju/tiptap-ui","version":"1.2.1","keywords":["tiptap","rich-text-editor","wysiwyg","react","react-hook-form","typescript"],"author":"amitdhoju","license":"MIT","_id":"@amitdhoju/tiptap-ui@1.2.1","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"dist":{"shasum":"e99702e3879467996f515c1a52b8a842677f1238","tarball":"https://registry.npmjs.org/@amitdhoju/tiptap-ui/-/tiptap-ui-1.2.1.tgz","fileCount":5,"integrity":"sha512-wHokLUOtm+6JgP43XCTb+Et18tfysrx9/bVuVEY1ZJfry1hrTdaPnyOVFgKNBAw7OjUy5npLsdUAagXm5utW7w==","signatures":[{"sig":"MEUCIHGtc4xZ+Pz1z0Dtd5QGvpiRpkap4HhkHqGlpIVbr74+AiEA0WnFpS/LSXQ04z34DMHCDG33IUecptxrrmIif0ungvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149024},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"npm run build:css && tsup --watch","lint":"biome check .","build":"npm run build:css && tsup","format":"biome format --write .","example":"npm run build && npx tsx examples/demo.ts","preview":"npm run build:css && node scripts/build-preview.mjs && open examples/preview.html","release":"npm run build && changeset publish","version":"changeset version","build:css":"tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --minify","changeset":"changeset","typecheck":"tsc --noEmit","clean:peers":"rm -rf node_modules/react node_modules/react-dom"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"description":"A pre-styled, self-contained React rich text editor built on Tiptap — controlled value/onChange API, works with any form library (react-hook-form, Formik, plain React state), no consumer Tailwind/shadcn setup required.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"clsx":"^2.1.1","dompurify":"^3.4.14","@tiptap/pm":"^3.30.2","@tiptap/core":"^3.30.2","lucide-react":"^1.33.0","@tiptap/react":"^3.30.2","tailwind-merge":"^3.6.0","html-react-parser":"^6.1.7","@tiptap/starter-kit":"^3.30.2","@radix-ui/react-select":"^2.3.7","@radix-ui/react-toggle":"^1.1.18","@radix-ui/react-tooltip":"^1.2.16","@tiptap/extension-image":"^3.30.2","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.15","@tiptap/extension-highlight":"^3.30.2","@tiptap/extension-subscript":"^3.30.2","@radix-ui/react-toggle-group":"^1.1.19","@tiptap/extension-text-align":"^3.30.2","@tiptap/extension-text-style":"^3.30.2","@tiptap/extension-placeholder":"^3.30.2","@tiptap/extension-superscript":"^3.30.2","tiptap-extension-resize-image":"^1.4.6","@tiptap/extension-file-handler":"^3.30.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.8","esbuild":"^0.27.7","react-dom":"^19.2.8","typescript":"^5.9.3","@types/node":"^22.10.5","tailwindcss":"^4.3.3","@types/react":"^19.2.18","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^19.2.4"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tiptap-ui_1.2.1_1787566695975_0.5211764521418105","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@amitdhoju/tiptap-ui","version":"1.3.0","keywords":["tiptap","rich-text-editor","wysiwyg","react","react-hook-form","typescript"],"author":"amitdhoju","license":"MIT","_id":"@amitdhoju/tiptap-ui@1.3.0","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"dist":{"shasum":"a63ca11f5b3ed342099a485b708e4b4f01ef571f","tarball":"https://registry.npmjs.org/@amitdhoju/tiptap-ui/-/tiptap-ui-1.3.0.tgz","fileCount":5,"integrity":"sha512-0Rlz7SayNAFwPPkW2HxgIoIRWdfUgvV2sLZFYu6RNCSZCIku9HNXbu45w9XewshNPuZf7eXppRd6Het61eXuHQ==","signatures":[{"sig":"MEUCIAbkv8tXSh91hSvPljMbfHdraOBmWRsKwI0wiwBM9M5yAiEA1rcN8HPBAhIbeoue2EbcFMB/MOJvFB0ORBpucYK2Fgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174294},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"npm run build:css && tsup --watch","lint":"biome check .","build":"npm run build:css && tsup","format":"biome format --write .","example":"npm run build && npx tsx examples/demo.ts","preview":"npm run build:css && node scripts/build-preview.mjs && open examples/preview.html","release":"npm run build && changeset publish","version":"changeset version","build:css":"tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --minify && node scripts/unlayer-css.mjs ./src/generated.css","changeset":"changeset","typecheck":"tsc --noEmit","clean:peers":"rm -rf node_modules/react node_modules/react-dom","preview:watch":"npm run build:css && open examples/preview.html && (tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --watch & node scripts/build-preview.mjs --watch)"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"description":"A pre-styled, self-contained React rich text editor built on Tiptap — controlled value/onChange API, works with any form library (react-hook-form, Formik, plain React state), no consumer Tailwind/shadcn setup required.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"clsx":"^2.1.1","dompurify":"^3.4.14","@tiptap/pm":"^3.30.2","@tiptap/core":"^3.30.2","lucide-react":"^1.33.0","@tiptap/react":"^3.30.2","tailwind-merge":"^3.6.0","html-react-parser":"^6.1.7","@tiptap/starter-kit":"^3.30.2","@radix-ui/react-select":"^2.3.7","@radix-ui/react-toggle":"^1.1.18","@radix-ui/react-tooltip":"^1.2.16","@tiptap/extension-image":"^3.30.2","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.15","@tiptap/extension-highlight":"^3.30.2","@tiptap/extension-subscript":"^3.30.2","@radix-ui/react-toggle-group":"^1.1.19","@tiptap/extension-text-align":"^3.30.2","@tiptap/extension-text-style":"^3.30.2","@tiptap/extension-placeholder":"^3.30.2","@tiptap/extension-superscript":"^3.30.2","tiptap-extension-resize-image":"^1.4.6","@tiptap/extension-file-handler":"^3.30.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.8","esbuild":"^0.27.7","react-dom":"^19.2.8","typescript":"^5.9.3","@types/node":"^22.10.5","tailwindcss":"^4.3.3","@types/react":"^19.2.18","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^19.2.4"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tiptap-ui_1.3.0_1787587947501_0.08011701401975913","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@amitdhoju/tiptap-ui","version":"1.4.0","keywords":["tiptap","rich-text-editor","wysiwyg","react","react-hook-form","typescript"],"author":"amitdhoju","license":"MIT","_id":"@amitdhoju/tiptap-ui@1.4.0","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"dist":{"shasum":"2befe813d53bed796ee93252a6fadd299ba84cbc","tarball":"https://registry.npmjs.org/@amitdhoju/tiptap-ui/-/tiptap-ui-1.4.0.tgz","fileCount":8,"integrity":"sha512-Ihjud4wagJHE4kDiDc0WJg+A0tb91SAYUDOxrs8ohNne/9GRRkdhTqEj5FmZJJR1dGPum6SG240xObNpZ/eNOQ==","signatures":[{"sig":"MEUCIQCGM5OsLzHNNLIe81+0iCgMrvxkpbLAjBL1zwmSpoc11gIgehhkSQ8O+6caU/uTSsfEpxpEeGStrF2bQkmtTJITwhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217833},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./shared":{"types":"./dist/richTextShared.d.ts","default":"./dist/richTextShared.js"}},"scripts":{"dev":"npm run build:css && tsup --watch","lint":"biome check .","build":"npm run build:css && tsup","format":"biome format --write .","example":"npm run build && npx tsx examples/demo.ts","preview":"npm run build:css && node scripts/build-preview.mjs && open examples/preview.html","release":"npm run build && changeset publish","version":"changeset version","build:css":"tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --minify && node scripts/unlayer-css.mjs ./src/generated.css","changeset":"changeset","typecheck":"tsc --noEmit","clean:peers":"rm -rf node_modules/react node_modules/react-dom","preview:watch":"npm run build:css && open examples/preview.html && (tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --watch & node scripts/build-preview.mjs --watch)"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"description":"A pre-styled, self-contained React rich text editor built on Tiptap — controlled value/onChange API, works with any form library (react-hook-form, Formik, plain React state), no consumer Tailwind/shadcn setup required.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"clsx":"^2.1.1","dompurify":"^3.4.14","@tiptap/pm":"^3.30.2","@tiptap/core":"^3.30.2","lucide-react":"^1.33.0","@tiptap/react":"^3.30.2","tailwind-merge":"^3.6.0","html-react-parser":"^6.1.7","@tiptap/starter-kit":"^3.30.2","@radix-ui/react-select":"^2.3.7","@radix-ui/react-toggle":"^1.1.18","@radix-ui/react-tooltip":"^1.2.16","@tiptap/extension-image":"^3.30.2","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.15","@tiptap/extension-highlight":"^3.30.2","@tiptap/extension-subscript":"^3.30.2","@radix-ui/react-toggle-group":"^1.1.19","@tiptap/extension-text-align":"^3.30.2","@tiptap/extension-text-style":"^3.30.2","@tiptap/extension-placeholder":"^3.30.2","@tiptap/extension-superscript":"^3.30.2","tiptap-extension-resize-image":"^1.4.6","@tiptap/extension-file-handler":"^3.30.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.8","esbuild":"^0.27.7","react-dom":"^19.2.8","typescript":"^5.9.3","@types/node":"^22.10.5","tailwindcss":"^4.3.3","@types/react":"^19.2.18","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^19.2.4"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tiptap-ui_1.4.0_1787671233552_0.6497681892512952","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@amitdhoju/tiptap-ui","version":"1.5.0","description":"A pre-styled, self-contained React rich text editor built on Tiptap — controlled value/onChange API, works with any form library (react-hook-form, Formik, plain React state), no consumer Tailwind/shadcn setup required.","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./shared":{"types":"./dist/richTextShared.d.ts","default":"./dist/richTextShared.js"},"./view":{"types":"./dist/richTextView-entry.d.ts","default":"./dist/richTextView-entry.js"}},"sideEffects":["*.css"],"keywords":["tiptap","rich-text-editor","wysiwyg","react","react-hook-form","typescript"],"author":"amitdhoju","license":"MIT","peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"dependencies":{"@radix-ui/react-select":"^2.3.7","@radix-ui/react-separator":"^1.1.15","@radix-ui/react-toggle":"^1.1.18","@radix-ui/react-toggle-group":"^1.1.19","@radix-ui/react-tooltip":"^1.2.16","@tiptap/core":"^3.30.2","@tiptap/extension-file-handler":"^3.30.2","@tiptap/extension-highlight":"^3.30.2","@tiptap/extension-image":"^3.30.2","@tiptap/extension-placeholder":"^3.30.2","@tiptap/extension-subscript":"^3.30.2","@tiptap/extension-superscript":"^3.30.2","@tiptap/extension-text-align":"^3.30.2","@tiptap/extension-text-style":"^3.30.2","@tiptap/pm":"^3.30.2","@tiptap/react":"^3.30.2","@tiptap/starter-kit":"^3.30.2","class-variance-authority":"^0.7.1","clsx":"^2.1.1","dompurify":"^3.4.14","html-react-parser":"^6.1.7","lucide-react":"^1.33.0","tailwind-merge":"^3.6.0","tiptap-extension-resize-image":"^1.4.6"},"devDependencies":{"@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10","@tailwindcss/cli":"^4.3.3","@types/node":"^22.10.5","@types/react":"^19.2.18","@types/react-dom":"^19.2.4","esbuild":"^0.27.7","react":"^19.2.8","react-dom":"^19.2.8","tailwindcss":"^4.3.3","tsup":"^8.5.1","typescript":"^5.9.3"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"scripts":{"build:css":"tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --minify && node scripts/unlayer-css.mjs ./src/generated.css","build":"npm run build:css && tsup","dev":"npm run build:css && tsup --watch","typecheck":"tsc --noEmit","lint":"biome check .","format":"biome format --write .","changeset":"changeset","version":"changeset version","release":"npm run build && changeset publish","example":"npm run build && npx tsx examples/demo.ts","preview":"npm run build:css && node scripts/build-preview.mjs && open examples/preview.html","preview:watch":"npm run build:css && open examples/preview.html && (tailwindcss -i ./src/tailwind-input.css -o ./src/generated.css --watch & node scripts/build-preview.mjs --watch)","clean:peers":"rm -rf node_modules/react node_modules/react-dom"},"_nodeVersion":"22.21.1","_id":"@amitdhoju/tiptap-ui@1.5.0","dist":{"integrity":"sha512-44juWk9TIgvg/ndCkGF1XIuE9wNWvEdjoCgvHmPl91pY3WQzjkMVjAYwyxJiBao/kojJtsnC4Q0SYO7o18sErw==","shasum":"ad0fe2440a339a37da37ab81eb45ddbaef2ff6b7","tarball":"https://registry.npmjs.org/@amitdhoju/tiptap-ui/-/tiptap-ui-1.5.0.tgz","fileCount":11,"unpackedSize":295361,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBWTu46Ti/fZ5yT48z11c1iaOQ/nPwHKHA/sqAebSveOAiEA6OB/WrKPJHvtkhVXmTIuy5Ha3q9PoQYYJyl8W9XIxTw="}]},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"directories":{},"maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tiptap-ui_1.5.0_1787718295722_0.9712266044332525"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T15:48:36.691Z","modified":"2026-08-26T04:24:55.976Z","1.0.0":"2026-08-23T15:48:37.010Z","1.1.0":"2026-08-23T15:55:48.986Z","1.2.0":"2026-08-24T10:05:02.102Z","1.2.1":"2026-08-24T10:18:16.117Z","1.3.0":"2026-08-24T16:12:27.654Z","1.4.0":"2026-08-25T15:20:33.697Z","1.5.0":"2026-08-26T04:24:55.832Z"},"author":"amitdhoju","license":"MIT","keywords":["tiptap","rich-text-editor","wysiwyg","react","react-hook-form","typescript"],"description":"A pre-styled, self-contained React rich text editor built on Tiptap — controlled value/onChange API, works with any form library (react-hook-form, Formik, plain React state), no consumer Tailwind/shadcn setup required.","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"readme":"# @amitdhoju/tiptap-ui\n\nA pre-styled, self-contained React rich text editor built on [Tiptap](https://tiptap.dev). Controlled\n`value`/`onChange` API — drop it into a plain `useState`, a `react-hook-form` `Controller`, or any other\nform library's controlled-field pattern.\n\nNo Tailwind config, no shadcn setup, no extra CSS import required in the consuming app — styles are\ninjected automatically when the component is used.\n\n## Install\n\n```bash\nnpm install @amitdhoju/tiptap-ui\n```\n\n`react` and `react-dom` (17, 18, or 19) must already be present in the host project as peer dependencies.\nEverything else (Tiptap, Radix UI primitives, icons, sanitizer) is bundled.\n\n## Usage\n\n```tsx\nimport { RichTextEditor } from '@amitdhoju/tiptap-ui'\nimport { useState } from 'react'\n\nconst Example = () => {\n  const [value, setValue] = useState('')\n\n  return <RichTextEditor value={value} onChange={setValue} placeholder=\"Write something...\" />\n}\n```\n\n### With react-hook-form\n\n```tsx\nimport { RichTextEditor } from '@amitdhoju/tiptap-ui'\nimport { Controller, type Control, type FieldValues, type Path } from 'react-hook-form'\n\ntype Props<T extends FieldValues> = {\n  control: Control<T>\n  name: Path<T>\n}\n\nconst RichTextField = <T extends FieldValues>({ control, name }: Props<T>) => (\n  <Controller\n    name={name}\n    control={control}\n    render={({ field }) => <RichTextEditor value={field.value} onChange={field.onChange} />}\n  />\n)\n```\n\n### Image uploads\n\nPass `onImageUpload` to enable the toolbar's image button plus drag-and-drop/paste. Resolve with the\nuploaded image's URL — the caller is responsible for the actual upload and for surfacing any error UI.\n\n```tsx\n<RichTextEditor\n  value={value}\n  onChange={setValue}\n  onImageUpload={async (file) => {\n    const url = await uploadToStorage(file)\n    return url\n  }}\n/>\n```\n\n### Sanitizing saved HTML\n\n`RichTextEditor` stores content as HTML. Before rendering untrusted saved HTML elsewhere (a read-only\nview), sanitize it with the exported DOMPurify config:\n\n```tsx\nimport { descriptionSanitizeConfig, richTextContentClass } from '@amitdhoju/tiptap-ui'\nimport DOMPurify from 'dompurify'\n\nconst clean = DOMPurify.sanitize(savedHtml, descriptionSanitizeConfig)\n```\n\n`richTextContentClass` is the same Tailwind class string the editor uses internally for headings, lists,\nlinks, images, etc. — reuse it to make a read-only view visually match the editor's output.\n\n## Props\n\n| Prop             | Type                             | Default               | Description                                  |\n| ---------------- | -------------------------------- | ---------------------- | --------------------------------------------- |\n| `value`          | `string`                         | `undefined`             | Controlled HTML content.                      |\n| `onChange`       | `(value: string) => void`        | `undefined`             | Called with the new HTML on every edit.       |\n| `placeholder`    | `string`                         | `'Write something...'` | Placeholder shown when the editor is empty.   |\n| `minHeight`      | `number`                         | `150`                   | Minimum height (px) of the content area.      |\n| `readOnly`       | `boolean`                        | `false`                 | Renders content without a toolbar or editing. |\n| `disabled`       | `boolean`                        | `false`                 | Same as `readOnly`, semantically for forms.   |\n| `className`      | `string`                         | `undefined`             | Extra classes on the outer wrapper.           |\n| `onImageUpload`  | `(file: File) => Promise<string>` | `undefined`             | Enables image insert/drop/paste.              |\n\nAn imperative handle exposing `getContent(): string` is also available via `ref`.\n\n## Development\n\n```bash\nnpm install\nnpm run build   # compiles Tailwind CSS then bundles with tsup\nnpm run typecheck\n```\n","readmeFilename":""}