A complete React email template editor with Material-UI theming, drag-and-drop functionality, and real-time preview.
- π¨ Complete Material-UI Integration - Purple-themed design system
- π§ Email Template Building - Drag-and-drop email components
- π§ Editable Template Names - Inline editing with auto-save
- π― Variable Management - Dynamic content with variable extraction
- π± Responsive Design - Works on desktop and mobile
- π SSR Compatible - Works with Next.js and other SSR frameworks
- β‘ Built with Vite - Fast development and optimized builds
npm install @devhiteshk/email-template-editorMake sure you have these peer dependencies installed:
npm install react react-dom @mui/material @emotion/react @emotion/styled @mui/icons-materialimport React from 'react';
import { EmailTemplateEditor } from '@devhiteshk/email-template-editor';
function App() {
const handleSave = (blockTemplate, htmlTemplate, variables, templateName) => {
console.log('Template saved:', {
blockTemplate,
htmlTemplate,
variables,
templateName
});
};
return (
<EmailTemplateEditor
templateName="My Newsletter"
onSave={handleSave}
/>
);
}import React from 'react';
import { ClientOnlyEmailTemplateEditor } from '@devhiteshk/email-template-editor';
export default function EmailBuilderPage() {
const handleSave = (blockTemplate, htmlTemplate, variables, templateName) => {
// Save to your backend
fetch('/api/templates', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ blockTemplate, htmlTemplate, variables, templateName })
});
};
return (
<ClientOnlyEmailTemplateEditor
templateName="Newsletter Template"
onSave={handleSave}
/>
);
}import React from 'react';
import { EmailTemplateEditor } from '@devhiteshk/email-template-editor';
const initialTemplate = {
// Your template configuration
};
function App() {
return (
<EmailTemplateEditor
template={initialTemplate}
templateName="Welcome Email"
onSave={(blockTemplate, htmlTemplate, variables, templateName) => {
// Handle save
}}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
template |
TEditorConfiguration |
undefined |
Initial template configuration |
templateName |
string |
"Untitled Template" |
Initial template name |
onSave |
function |
undefined |
Callback when template is saved |
onSave?: (
blockTemplate: TEditorConfiguration,
htmlTemplate: string,
variables: Record<string, string>,
templateName: string
) => voidblockTemplate: The block-based template configurationhtmlTemplate: Generated HTML stringvariables: Extracted variables from the templatetemplateName: Current template name
Main component for client-side applications.
SSR-safe wrapper that only renders on the client side. Use this for Next.js and other SSR frameworks.
The editor comes with a complete purple-themed Material-UI design system. All components are styled consistently and follow Material Design principles.
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT Β© [devhiteshk]
If you encounter any issues, please file them on the GitHub issues page.