Skip to content

SWARVY/jikjo

Repository files navigation

jikjo

A headless, framework-agnostic rich text editor built on Lexical. Provides a plugin-based extension system, a ready-to-use UI kit, and optional add-ons like image handling — all as independently publishable npm packages.

Packages

Package Version Description
@jikjo/core npm Headless editor core: <Editor>, plugin hooks, extension API, HTML/Markdown export
@jikjo/ui-kit npm Pre-built editor UI with toolbar, bubble menu, slash command, and block toolbar
@jikjo/image npm Image extension with file upload, drag & drop, clipboard paste, resize, and alignment

Quick Start

pnpm add @jikjo/core @jikjo/ui-kit
import { EditorUI } from '@jikjo/ui-kit'
import '@jikjo/ui-kit/styles.css'

export default function App() {
  return <EditorUI />
}

With image support

pnpm add @jikjo/image
import { EditorUI } from '@jikjo/ui-kit'
import { createImageExtension } from '@jikjo/image'
import '@jikjo/ui-kit/styles.css'
import '@jikjo/image/styles.css'

const imageExtension = createImageExtension({
  uploadAdapter: {
    upload: async (file) => {
      const form = new FormData()
      form.append('file', file)
      const res = await fetch('/api/upload', { method: 'POST', body: form })
      const { url } = await res.json()
      return url
    },
  },
})

export default function App() {
  return <EditorUI extensions={[imageExtension]} />
}

Headless usage

import { Editor, richTextExtension, historyExtension } from '@jikjo/core'

export default function App() {
  return (
    <Editor extensions={[richTextExtension, historyExtension]}>
      {/* your custom UI here */}
    </Editor>
  )
}

For detailed props, theming variables, and advanced usage, see each package's README:

Development

pnpm install
pnpm dev           # start all packages in watch mode
pnpm build         # build all packages
pnpm check-types   # typecheck all packages

To run the playground:

pnpm --filter @jikjo/playground dev

Publishing

This repo uses Changesets for versioning and publishing.

pnpm changeset         # describe your changes
pnpm changeset version # bump versions and update changelogs
pnpm release           # publish to npm

Releases are automated via GitHub Actions on push to main.

License

MIT

About

fluent editor based on lexical

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors