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-editorThis 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-editor2. Make sure Vuetify and Material Design Icons are installed
Install Vuetify and MDI icons if not already installed:
npm install vuetify @mdi/font3. 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