A free, MIT-licensed rich text editor built on ProseMirror. Self-host the JavaScript and CSS or serve a pinned release from a CDN. No account, license key, mandatory cloud API, or paid feature tier.
Pre-1.0: manifests target v0.0.3. See production readiness and RELEASE_CHECKLIST.md. The repository owner runs npm login and pnpm publish:all after committing.
Documentation · Playground · Release status
Use Node 22.12+ and pnpm 8.12.0:
pnpm install --frozen-lockfile
pnpm build
pnpm pre-publish
pnpm test:packagesCopy packages/html/dist/likha-editor.umd.js and likha-editor.css to your static assets:
<link rel="stylesheet" href="/assets/likha-editor.css">
<div id="editor"></div>
<script src="/assets/likha-editor.umd.js"></script>
<script>
const instance = LikhaEditor.createEditor({
element: '#editor',
content: '<p>Start writing...</p>',
onChange: html => console.log(html)
});
// Call instance.destroy() when unmounting.
</script>For a published version, the equivalent npm entry point is:
import { createEditor } from '@likhaeditor/likhaeditor';
import '@likhaeditor/likhaeditor/dist/likha-editor.css';Pin the exact released version in production, including CDN URLs. New local features are unavailable from public CDN/npm until a release is published.
- Paragraphs, headings, lists, blockquotes, code blocks, links, images, and horizontal rules.
- Inline formatting, text color/highlight, alignment, undo/redo, source editing, and read-only mode.
- Table insertion, row/column operations, headers, cell merge/split, and keyboard navigation.
- Literal find/replace, validated document JSON, and CommonMark import/export for supported nodes.
- Autosave callback with coalescing, flush, and cancellation.
- Application-owned image upload callback, paste/drop hooks, and client MIME/size limits.
- Optional range comments with resolve/reopen/delete and explicit version snapshots with persistence adapters.
- Standalone browser bundle, TypeScript declarations, configurable toolbar, and plugin APIs.
Comments are separate metadata; snapshots currently contain only the document. Deleted comment ranges become orphaned. Markdown cannot preserve every HTML feature. Upload security, content validation, authentication, and storage belong to the host application.
Hosted multi-user collaboration, Filament package, media crop/resize UI, and formal accessibility certification remain open. Track changes, syntax highlighting, and React/Laravel/Livewire adapters ship in 0.0.3. See ROADMAP.md for [x] / [ ] phase checklists and release status.
| Directory | Package | Purpose |
|---|---|---|
| packages/core | @likhaeditor/core | Editor engine and schema |
| packages/ui | @likhaeditor/ui | Toolbar and menus |
| packages/plugins | @likhaeditor/plugins | Official plugins |
| packages/html | @likhaeditor/likhaeditor | Vanilla adapter and standalone bundle |
| packages/react | @likhaeditor/likhaeditor-react | React component and useEditor hook |
| packages/laravel | likha/laravel (Composer) | Blade component |
| packages/livewire | likha/livewire (Composer) | Livewire 3 component |
Filament remains a documentation-only integration pattern; use Laravel Blade or the vanilla adapter.
pnpm pre-publish
pnpm exec playwright install chromium firefox webkit
pnpm test:browser
pnpm docs:build
pnpm test:site
pnpm auditThe website builds the workspace editor into its interactive playground, so an npm release is not needed to preview or deploy repository changes. Netlify runs the package build before the documentation build. Run pnpm docs:preview for a local preview.
See CONTRIBUTING.md. Report reproducible bugs in GitHub issues.
MIT licensed, free for personal and commercial use. Retain the copyright and license notice when redistributing. Built by Shiv Singh and contributors, using ProseMirror.