Skip to Content
ν”Œλ ˆμ΄κ·ΈλΌμš΄λ“œ

Inkio Playground

Inkio Playground

A rich text editor for production workflows. Try deleting or inline code formatting.

Text Formatting

This shows bold, italic, strikethrough, and inline code. Combine bold italic too.

Blockquotes highlight important information or quotes.

Lists

  • First item with bold text

  • Second item with a link

  • Nested items

    • Sub-item one

    • Sub-item two

  1. Install the package

  2. Import the editor

  3. Start writing

Code Block

import { useState } from 'react';
import { Editor, ToC } from '@inkio/editor';
import '@inkio/editor/style.css';

export default function App() {
  const [editor, setEditor] = useState(null);

  return (
    <div style={{ position: 'relative' }}>
      <Editor
        placeholder="Start writing..."
        locale="ko"
        onCreate={setEditor}
        onImageUpload={async (file) => {
          const url = URL.createObjectURL(file);
          return url;
        }}
      />
      <ToC source={editor} maxLevel={3} />
    </div>
  );
}

Interactive Features

  • Type / for slash commands

  • Type # for hashtag suggestions

  • Type [[page]] for wiki links

  • Select text and press Mod+Shift+M for comments

  • Drag & drop images to test the image editor

Inkio Playground

A rich text editor for production workflows. Try deleting or inline code formatting.

Text Formatting

This shows bold, italic, strikethrough, and inline code. Combine bold italic too.

Blockquotes highlight important information or quotes.

Lists

  • First item with bold text

  • Second item with a link

  • Nested items

    • Sub-item one

    • Sub-item two

  1. Install the package

  2. Import the editor

  3. Start writing

Code Block

import { useState } from 'react';
import { Editor, ToC } from '@inkio/editor';
import '@inkio/editor/style.css';

export default function App() {
  const [editor, setEditor] = useState(null);

  return (
    <div style={{ position: 'relative' }}>
      <Editor
        placeholder="Start writing..."
        locale="ko"
        onCreate={setEditor}
        onImageUpload={async (file) => {
          const url = URL.createObjectURL(file);
          return url;
        }}
      />
      <ToC source={editor} maxLevel={3} />
    </div>
  );
}

Interactive Features

  • Type / for slash commands

  • Type # for hashtag suggestions

  • Type [[page]] for wiki links

  • Select text and press Mod+Shift+M for comments

  • Drag & drop images to test the image editor

{
  "type": "doc",
  "content": [
    {
      "type": "heading",
      "attrs": {
        "level": 2
      },
      "content": [
        {
          "type": "text",
          "text": "Inkio Playground"
        }
      ]
    },
    {
      "type": "tocBlock",
      "attrs": {
        "maxLevel": 3
      }
    },
    {
      "type": "paragraph",
      "content": [
        {
          "type": "text",
          "text": "A "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "bold"
            }
          ],
          "text": "rich text editor"
        },
        {
          "type": "text",
          "text": " for "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "italic"
            }
          ],
          "text": "production"
        },
        {
          "type": "text",
          "text": " workflows. Try "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "strike"
            }
          ],
          "text": "deleting"
        },
        {
          "type": "text",
          "text": " or "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "code"
            }
          ],
          "text": "inline code"
        },
        {
          "type": "text",
          "text": " formatting."
        }
      ]
    },
    {
      "type": "heading",
      "attrs": {
        "level": 3
      },
      "content": [
        {
          "type": "text",
          "text": "Text Formatting"
        }
      ]
    },
    {
      "type": "paragraph",
      "content": [
        {
          "type": "text",
          "text": "This shows "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "bold"
            }
          ],
          "text": "bold"
        },
        {
          "type": "text",
          "text": ", "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "italic"
            }
          ],
          "text": "italic"
        },
        {
          "type": "text",
          "text": ", "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "strike"
            }
          ],
          "text": "strikethrough"
        },
        {
          "type": "text",
          "text": ", and "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "code"
            }
          ],
          "text": "inline code"
        },
        {
          "type": "text",
          "text": ". Combine "
        },
        {
          "type": "text",
          "marks": [
            {
              "type": "bold"
            },
            {
              "type": "italic"
            }
          ],
          "text": "bold italic"
        },
        {
          "type": "text",
          "text": " too."
        }
      ]
    },
    {
      "type": "blockquote",
      "content": [
        {
          "type": "paragraph",
          "content": [
            {
              "type": "text",
              "text": "Blockquotes highlight important information or quotes."
            }
          ]
        }
      ]
    },
    {
      "type": "heading",
      "attrs": {
        "level": 3
      },
      "content": [
        {
          "type": "text",
          "text": "Lists"
        }
      ]
    },
    {
      "type": "bulletList",
      "content": [
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "First item with "
                },
                {
                  "type": "text",
                  "marks": [
                    {
                      "type": "bold"
                    }
                  ],
                  "text": "bold"
                },
                {
                  "type": "text",
                  "text": " text"
                }
              ]
            }
          ]
        },
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Second item with a "
                },
                {
                  "type": "text",
                  "marks": [
                    {
                      "type": "link",
                      "attrs": {
                        "href": "https://github.com",
                        "target": "_blank"
                      }
                    }
                  ],
                  "text": "link"
                }
              ]
            }
          ]
        },
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Nested items"
                }
              ]
            },
            {
              "type": "bulletList",
              "content": [
                {
                  "type": "listItem",
                  "content": [
                    {
                      "type": "paragraph",
                      "content": [
                        {
                          "type": "text",
                          "text": "Sub-item one"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "listItem",
                  "content": [
                    {
                      "type": "paragraph",
                      "content": [
                        {
                          "type": "text",
                          "text": "Sub-item two"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "orderedList",
      "content": [
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Install the package"
                }
              ]
            }
          ]
        },
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Import the editor"
                }
              ]
            }
          ]
        },
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Start writing"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "heading",
      "attrs": {
        "level": 3
      },
      "content": [
        {
          "type": "text",
          "text": "Code Block"
        }
      ]
    },
    {
      "type": "codeBlock",
      "attrs": {
        "language": "tsx"
      },
      "content": [
        {
          "type": "text",
          "text": "import { useState } from 'react';\nimport { Editor, ToC } from '@inkio/editor';\nimport '@inkio/editor/style.css';\n\nexport default function App() {\n  const [editor, setEditor] = useState(null);\n\n  return (\n    <div style={{ position: 'relative' }}>\n      <Editor\n        placeholder=\"Start writing...\"\n        locale=\"ko\"\n        onCreate={setEditor}\n        onImageUpload={async (file) => {\n          const url = URL.createObjectURL(file);\n          return url;\n        }}\n      />\n      <ToC source={editor} maxLevel={3} />\n    </div>\n  );\n}"
        }
      ]
    },
    {
      "type": "horizontalRule"
    },
    {
      "type": "heading",
      "attrs": {
        "level": 3
      },
      "content": [
        {
          "type": "text",
          "text": "Interactive Features"
        }
      ]
    },
    {
      "type": "bulletList",
      "content": [
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Type "
                },
                {
                  "type": "text",
                  "marks": [
                    {
                      "type": "code"
                    }
                  ],
                  "text": "/"
                },
                {
                  "type": "text",
                  "text": " for slash commands"
                }
              ]
            }
          ]
        },
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Type "
                },
                {
                  "type": "text",
                  "marks": [
                    {
                      "type": "code"
                    }
                  ],
                  "text": "#"
                },
                {
                  "type": "text",
                  "text": " for hashtag suggestions"
                }
              ]
            }
          ]
        },
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Type "
                },
                {
                  "type": "text",
                  "marks": [
                    {
                      "type": "code"
                    }
                  ],
                  "text": "[[page]]"
                },
                {
                  "type": "text",
                  "text": " for wiki links"
                }
              ]
            }
          ]
        },
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Select text and press "
                },
                {
                  "type": "text",
                  "marks": [
                    {
                      "type": "code"
                    }
                  ],
                  "text": "Mod+Shift+M"
                },
                {
                  "type": "text",
                  "text": " for comments"
                }
              ]
            }
          ]
        },
        {
          "type": "listItem",
          "content": [
            {
              "type": "paragraph",
              "content": [
                {
                  "type": "text",
                  "text": "Drag & drop images to test the image editor"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
Last updated on