From 672f1e6657293860554be1f86167cf4f4403b0ff Mon Sep 17 00:00:00 2001 From: Dries Augustyns Date: Tue, 9 Dec 2025 10:15:33 +0100 Subject: [PATCH] feat: Add improved html editor using CodeMirror --- apps/web/package.json | 4 + .../components/EmailEditor/EmailEditor.tsx | 8 +- .../src/components/EmailEditor/HtmlEditor.tsx | 103 +++++++ apps/web/src/pages/campaigns/[id].tsx | 1 - apps/web/src/pages/campaigns/create.tsx | 6 +- yarn.lock | 285 +++++++++++++++++- 6 files changed, 395 insertions(+), 12 deletions(-) create mode 100644 apps/web/src/components/EmailEditor/HtmlEditor.tsx diff --git a/apps/web/package.json b/apps/web/package.json index 760c688..8d31720 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -11,6 +11,9 @@ "clean": "rimraf node_modules .next .turbo" }, "dependencies": { + "@codemirror/lang-html": "^6.4.11", + "@codemirror/theme-one-dark": "^6.1.3", + "@codemirror/view": "^6.39.0", "@plunk/db": "*", "@plunk/shared": "*", "@plunk/ui": "*", @@ -31,6 +34,7 @@ "@tiptap/starter-kit": "^3.11.0", "@tiptap/suggestion": "^3.11.0", "@types/dagre": "^0.7.53", + "@uiw/react-codemirror": "^4.25.3", "@xyflow/react": "^12.9.3", "dagre": "^0.8.5", "framer-motion": "^12.23.24", diff --git a/apps/web/src/components/EmailEditor/EmailEditor.tsx b/apps/web/src/components/EmailEditor/EmailEditor.tsx index 150bac1..f5b3de4 100644 --- a/apps/web/src/components/EmailEditor/EmailEditor.tsx +++ b/apps/web/src/components/EmailEditor/EmailEditor.tsx @@ -10,6 +10,7 @@ import {Variable} from './VariableExtension'; import {setAvailableVariables, VariableMention} from './VariableMention'; import {Toolbar} from './Toolbar'; import {ResizableImage} from './ResizableImage'; +import {HtmlEditor} from './HtmlEditor'; import {useContactFields, useContacts} from '../../lib/hooks/useContacts'; import {useConfig} from '../../lib/hooks/useConfig'; import {useEffect, useRef, useState} from 'react'; @@ -556,12 +557,11 @@ export function EmailEditor({value, onChange, placeholder, subject, from, replyT ) : ( <> -
-