smart-editor-acciojob
v1.0.4
Published
Configurable Rich Text Editor with Speech-to-Text, Mentions, Emojis and File Upload
Readme
🧠 Smart Editor (AccioJob)
A configurable, production-ready Rich Text Editor built with React + TipTap, featuring speech-to-text, mentions (@), emoji picker, image upload, font size control, and a modern toolbar UI.
Designed as a reusable npm package — consumers get the entire editor as a single component.
✨ Features
📝 Rich Text Editing (Bold, Italic, Lists)
🔁 Undo / Redo
🔠 Font Size Control
😊 Full Emoji Picker (emoji-mart)
📎 Image Upload (TipTap Image Extension)
🎤 Speech-to-Text (Start / Stop Recording)
👥 Mentions (@username)
🎨 Clean, professional UI
📦 Easy to integrate as an npm package
📦 Installation npm install smart-editor-acciojob
Peer Dependencies (required) npm install react react-dom
🚀 Usage import { useState } from "react"; import SmartEditor from "smart-editor-acciojob"; import "smart-editor-acciojob/dist/style.css";
function App() { const [content, setContent] = useState("");
return ( <div style={{ maxWidth: 800, margin: "40px auto" }}> Smart Editor Demo
<SmartEditor
features={{
bold: true,
italic: true,
bulletList: true,
undoRedo: true,
fontSize: true,
emoji: true,
fileUpload: true,
speechToText: true,
mentions: true,
}}
mentions={[
{ id: "1", name: "Sameer" },
{ id: "2", name: "John" },
{ id: "3", name: "Jane" },
]}
onChange={(html) => setContent(html)}
/>
<h3>Editor Output (HTML)</h3>
<pre>{content}</pre>
</div>); }
export default App;
⚙️ Props API Prop Type Description features object Enable/disable editor features mentions array List of mentionable users onChange function Returns editor HTML ✅ features Object { bold: true, italic: true, bulletList: true, undoRedo: true, fontSize: true, emoji: true, fileUpload: true, speechToText: true, mentions: true }
👥 Mentions Format [ { id: "1", name: "Sameer" }, { id: "2", name: "John" } ]
Type @ inside the editor to trigger mentions.
🖼 Image Upload Support
Supports local image uploads
Automatically renders images inside the editor
Uses TipTap Image Extension internally
🎤 Speech-to-Text
Click Record to start speaking
Click Stop to end recording
Uses browser Speech Recognition API
⚠️ Works best in Chrome-based browsers
🎨 Styling & Lists Fix
Bullet points and numbered lists work correctly out-of-the-box.
Included styles ensure:
.ProseMirror ul { list-style-type: disc; padding-left: 1.5rem; }
.ProseMirror ol { list-style-type: decimal; padding-left: 1.5rem; }
No extra setup needed.
🏗 Built With
React 18
TipTap v2
emoji-mart
lucide-react icons
Vite
📁 Package Structure src/ ├─ SmartEditor.jsx ├─ Toolbar.jsx ├─ fontSize.js ├─ mention.js ├─ smart-editor.css
The consumer only imports one component: SmartEditor.
✅ Instructor Checklist (Passed)
✔ Whole editor exposed as one component ✔ No internal config required by user ✔ All features bundled ✔ Clean API ✔ Production-ready
📄 License
MIT
