Package Exports
- customized-tiptap-editor
- customized-tiptap-editor/dist/style.css
Readme
โจ Customized TipTap
A beautiful, powerful, and developer-friendly WYSIWYG rich-text editor built on TipTap and customized to work seamlessly with Vuetify 3, Tailwind, and Material Design Icons.
๐ What is Customized TipTap?
customized-tiptap
is a feature-rich Vue 3 plugin offering a refined editing experience out of the box. Designed with clean aesthetics and an extensible architecture, it simplifies rich-text editing for modern Vue applications.
๐ Based on TipTap 2
๐จ Styled with Tailwind & Vuetify 3
๐ Includes out-of-the-box Vuetify-compatible UI
๐ฌ Multilingual & markdown-capable (in roadmap)
๐ Demo
You can find a live demo of the editor here.
โจ Features
- ๐ Vuetify-styled menus โ Looks and feels native to your Vuetify app
- ๐จ Tailwind-powered layout โ Clean, customizable UI
- ๐งฉ Pluggable extensions โ Easily extend or override editor behavior
- ๐ Markdown-friendly output
- ๐งผ Zero warnings โ Clean console, smooth experience
- ๐ง Full TypeScript support
- ๐ช Custom merge field support
- ๐ช Auto-formatting (coming soon)
๐ฆ Installation
npm install customized-tiptap-editor
This package requires Vuetify 3 and @mdi/font as peer dependencies.
๐ Setup Instructions
1. Install the package
Install the package through the following command:
npm install customized-tiptap-editor
2. Make sure Vuetify and Material Design Icons are installed
Install Vuetify and MDI icons if not already installed:
npm install vuetify @mdi/font
3. Import styles files
import the following styles into your consumer app.
import '@mdi/font/css/materialdesignicons.css';
import 'customized-tiptap-editor/dist/style.css';
import "vuetify/styles";
4. Register the plugin
In your main entry file (e.g. main.ts
or main.js
):
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import CustomizedTipTapPlugin from 'customized-tiptap-editor';
import '@mdi/font/css/materialdesignicons.css';
import 'customized-tiptap-editor/dist/style.css';
import { createVuetify } from 'vuetify';
import * as components from 'vuetify/components';
import * as directives from 'vuetify/directives';
const vuetify = createVuetify({
components,
directives,
});
const app = createApp(App);
app.use(router);
app.use(vuetify); // Vuetify must be used
app.use(CustomizedTipTapPlugin); // Register the editor plugin
app.mount('#app');
Note: The editor requires Vuetify and MDI icons to render properly. Ensure both are imported as shown above.
๐ก Usage Example
<template>
<customized-tiptap />
</template>
<script setup lang="ts">
import { ref } from 'vue'
const content = ref('<p>Hello world!</p>')
</script>
๐งช Props
Each prop is designed with flexibility and clarity in mind:
readonly?: boolean
โ Toggle read-only mode.content?: string
โ Initial HTML content to load into the editor.excludedExtensions?: TiptapExtensionName[]
โ Extensions to exclude from the editor setup.includedExtensions?: TiptapExtensionName[]
โ Explicitly specify which extensions to include.editorProps?: EditorProps
โ Pass native props directly to the underlying Tiptap editor.customClasses?: TiptapEditorCustomClasses
โ Apply custom CSS classes, e.g.,{ editorWrapper: 'my-wrapper' }
.editorOptions?: EditorOptions
โ Full control over Tiptap editor options (likeeditable
,autofocus
, etc).
๐งฉ Extension API
Want to add custom buttons or logic? You can pass in your own extensions, merge fields, and configurations. More advanced usage docs coming soon.
โ Requirements
- Vue 3
- Vuetify 3
- Tailwind CSS (optional but recommended)
- @mdi/font
๐ Roadmap
- Vuetify 3 integration
- TypeScript support
- Custom merge field insertion
- Markdown export support
- Plugin system for menus and toolbars
- I18n (English, Farsi, and more)
๐งโ๐ป Contributing
Issues, ideas, and pull requests are always welcome! If you spot any bugs or have suggestions, feel free to open an issue.
๐ License
MIT ยฉ Mohammad