{"_id":"@bernierllc/content-editor-ui","_rev":"10-f276bd33e95eec0582ca95c646aaf578","name":"@bernierllc/content-editor-ui","dist-tags":{"latest":"0.4.1"},"versions":{"0.1.1":{"name":"@bernierllc/content-editor-ui","version":"0.1.1","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.1.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"a8b78a0f2fe493333c0c5836509bcb0a9a9fb30a","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.1.1.tgz","fileCount":18,"integrity":"sha512-rHPU+vC4Yd32dGYIXZkLlohnOJ7z4EUtcWQrv7jw7wOIJovkl3cPAnvcETSAEV27vxznoe7Isroh030rBssZCw==","signatures":[{"sig":"MEUCIQCibCLjuZaQQoz6G2r/HQzqARRhGKMzXGY1Z0ajDi6LSQIgZml0MN6XhHaEoxAHvGRwo7ED2fjB4sruZ4WwG1R/21A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103362},"main":"dist/index.js","_from":"file:bernierllc-content-editor-ui-0.1.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/1af387e9448e9bb4f146bce30d1bf68c/bernierllc-content-editor-ui-0.1.1.tgz","_integrity":"sha512-rHPU+vC4Yd32dGYIXZkLlohnOJ7z4EUtcWQrv7jw7wOIJovkl3cPAnvcETSAEV27vxznoe7Isroh030rBssZCw==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"11.7.0","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.19.6","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.1.0","@bernierllc/content-autosave-manager":"1.0.1","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.1.1_1766087522242_0.41737250840209605","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bernierllc/content-editor-ui","version":"0.1.3","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.1.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"219ce214bfe4335254a948d2972e588a83b3e7dd","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.1.3.tgz","fileCount":18,"integrity":"sha512-/KdVz4TOok7t3UGIh7xeUGce64fMqJr1l/YpwgxW71XxIheO8bfzWmojVHIpvRpVuwjyEA68lzyBRGYAd4NKFw==","signatures":[{"sig":"MEUCIFgZm7I8Yc/7PTrPheIT46a/jTz+AzBd3YRV09RfpfanAiEAhj0XwZqu3TrhNrN+wPga82goya+8Iz35UzZR/8cOr7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103420},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.19.6","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.3.0","@bernierllc/content-autosave-manager":"1.2.0","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.1.3_1767642490458_0.3455370094875072","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@bernierllc/content-editor-ui","version":"0.1.5","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.1.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"3d5787556ea6ebcec24bf69644402bb8b3e6860d","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.1.5.tgz","fileCount":18,"integrity":"sha512-5WEx8/RtxRNdMd/I/+/bqAKw62a2YIBdiO979CbTugtkOjQEyUy43Yw5bA8QnnalYx1+G3Ept0tT8WiK+MbWFA==","signatures":[{"sig":"MEUCIQCkKnflMWwyZw4rAC6q5ZdR1A+91knc74j6SRyr43epZQIgPu69rPWs0mZPhjf0KyEm/24yiQIeNNCc4vChHZ+tWoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103362},"main":"dist/index.js","_from":"file:bernierllc-content-editor-ui-0.1.5.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"_resolved":"/home/runner/work/tools/tools/packages/ui/content-editor-ui/bernierllc-content-editor-ui-0.1.5.tgz","_integrity":"sha512-5WEx8/RtxRNdMd/I/+/bqAKw62a2YIBdiO979CbTugtkOjQEyUy43Yw5bA8QnnalYx1+G3Ept0tT8WiK+MbWFA==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"11.11.0","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.3.2","@bernierllc/content-autosave-manager":"1.2.2","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.1.5_1773163782908_0.23477058915786708","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@bernierllc/content-editor-ui","version":"0.1.6","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.1.6","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"9647aa3b57b8149c32bba67731f9e6c57767380d","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.1.6.tgz","fileCount":18,"integrity":"sha512-mqIIpIbboiowJYU9K54BHH9wd2/ln+ugDnFvaSkgl5hZASk1D4tnBagDgrqK3HTQfxRsWSippcTag/fE/4XatQ==","signatures":[{"sig":"MEYCIQDrZzwFXAQrCwHg5oApv/2etKPckHmVVHYPo9H5MTVGpwIhAJMSK+1CUSVGEvfWwHQ8wOpDVRfG+S4OiQg2/N42JWOI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103362},"main":"dist/index.js","_from":"file:bernierllc-content-editor-ui-0.1.6.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"_resolved":"/home/runner/work/tools/tools/packages/ui/content-editor-ui/bernierllc-content-editor-ui-0.1.6.tgz","_integrity":"sha512-mqIIpIbboiowJYU9K54BHH9wd2/ln+ugDnFvaSkgl5hZASk1D4tnBagDgrqK3HTQfxRsWSippcTag/fE/4XatQ==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"11.14.1","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.3.2","@bernierllc/content-autosave-manager":"1.2.3","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.1.6_1779134045219_0.5617806807058783","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@bernierllc/content-editor-ui","version":"0.1.7","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.1.7","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"534d5ce1a73be36ff4465976f629ba82bd220eaa","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.1.7.tgz","fileCount":18,"integrity":"sha512-FuQ4SsGVpLqQZXoMHugGohcgx2N1AEvsQeiCqlqRBSlhO6QThyry3XaJUuv10VZR8Z92TBUaJfhtCld6nmcckw==","signatures":[{"sig":"MEUCIAwuNDKMesk1GDHB+CTSrE/5e5MY97n4fQPKs1Qp8zKwAiEA2C4Col0NpEuJIJH0xc6oZe6bj95fXw0UYvjxtAIOnhA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103362},"main":"dist/index.js","_from":"file:bernierllc-content-editor-ui-0.1.7.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"_resolved":"/home/runner/work/tools/tools/packages/ui/content-editor-ui/bernierllc-content-editor-ui-0.1.7.tgz","_integrity":"sha512-FuQ4SsGVpLqQZXoMHugGohcgx2N1AEvsQeiCqlqRBSlhO6QThyry3XaJUuv10VZR8Z92TBUaJfhtCld6nmcckw==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"11.14.1","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.3.2","@bernierllc/content-autosave-manager":"1.2.4","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.1.7_1779157683313_0.8752547638327028","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@bernierllc/content-editor-ui","version":"0.1.8","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.1.8","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"27946d8d631196ba4782cabf50824626af2d4d44","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.1.8.tgz","fileCount":18,"integrity":"sha512-nk+qvqdrYonNp1E1JSvfX0fqOvk3H+fXyM86rvzAYfqXjMaVV7nmbHiiQUPnpa3cAjcn69PtlKUa46sMB53UAw==","signatures":[{"sig":"MEMCIEXTklY1VqOTXdDB5ltyIE6nGPKq5w50Rrn5DoNHFfpwAh8fVnnc7iW1RRX69IXWGlaACJyPmWtIDzev7VlNYByB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103362},"main":"dist/index.js","_from":"file:bernierllc-content-editor-ui-0.1.8.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"_resolved":"/home/runner/work/tools/tools/packages/ui/content-editor-ui/bernierllc-content-editor-ui-0.1.8.tgz","_integrity":"sha512-nk+qvqdrYonNp1E1JSvfX0fqOvk3H+fXyM86rvzAYfqXjMaVV7nmbHiiQUPnpa3cAjcn69PtlKUa46sMB53UAw==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"11.14.1","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.3.2","@bernierllc/content-autosave-manager":"1.4.0","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.1.8_1779234192640_0.2549286368441719","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bernierllc/content-editor-ui","version":"0.2.0","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"7740e6aca310fb91f5f368c108ff07db2c12a367","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.2.0.tgz","fileCount":18,"integrity":"sha512-7fbVqJ+AUETNCxAOnisd+SujIxZ/MTLBr/cPSCoPxbjIB7bLnXEsN5AhfMzs9hprg3MdOHXgZksCLTv9UlQ6kg==","signatures":[{"sig":"MEUCIQCu5OoX5B8vSGWRKDs9e3c2byRtmoGVQTOA6LXCSXEs1wIgPWkyIv5mnZSNkEPiLTlwMID1mhEyvFSJgxPZr2g6BDw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103362},"main":"dist/index.js","_from":"file:bernierllc-content-editor-ui-0.2.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"_resolved":"/home/runner/work/tools/tools/packages/ui/content-editor-ui/bernierllc-content-editor-ui-0.2.0.tgz","_integrity":"sha512-7fbVqJ+AUETNCxAOnisd+SujIxZ/MTLBr/cPSCoPxbjIB7bLnXEsN5AhfMzs9hprg3MdOHXgZksCLTv9UlQ6kg==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"11.14.1","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.5.0","@bernierllc/content-autosave-manager":"1.5.0","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.2.0_1779241987686_0.015416708179468941","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@bernierllc/content-editor-ui","version":"0.2.1","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"ff01a68df9e841d85ea47399925e227453e1b4ae","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.2.1.tgz","fileCount":18,"integrity":"sha512-bOO5KzkW1CTXCL6RjXLVLyIdyl4aavQ6C3xfsCjyJ68fZ5IUL0bhz8Un7QfNoV4ADnjGkYjVBRhv14y3ZrXvLw==","signatures":[{"sig":"MEYCIQCMPp1Ex0W5ac0vIQAEiC8oQV2DRMVlF2rOusmq/DHNHgIhAIEhqw+WtMuD29DM87/lVUjbydtYaWidOTkykV8vpx8k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103362},"main":"dist/index.js","_from":"file:bernierllc-content-editor-ui-0.2.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"_resolved":"/home/runner/work/tools/tools/packages/ui/content-editor-ui/bernierllc-content-editor-ui-0.2.1.tgz","_integrity":"sha512-bOO5KzkW1CTXCL6RjXLVLyIdyl4aavQ6C3xfsCjyJ68fZ5IUL0bhz8Un7QfNoV4ADnjGkYjVBRhv14y3ZrXvLw==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"11.14.1","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.5.0","@bernierllc/content-autosave-manager":"1.5.1","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.2.1_1779243645697_0.8731532526992649","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bernierllc/content-editor-ui","version":"0.4.0","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/content-editor-ui@0.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"c6a4b40112afaee1d11d0ab0dd195295f4ec0935","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.4.0.tgz","fileCount":22,"integrity":"sha512-2W92Tv0mX2eyWTJ7RZzSQGSqTGAaJ4YYVczL/x3yXQesCT0ZiG+rXXbRfwtNpvVm5vfz7Y/fFMpA1DIMPtUHqA==","signatures":[{"sig":"MEQCIBu8wkW7MPAg87J/xpRZkxrtUGmZO5PC99X0IUjP9mXBAiAHGMf+37/f/RU3uE51AFt08sKwMnykd8DNFnsr4CFu9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106403},"main":"dist/index.js","_from":"file:bernierllc-content-editor-ui-0.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"_resolved":"/home/runner/work/tools/tools/packages/ui/content-editor-ui/bernierllc-content-editor-ui-0.4.0.tgz","_integrity":"sha512-2W92Tv0mX2eyWTJ7RZzSQGSqTGAaJ4YYVczL/x3yXQesCT0ZiG+rXXbRfwtNpvVm5vfz7Y/fFMpA1DIMPtUHqA==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"11.14.1","description":"TipTap editor with Tamagui UI components for content management","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"1.6.0","@bernierllc/content-autosave-manager":"1.6.0","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-editor-ui_0.4.0_1779250739726_0.7789878521942646","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"_id":"@bernierllc/content-editor-ui@0.4.1","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"9543ec4b94d9c3a9fd090721a358d5010c1e85f1","tarball":"https://registry.npmjs.org/@bernierllc/content-editor-ui/-/content-editor-ui-0.4.1.tgz","fileCount":22,"integrity":"sha512-29UDJiQVwlT5Fzd2sApTE27x7bKJIPH27MgxOsmnH7NquPukBi2V1AFeI3JpeNlChc+zf/K91zSiolK3aqVZ4A==","signatures":[{"sig":"MEUCIQDcyFoGresbYZJO25rwkY0z6px8zDXn1j9UcG68CALujwIgY515X3YhaQ3mrNLrCDLrywJuRuq2Id6AsYe+PhnA+Ac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC3sjNVq0g+Rh/nm9kdyCoYhn8365zdkSvtRbFjbx/HdgIgbOHqpKvl6gVhx/uj4n6rkqTFuSSag5WjW1QMJmxtMJ4="}],"unpackedSize":106405},"main":"dist/index.js","name":"@bernierllc/content-editor-ui","_from":"file:bernierllc-content-editor-ui-0.4.1.tgz","types":"dist/index.d.ts","author":{"name":"Bernier LLC"},"license":"UNLICENSED","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"version":"0.4.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"2bddbbda-a1dd-42aa-b818-9ca0707d1e92"}},"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"_resolved":"/home/runner/work/tools/tools/packages/ui/content-editor-ui/bernierllc-content-editor-ui-0.4.1.tgz","_integrity":"sha512-29UDJiQVwlT5Fzd2sApTE27x7bKJIPH27MgxOsmnH7NquPukBi2V1AFeI3JpeNlChc+zf/K91zSiolK3aqVZ4A==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"_npmVersion":"12.2.0","description":"TipTap editor with Tamagui UI components for content management","directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"react":"^18.2.0","tamagui":"^1.91.0","react-dom":"^18.2.0","@tamagui/core":"^1.91.0","@tiptap/react":"^2.1.13","@tamagui/config":"^1.91.0","@tamagui/font-inter":"^1.91.0","@tamagui/shorthands":"^1.91.0","@tamagui/theme-base":"^1.91.0","@tiptap/starter-kit":"^2.1.13","@tiptap/extension-link":"^2.1.13","@tiptap/extension-color":"^2.1.13","@tiptap/extension-image":"^2.1.13","@tiptap/extension-table":"^2.1.13","@tiptap/extension-highlight":"^2.1.13","@tiptap/extension-table-row":"^2.1.13","@tiptap/extension-table-cell":"^2.1.13","@tiptap/extension-text-align":"^2.1.13","@tiptap/extension-text-style":"^2.1.13","@tiptap/extension-placeholder":"^2.1.13","@tiptap/extension-table-header":"^2.1.13","@tamagui/animations-react-native":"^1.91.0","@bernierllc/content-type-registry":"^1.6.0","@bernierllc/content-autosave-manager":"^1.6.0","@tiptap/extension-code-block-lowlight":"^2.1.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.50.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.8.0","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","@typescript-eslint/parser":"^6.7.3","@typescript-eslint/eslint-plugin":"^6.7.3"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/content-editor-ui_0.4.1_1790797207234_0.5856450389694905"}}},"time":{"created":"2025-12-18T19:52:02.165Z","modified":"2026-09-30T19:40:07.509Z","0.1.1":"2025-12-18T19:52:02.380Z","0.1.3":"2026-01-05T19:48:10.617Z","0.1.5":"2026-03-10T17:29:43.057Z","0.1.6":"2026-05-18T19:54:05.364Z","0.1.7":"2026-05-19T02:28:03.500Z","0.1.8":"2026-05-19T23:43:12.782Z","0.2.0":"2026-05-20T01:53:07.830Z","0.2.1":"2026-05-20T02:20:45.827Z","0.4.0":"2026-05-20T04:18:59.849Z","0.4.1":"2026-09-30T19:40:07.338Z"},"bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","homepage":"https://github.com/BernierLLC/tools/tree/main/packages/ui/content-editor-ui#readme","keywords":["content","editor","tiptap","tamagui","wysiwyg","content-management","bernierllc"],"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/ui/content-editor-ui"},"description":"TipTap editor with Tamagui UI components for content management","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/content-editor-ui\n\nTipTap editor with Tamagui UI components for content management.\n\n## Overview\n\nThis package provides a comprehensive content editor built with TipTap and Tamagui. It offers a rich WYSIWYG editing experience with customizable toolbars, status bars, auto-save functionality, and seamless integration with the content management suite.\n\n## Features\n\n- **TipTap Integration**: Full-featured WYSIWYG editor with rich text capabilities\n- **Tamagui UI**: Beautiful, accessible UI components with consistent theming\n- **Auto-save Support**: Configurable auto-save with visual feedback\n- **Customizable Toolbar**: Flexible toolbar with formatting, media, and custom tools\n- **Status Bar**: Real-time statistics (word count, character count, reading time)\n- **Media Upload**: Drag-and-drop media upload with progress tracking\n- **Content Type Support**: Integration with content type registry\n- **Keyboard Shortcuts**: Built-in shortcuts for common operations\n- **Theme Support**: Light, dark, and auto themes\n- **Accessibility**: Full accessibility support with ARIA labels and keyboard navigation\n\n## Installation\n\n```bash\nnpm install @bernierllc/content-editor-ui\n```\n\n## Quick Start\n\n```typescript\nimport React from 'react';\nimport { ContentEditor } from '@bernierllc/content-editor-ui';\nimport { TamaguiProvider } from 'tamagui';\nimport { ContentData } from '@bernierllc/content-autosave-manager';\nimport { ContentType } from '@bernierllc/content-type-registry';\n\nfunction MyContentEditor() {\n  const [content, setContent] = useState<ContentData>({\n    id: 'content-1',\n    data: { type: 'doc', content: [] },\n    metadata: { type: 'text' },\n    lastModified: new Date(),\n    version: 1\n  });\n\n  const contentType: ContentType = {\n    id: 'text',\n    name: 'Text Content',\n    schema: {},\n    editorConfig: { component: null, fields: [] },\n    storageAdapter: {},\n    displayRenderer: { component: null },\n    metadata: { description: 'Plain text content' }\n  };\n\n  const handleAutoSave = (content: ContentData) => {\n    console.log('Auto-saving content:', content);\n  };\n\n  const handleSave = (content: ContentData, saveType: 'draft' | 'publish') => {\n    console.log(`Saving as ${saveType}:`, content);\n  };\n\n  const handleChange = (content: ContentData) => {\n    setContent(content);\n  };\n\n  return (\n    <TamaguiProvider>\n      <ContentEditor\n        content={content}\n        contentType={contentType}\n        onAutoSave={handleAutoSave}\n        onSave={handleSave}\n        onChange={handleChange}\n        config={{\n          placeholder: 'Start writing your content...',\n          showWordCount: true,\n          showCharCount: true,\n          showAutoSaveStatus: true,\n          theme: 'light'\n        }}\n      />\n    </TamaguiProvider>\n  );\n}\n```\n\n## API Reference\n\n### ContentEditor\n\nThe main editor component.\n\n#### Props\n\n```typescript\ninterface ContentEditorProps {\n  content: ContentData;                    // Content data to edit\n  contentType: ContentType;               // Content type configuration\n  config?: Partial<ContentEditorUIConfig>; // Editor configuration\n  onAutoSave?: (content: ContentData) => void; // Auto-save callback\n  onSave?: (content: ContentData, saveType: 'draft' | 'publish') => void; // Save callback\n  onChange?: (content: ContentData) => void; // Content change callback\n  onFocus?: () => void;                    // Focus callback\n  onBlur?: () => void;                     // Blur callback\n  onError?: (error: Error) => void;        // Error callback\n  readOnly?: boolean;                      // Whether editor is read-only\n  disabled?: boolean;                      // Whether editor is disabled\n  customToolbarItems?: ToolbarItem[];      // Custom toolbar items\n  customStatusItems?: StatusItem[];        // Custom status bar items\n}\n```\n\n#### Configuration Options\n\n```typescript\ninterface ContentEditorUIConfig {\n  enabled: boolean;                        // Whether editor is enabled\n  theme: 'light' | 'dark' | 'auto';       // Editor theme\n  placeholder?: string;                    // Placeholder text\n  showWordCount: boolean;                  // Whether to show word count\n  showCharCount: boolean;                  // Whether to show character count\n  showAutoSaveStatus: boolean;             // Whether to show auto-save status\n  showToolbar: boolean;                    // Whether to show toolbar\n  showStatusBar: boolean;                  // Whether to show status bar\n  height?: string | number;                // Editor height\n  width?: string | number;                 // Editor width\n  className?: string;                      // Custom CSS classes\n  style?: React.CSSProperties;             // Custom styles\n}\n```\n\n### ContentTypeSelector\n\nComponent for selecting content types.\n\n```typescript\ninterface ContentTypeSelectorProps {\n  contentTypes: ContentType[];             // Available content types\n  selectedType?: ContentType;             // Currently selected type\n  onChange: (contentType: ContentType) => void; // Change callback\n  disabled?: boolean;                      // Whether selector is disabled\n  placeholder?: string;                    // Custom placeholder\n  showDescriptions?: boolean;              // Whether to show descriptions\n  showIcons?: boolean;                     // Whether to show icons\n}\n```\n\n### MediaUploader\n\nComponent for uploading media files.\n\n```typescript\ninterface MediaUploaderProps {\n  accept?: string[];                       // Accepted file types\n  maxSize?: number;                        // Maximum file size in bytes\n  onUpload: (file: File) => Promise<string>; // Upload callback\n  onProgress?: (progress: number) => void; // Progress callback\n  onError?: (error: Error) => void;        // Error callback\n  disabled?: boolean;                      // Whether uploader is disabled\n  buttonText?: string;                     // Upload button text\n  showDragDrop?: boolean;                  // Whether to show drag and drop area\n}\n```\n\n### ContentEditorSettings\n\nComponent for configuring editor settings.\n\n```typescript\ninterface ContentEditorSettingsProps {\n  settings: Record<string, any>;           // Current settings\n  onChange: (settings: Record<string, any>) => void; // Change callback\n  isOpen: boolean;                         // Whether settings panel is open\n  onClose: () => void;                     // Close callback\n  disabled?: boolean;                      // Whether settings are disabled\n}\n```\n\n## Examples\n\n### Basic Editor with Auto-save\n\n```typescript\nimport React, { useState, useCallback } from 'react';\nimport { ContentEditor } from '@bernierllc/content-editor-ui';\nimport { ContentData } from '@bernierllc/content-autosave-manager';\n\nfunction AutoSaveEditor() {\n  const [content, setContent] = useState<ContentData>({\n    id: 'content-1',\n    data: { type: 'doc', content: [] },\n    metadata: { type: 'text' },\n    lastModified: new Date(),\n    version: 1\n  });\n\n  const handleAutoSave = useCallback(async (content: ContentData) => {\n    try {\n      // Save to server\n      await fetch('/api/content/autosave', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify(content)\n      });\n      \n      console.log('Auto-saved successfully');\n    } catch (error) {\n      console.error('Auto-save failed:', error);\n    }\n  }, []);\n\n  const handleSave = useCallback(async (content: ContentData, saveType: 'draft' | 'publish') => {\n    try {\n      await fetch('/api/content/save', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ ...content, saveType })\n      });\n      \n      console.log(`Saved as ${saveType}`);\n    } catch (error) {\n      console.error('Save failed:', error);\n    }\n  }, []);\n\n  return (\n    <ContentEditor\n      content={content}\n      contentType={textContentType}\n      onAutoSave={handleAutoSave}\n      onSave={handleSave}\n      onChange={setContent}\n      config={{\n        placeholder: 'Start writing...',\n        showAutoSaveStatus: true,\n        showWordCount: true,\n        showCharCount: true\n      }}\n    />\n  );\n}\n```\n\n### Editor with Custom Toolbar\n\n```typescript\nimport React from 'react';\nimport { ContentEditor, ToolbarItem } from '@bernierllc/content-editor-ui';\n\nfunction CustomToolbarEditor() {\n  const customToolbarItems: ToolbarItem[] = [\n    {\n      id: 'custom-button',\n      type: 'button',\n      label: 'Custom Action',\n      icon: '⭐',\n      tooltip: 'Perform custom action',\n      onClick: () => {\n        console.log('Custom action triggered');\n      }\n    },\n    {\n      id: 'custom-separator',\n      type: 'separator'\n    },\n    {\n      id: 'custom-component',\n      type: 'custom',\n      component: CustomToolbarComponent,\n      props: { customProp: 'value' }\n    }\n  ];\n\n  return (\n    <ContentEditor\n      content={content}\n      contentType={contentType}\n      customToolbarItems={customToolbarItems}\n      config={{\n        showToolbar: true,\n        showFormatting: true,\n        showHeadings: true,\n        showLists: true,\n        showLink: true,\n        showImage: true\n      }}\n    />\n  );\n}\n\nfunction CustomToolbarComponent({ editor, customProp }: any) {\n  return (\n    <Button\n      onPress={() => {\n        // Custom toolbar action\n        editor.chain().focus().insertContent('Custom content').run();\n      }}\n    >\n      <Text>{customProp}</Text>\n    </Button>\n  );\n}\n```\n\n### Editor with Media Upload\n\n```typescript\nimport React from 'react';\nimport { ContentEditor, MediaUploader } from '@bernierllc/content-editor-ui';\n\nfunction MediaEditor() {\n  const handleMediaUpload = async (file: File): Promise<string> => {\n    const formData = new FormData();\n    formData.append('file', file);\n    \n    const response = await fetch('/api/upload', {\n      method: 'POST',\n      body: formData\n    });\n    \n    const result = await response.json();\n    return result.url;\n  };\n\n  const handleUploadProgress = (progress: number) => {\n    console.log(`Upload progress: ${progress}%`);\n  };\n\n  const handleUploadError = (error: Error) => {\n    console.error('Upload error:', error);\n  };\n\n  return (\n    <YStack gap=\"$4\">\n      <ContentEditor\n        content={content}\n        contentType={contentType}\n        config={{\n          showImage: true,\n          showToolbar: true\n        }}\n      />\n      \n      <MediaUploader\n        accept={['image/*', 'video/*', 'audio/*']}\n        maxSize={10 * 1024 * 1024} // 10MB\n        onUpload={handleMediaUpload}\n        onProgress={handleUploadProgress}\n        onError={handleUploadError}\n        showDragDrop={true}\n        buttonText=\"Upload Media\"\n      />\n    </YStack>\n  );\n}\n```\n\n### Editor with Content Type Selection\n\n```typescript\nimport React, { useState } from 'react';\nimport { ContentEditor, ContentTypeSelector } from '@bernierllc/content-editor-ui';\n\nfunction MultiTypeEditor() {\n  const [selectedType, setSelectedType] = useState(contentTypes[0]);\n  const [content, setContent] = useState<ContentData>({\n    id: 'content-1',\n    data: { type: 'doc', content: [] },\n    metadata: { type: selectedType.id },\n    lastModified: new Date(),\n    version: 1\n  });\n\n  const handleTypeChange = (contentType: ContentType) => {\n    setSelectedType(contentType);\n    \n    // Update content metadata\n    setContent(prev => ({\n      ...prev,\n      metadata: { ...prev.metadata, type: contentType.id }\n    }));\n  };\n\n  return (\n    <YStack gap=\"$4\">\n      <ContentTypeSelector\n        contentTypes={contentTypes}\n        selectedType={selectedType}\n        onChange={handleTypeChange}\n        showDescriptions={true}\n        showIcons={true}\n        placeholder=\"Select content type...\"\n      />\n      \n      <ContentEditor\n        content={content}\n        contentType={selectedType}\n        onChange={setContent}\n        config={{\n          placeholder: `Start writing ${selectedType.name.toLowerCase()}...`,\n          showWordCount: true,\n          showCharCount: true\n        }}\n      />\n    </YStack>\n  );\n}\n```\n\n### Editor with Settings Panel\n\n```typescript\nimport React, { useState } from 'react';\nimport { ContentEditor, ContentEditorSettings } from '@bernierllc/content-editor-ui';\n\nfunction ConfigurableEditor() {\n  const [settings, setSettings] = useState({\n    showWordCount: true,\n    showCharCount: true,\n    showAutoSaveStatus: true,\n    editorHeight: '400px',\n    placeholder: 'Start writing...',\n    theme: 'light'\n  });\n  \n  const [isSettingsOpen, setIsSettingsOpen] = useState(false);\n\n  const handleSettingsChange = (newSettings: Record<string, any>) => {\n    setSettings(prev => ({ ...prev, ...newSettings }));\n  };\n\n  return (\n    <YStack gap=\"$4\">\n      <XStack gap=\"$2\" justifyContent=\"flex-end\">\n        <Button onPress={() => setIsSettingsOpen(true)}>\n          <Text>Settings</Text>\n        </Button>\n      </XStack>\n      \n      <ContentEditor\n        content={content}\n        contentType={contentType}\n        config={settings}\n        onChange={setContent}\n      />\n      \n      <ContentEditorSettings\n        settings={settings}\n        onChange={handleSettingsChange}\n        isOpen={isSettingsOpen}\n        onClose={() => setIsSettingsOpen(false)}\n      />\n    </YStack>\n  );\n}\n```\n\n### Editor with Custom Status Bar\n\n```typescript\nimport React from 'react';\nimport { ContentEditor, StatusItem } from '@bernierllc/content-editor-ui';\n\nfunction CustomStatusEditor() {\n  const customStatusItems: StatusItem[] = [\n    {\n      id: 'custom-stat',\n      type: 'text',\n      label: 'Custom Stat',\n      value: '42',\n      color: '#007bff'\n    },\n    {\n      id: 'custom-progress',\n      type: 'progress',\n      label: 'Progress',\n      value: 75\n    },\n    {\n      id: 'custom-component',\n      type: 'custom',\n      component: CustomStatusComponent,\n      props: { data: 'custom data' }\n    }\n  ];\n\n  return (\n    <ContentEditor\n      content={content}\n      contentType={contentType}\n      customStatusItems={customStatusItems}\n      config={{\n        showStatusBar: true,\n        showWordCount: true,\n        showCharCount: true,\n        showAutoSaveStatus: true\n      }}\n    />\n  );\n}\n\nfunction CustomStatusComponent({ statistics, data }: any) {\n  return (\n    <XStack gap=\"$1\" alignItems=\"center\">\n      <Text fontSize=\"$1\" color=\"$gray\">\n        {data}:\n      </Text>\n      <Text fontSize=\"$1\" fontWeight=\"bold\">\n        {statistics.wordCount * 2}\n      </Text>\n    </XStack>\n  );\n}\n```\n\n### Editor with Keyboard Shortcuts\n\n```typescript\nimport React from 'react';\nimport { ContentEditor } from '@bernierllc/content-editor-ui';\n\nfunction KeyboardShortcutsEditor() {\n  const handleSave = (content: ContentData, saveType: 'draft' | 'publish') => {\n    console.log(`Saving as ${saveType}:`, content);\n  };\n\n  return (\n    <ContentEditor\n      content={content}\n      contentType={contentType}\n      onSave={handleSave}\n      config={{\n        placeholder: 'Use Ctrl+S to save draft, Ctrl+Shift+S to publish',\n        showToolbar: true,\n        showStatusBar: true\n      }}\n    />\n  );\n}\n```\n\n### Editor with Error Handling\n\n```typescript\nimport React, { useState } from 'react';\nimport { ContentEditor } from '@bernierllc/content-editor-ui';\nimport { Alert, Toast } from 'tamagui';\n\nfunction ErrorHandlingEditor() {\n  const [error, setError] = useState<string | null>(null);\n\n  const handleError = (error: Error) => {\n    setError(error.message);\n    console.error('Editor error:', error);\n  };\n\n  const handleAutoSaveError = (error: Error) => {\n    console.error('Auto-save error:', error);\n    // Show toast notification\n    Toast.show({\n      message: 'Auto-save failed. Please save manually.',\n      type: 'error'\n    });\n  };\n\n  return (\n    <YStack gap=\"$4\">\n      {error && (\n        <Alert type=\"error\">\n          <Text>{error}</Text>\n        </Alert>\n      )}\n      \n      <ContentEditor\n        content={content}\n        contentType={contentType}\n        onError={handleError}\n        onAutoSaveError={handleAutoSaveError}\n        config={{\n          showAutoSaveStatus: true,\n          showStatusBar: true\n        }}\n      />\n    </YStack>\n  );\n}\n```\n\n## Keyboard Shortcuts\n\nThe editor supports the following keyboard shortcuts:\n\n- **Ctrl/Cmd + S**: Save as draft\n- **Ctrl/Cmd + Shift + S**: Publish\n- **Ctrl/Cmd + B**: Bold\n- **Ctrl/Cmd + I**: Italic\n- **Ctrl/Cmd + U**: Underline\n- **Ctrl/Cmd + K**: Add link\n- **Ctrl/Cmd + Shift + K**: Remove link\n\n## Theming\n\nThe editor supports Tamagui theming and can be customized with:\n\n- **Light Theme**: Default light theme\n- **Dark Theme**: Dark theme for low-light environments\n- **Auto Theme**: Automatically switches based on system preference\n\n## Accessibility\n\nThe editor is fully accessible with:\n\n- **ARIA Labels**: All interactive elements have proper labels\n- **Keyboard Navigation**: Full keyboard support\n- **Screen Reader Support**: Compatible with screen readers\n- **Focus Management**: Proper focus handling\n- **High Contrast Support**: Works with high contrast modes\n\n## TypeScript Support\n\nThis package is written in TypeScript and provides full type definitions. All interfaces and types are exported for use in your own code.\n\n## License\n\nUNLICENSED - See LICENSE file for details.\n\n## Contributing\n\nContributions are welcome! Please see the contributing guidelines for more information.\n\n## Support\n\nFor support and questions, please open an issue on GitHub.\n","readmeFilename":"README.md"}